我们如何确定我们是 运行 EC2 还是 Fargate?
How can we determine if we are running in EC2 or Fargate?
我在 AWS EC2 和 Fargate 上都有 Java 服务 运行 任务。有没有办法通过使用 AWS 库或其他方式以编程方式确定我们是 运行 在 EC2 还是 Fargate 中?
看起来你可以使用 AWSECSClient class 中的 describeTasks
方法来完成。启动类型将为 EC2 或 Fargate。
您可以将其与 metadata endpoint 结合使用来检查您自己的 taskArn,然后将 ARN 与来自 describeTasks
的响应进行匹配以确定启动类型。
您始终可以测试哪个元数据端点有效。 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
环境变量为AWS_EXECUTION_ENV。 EC2 的值为 AWS_ECS_EC2,Fargate 的值为 AWS_ECS_FARGATE。这适用于 Fargate 平台 >= 1.3.0
我在 AWS EC2 和 Fargate 上都有 Java 服务 运行 任务。有没有办法通过使用 AWS 库或其他方式以编程方式确定我们是 运行 在 EC2 还是 Fargate 中?
看起来你可以使用 AWSECSClient class 中的 describeTasks
方法来完成。启动类型将为 EC2 或 Fargate。
您可以将其与 metadata endpoint 结合使用来检查您自己的 taskArn,然后将 ARN 与来自 describeTasks
的响应进行匹配以确定启动类型。
您始终可以测试哪个元数据端点有效。 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
环境变量为AWS_EXECUTION_ENV。 EC2 的值为 AWS_ECS_EC2,Fargate 的值为 AWS_ECS_FARGATE。这适用于 Fargate 平台 >= 1.3.0