我有一个Java服务,可在AWS EC2和Fargate上运行任务。有没有一种方法可以通过使用AWS库或其他方式来确定我们是在EC2还是Fargate中以编程方式运行?
答案 0 :(得分:0)
您似乎可以使用AWSECSClient类中的describeTasks
方法来执行此操作。启动类型将为EC2或Fargate。
您可以将其与metadata endpoint结合使用来对自己的taskArn进行自省,然后将ARN与describeTasks
的响应进行匹配,以确定启动类型。
答案 1 :(得分:0)
您始终可以测试哪个元数据终结点有效。 ECS任务元数据端点与ec2端点。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint.html
vs
https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/util/EC2MetadataUtils.html
答案 2 :(得分:0)
环境变量是AWS_EXECUTION_ENV。对于EC2,其值为AWS_ECS_EC2;对于Fargate,其值为AWS_ECS_FARGATE。 Fargate平台> = 1.3.0
可用