I'm currently running into the well-known startup failure where Spring Cloud AWS is attempting to create an AmazonS3 bean but doesn't have a region defined. In a particular profile, I do not want Spring Cloud AWS to activate anything at all. I have successfully suppressed SNS and SQS with cloud.aws.{sns,sqs}.enabled=false, but I can't find where the AmazonWebserviceClientFactoryBean<AmazonS3> is injected into the context; debugging the constructor shows it's being lazily created from a bean definition.
What code in Spring Cloud AWS auto-configures the bean for the AmazonS3 client?
The
ContextResourceLoaderAutoConfigurationclass indirectly importsContextResourceLoaderConfiguration.Registrar, which has a hard-coded bean registration for anAmazonS3Clientburied inside it. Neither the registrar nor the auto-configuration class supports the usual well-behaved property conditions to disable S3 client creation (e.g.,cloud.aws.{s3,loader}.enabled=false).In order to suppress creation of the S3 client (which is unconditional), the
ContextResourceLoaderAutoConfigurationclass must be listed in theexcludeparameter of the@EnableAutoConfigurationor@SpringBootApplicationannotation.