Skip to content

Commit a043867

Browse files
committed
Merge pull request #47482 from vpavic
* pr/47482: Add AWS ECS to cloud platforms Closes gh-47482
2 parents 41b522d + c639730 commit a043867

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,20 @@ public boolean isDetected(Environment environment) {
164164
return this.azureEnvVariables.stream().allMatch(environment::containsProperty);
165165
}
166166

167+
},
168+
169+
/**
170+
* Amazon Web Services (AWS) Elastic Container Service (ECS) platform.
171+
* @since 4.0.0
172+
*/
173+
AWS_ECS {
174+
175+
@Override
176+
public boolean isDetected(Environment environment) {
177+
String awsExecutionEnv = environment.getProperty("AWS_EXECUTION_ENV");
178+
return (awsExecutionEnv != null) && awsExecutionEnv.startsWith("AWS_ECS");
179+
}
180+
167181
};
168182

169183
private static final String PROPERTY_NAME = "spring.main.cloud-platform";

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.stream.Stream;
2323

2424
import org.junit.jupiter.api.Test;
25+
import org.junit.jupiter.params.ParameterizedTest;
26+
import org.junit.jupiter.params.provider.ValueSource;
2527

2628
import org.springframework.boot.context.properties.bind.Binder;
2729
import org.springframework.boot.context.properties.source.MockConfigurationPropertySource;
@@ -205,6 +207,24 @@ void getActiveWhenHasMissingWebsiteSkuShouldNotReturnAzureAppService() {
205207
assertThat(platform).isNull();
206208
}
207209

210+
@ParameterizedTest
211+
@ValueSource(strings = { "AWS_ECS_FARGATE", "AWS_ECS_EC2" })
212+
void getActiveWhenHasAwsExecutionEnvEcsShouldReturnAwsEcs(String awsExecutionEnv) {
213+
Map<String, Object> envVars = Map.of("AWS_EXECUTION_ENV", awsExecutionEnv);
214+
Environment environment = getEnvironmentWithEnvVariables(envVars);
215+
CloudPlatform platform = CloudPlatform.getActive(environment);
216+
assertThat(platform).isNotNull().isEqualTo(CloudPlatform.AWS_ECS);
217+
assertThat(platform.isActive(environment)).isTrue();
218+
}
219+
220+
@Test
221+
void getActiveWhenHasAwsExecutionEnvLambdaShouldNotReturnAwsEcs() {
222+
Map<String, Object> envVars = Map.of("AWS_EXECUTION_ENV", "AWS_Lambda_java8");
223+
Environment environment = getEnvironmentWithEnvVariables(envVars);
224+
CloudPlatform platform = CloudPlatform.getActive(environment);
225+
assertThat(platform).isNull();
226+
}
227+
208228
@Test
209229
void getActiveWhenHasEnforcedCloudPlatform() {
210230
Environment environment = getEnvironmentWithEnvVariables(

0 commit comments

Comments
 (0)