1

我有一个 Java 服务在 AWS EC2 和 Fargate 上运行任务。有没有办法通过使用 AWS 库或其他方式以编程方式确定我们是在 EC2 还是 Fargate 中运行?

4

3 回答 3

2

环境变量是 AWS_EXECUTION_ENV。对于 EC2,其值为 AWS_ECS_EC2,对于 Fargate,其值为 AWS_ECS_FARGATE。这适用于 fargate 平台 >= 1.3.0

于 2019-05-08T22:00:59.197 回答
0

看起来您可以使用AWSECSClientdescribeTasks中的方法来完成。启动类型将是 EC2 或 Fargate。

您可以将它与元数据端点结合使用来内省您自己的 taskArn,然后将 ARN 与来自的响应进行匹配describeTasks以确定启动类型。

于 2018-08-24T15:04:24.247 回答
0

您始终可以测试哪个元数据端点有效。ECS 任务元数据端点与 ec2 端点。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint.html

对比

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/util/EC2MetadataUtils.html

于 2018-10-03T19:00:59.950 回答