Avoid timeout when attemting to connect to AWS

This commit is contained in:
David Turanski
2020-10-11 11:30:04 -04:00
parent a6ed4f3132
commit 6645b390e8
4 changed files with 15 additions and 1 deletions

View File

@@ -63,6 +63,7 @@ import static org.mockito.Mockito.mock;
"cloud.aws.region.static=" + AwsS3SourceTests.AWS_REGION,
"s3.supplier.remoteDir=" + AwsS3SourceTests.S3_BUCKET,
"file.consumer.mode=ref",
"s3.common.endpointUrl=foo",
"s3.supplier.filenameRegex=.*\\\\.test$" })
@DirtiesContext
public class AwsS3SourceTests {

View File

@@ -18,28 +18,39 @@ package org.springframework.cloud.fn.common.aws.s3;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration;
import org.springframework.cloud.aws.autoconfigure.context.ContextResourceLoaderAutoConfiguration;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.env.StandardEnvironment;
import org.springframework.util.StringUtils;
/**
* @author Timo Salm
* @author David Turanski
*/
@Order
public class AutoConfigurationExclusionEnvironmentPostProcessor implements EnvironmentPostProcessor {
static final String SPRING_AUTOCONFIGURE_EXCLUDE_PROPERTY = "spring.autoconfigure.exclude";
static final String S_3_COMMON_ENDPOINT_URL = "s3.common.endpoint-url";
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
final PropertySource<?> propertySource = environment.getPropertySources()
.get(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME);
if (propertySource instanceof MapPropertySource) {
String excludedAutoConfiguration = ContextResourceLoaderAutoConfiguration.class.getCanonicalName();
//If an endpoint url is set, avoid the timeout attempting to connect to AWS to retrieve instance data.
if (StringUtils.hasText(environment.getProperty(S_3_COMMON_ENDPOINT_URL))) {
excludedAutoConfiguration = excludedAutoConfiguration
.concat("," + ContextInstanceDataAutoConfiguration.class.getCanonicalName());
}
((MapPropertySource) propertySource).getSource().put(SPRING_AUTOCONFIGURE_EXCLUDE_PROPERTY,
ContextResourceLoaderAutoConfiguration.class.getCanonicalName());
excludedAutoConfiguration);
}
}
}

View File

@@ -55,6 +55,7 @@ import static org.mockito.Mockito.spy;
"cloud.aws.credentials.accessKey=" + AbstractAwsS3ConsumerMockTests.AWS_ACCESS_KEY,
"cloud.aws.credentials.secretKey=" + AbstractAwsS3ConsumerMockTests.AWS_SECRET_KEY,
"cloud.aws.region.static=" + AbstractAwsS3ConsumerMockTests.AWS_REGION,
"s3.common.endpointUrl=foo",
"s3.consumer.bucket=" + AbstractAwsS3ConsumerMockTests.S3_BUCKET })
public abstract class AbstractAwsS3ConsumerMockTests {

View File

@@ -58,6 +58,7 @@ import static org.mockito.Mockito.mock;
"cloud.aws.credentials.accessKey=" + AbstractAwsS3SupplierMockTests.AWS_ACCESS_KEY,
"cloud.aws.credentials.secretKey=" + AbstractAwsS3SupplierMockTests.AWS_SECRET_KEY,
"cloud.aws.region.static=" + AbstractAwsS3SupplierMockTests.AWS_REGION,
"s3.common.endpointUrl=foo",
"s3.supplier.remoteDir=" + AbstractAwsS3SupplierMockTests.S3_BUCKET})
@DirtiesContext
@SpringIntegrationTest(noAutoStartup = "*")