如何使用 CLI/SDK 获取 Fargate 任务的 docker 镜像 ID?

Posted

技术标签:

【中文标题】如何使用 CLI/SDK 获取 Fargate 任务的 docker 镜像 ID?【英文标题】:How do I get the docker image ID of a Fargate task using the CLI/SDK? 【发布时间】:2019-07-08 21:17:18 【问题描述】:

我想确保任务正在运行最新的图像。

在容器中,我可以通过调用http://169.254.170.2/v2/metadata 来获取 docker 镜像 ID(例如 183f9552f0a5),但是我正在寻找一种在我的笔记本电脑上获取它的方法。

这可以通过 AWS CLI 或 SDK 实现吗?

【问题讨论】:

【参考方案1】:

您首先需要使用 describe_tasks 获取任务的任务定义 ARN。如果您已经知道 ARN,则可以跳过此步骤。

aws ecs describe-tasks --tasks TASK_ARN

然后就可以使用describe_task_definition获取图片名称了。

aws ecs describe-task-definition --task-definition TASKDEF_ARN

【讨论】:

aws ecs describe-task-definition --task-definition TASKDEF_ARN | jq .taskDefinition.containerDefinitions[].image 显示了像 XXXXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/sinatra2:latest 这样的图像 URL,但我正在寻找的是像 183f9552f0a5 这样的 docker 图像 ID。有可能获得吗? 是的,我现在明白了,这就是您所要求的。如果图像在 ECR 中,您可以使用 describe-images 来检索给定存储库名称和标签的图像 ID。其他 repos 可以提供类似的 API 来检索图像 ID,因为我相信它只是图像本身的 SHA 摘要。 我正在使用 ECR,但考虑这种情况: 1. 以latest 推送映像 2. 在 ECS 中部署映像 3. 重建映像并再次以 latest 推送 4. 获取映像来自 ECS/ECR 的 URL 和 SHA 摘要 在这种情况下,CLI 将报告新的摘要。我需要 ECS 正在运行的映像的确切摘要。 我觉得你运气不好。我会向 AWS 提出功能请求。 我正试图弄清楚同样的事情。

以上是关于如何使用 CLI/SDK 获取 Fargate 任务的 docker 镜像 ID?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Fargate 任务抛出 Asm 获取用户名:AuthorizationData 格式错误,为空字段

如何从远程执行的 Fargate 任务访问 S3 对象?

如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令

如何诊断 ECS Fargate 任务启动失败?

如何将 AWS-Fargate 用作 Python 脚本

连接fargate的Cloudformation参数