Add AWS ECS to cloud platforms

This commit adds support for detecting AWS ECS to `CloudPlatform`. The
detection is based on presence of `AWS_EXECUTION_ENV` environment
variable with value starting with `AWS_ECS`.

See gh-47482

Signed-off-by: Vedran Pavic <vedran@vedranpavic.com>
This commit is contained in:
Vedran Pavic
2025-10-15 08:15:29 +02:00
committed by Stéphane Nicoll
parent 41b522dbd2
commit c6397305bb
2 changed files with 34 additions and 0 deletions
@@ -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";
@@ -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 {
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(