Browse Source

Merge pull request #47482 from vpavic

* pr/47482:
  Add AWS ECS to cloud platforms

Closes gh-47482
pull/47637/head
Stéphane Nicoll 2 months ago
parent
commit
a043867ae1
  1. 14
      core/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java
  2. 20
      core/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java

14
core/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java

@ -164,6 +164,20 @@ public enum CloudPlatform { @@ -164,6 +164,20 @@ public enum CloudPlatform {
return this.azureEnvVariables.stream().allMatch(environment::containsProperty);
}
},
/**
* Amazon Web Services (AWS) Elastic Container Service (ECS) platform.
* @since 4.0.0
*/
AWS_ECS {
@Override
public boolean isDetected(Environment environment) {
String awsExecutionEnv = environment.getProperty("AWS_EXECUTION_ENV");
return (awsExecutionEnv != null) && awsExecutionEnv.startsWith("AWS_ECS");
}
};
private static final String PROPERTY_NAME = "spring.main.cloud-platform";

20
core/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java

@ -22,6 +22,8 @@ import java.util.Map; @@ -22,6 +22,8 @@ import java.util.Map;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.boot.context.properties.source.MockConfigurationPropertySource;
@ -205,6 +207,24 @@ class CloudPlatformTests { @@ -205,6 +207,24 @@ class CloudPlatformTests {
assertThat(platform).isNull();
}
@ParameterizedTest
@ValueSource(strings = { "AWS_ECS_FARGATE", "AWS_ECS_EC2" })
void getActiveWhenHasAwsExecutionEnvEcsShouldReturnAwsEcs(String awsExecutionEnv) {
Map<String, Object> envVars = Map.of("AWS_EXECUTION_ENV", awsExecutionEnv);
Environment environment = getEnvironmentWithEnvVariables(envVars);
CloudPlatform platform = CloudPlatform.getActive(environment);
assertThat(platform).isNotNull().isEqualTo(CloudPlatform.AWS_ECS);
assertThat(platform.isActive(environment)).isTrue();
}
@Test
void getActiveWhenHasAwsExecutionEnvLambdaShouldNotReturnAwsEcs() {
Map<String, Object> envVars = Map.of("AWS_EXECUTION_ENV", "AWS_Lambda_java8");
Environment environment = getEnvironmentWithEnvVariables(envVars);
CloudPlatform platform = CloudPlatform.getActive(environment);
assertThat(platform).isNull();
}
@Test
void getActiveWhenHasEnforcedCloudPlatform() {
Environment environment = getEnvironmentWithEnvVariables(

Loading…
Cancel
Save