AWS CLI:ECR列表图像,获取最新版本

时间:2017-04-10 19:24:37

标签: amazon-web-services amazon-ec2 aws-cli

使用AWS CLI和jq(如果需要),我正在尝试获取特定仓库中最新图像的标记

让我们调用回购foo,并说最新图片标记为bar。我使用什么查询来返回bar

我到目前为止

aws ecr list-images --repository-name foo

然后意识到list-images documentation没有提供日期作为可查询字段的引用。在终端中粘贴以上内容为我提供了仅包含标签和摘要的密钥对,没有日期。

还有办法获得“最新”图片吗?我可以假设它将永远是返回输出中的第一个或最后一个吗?

6 个答案:

答案 0 :(得分:19)

您可以改用describe-images

aws ecr describe-images --repository-name foo 

返回imagePushedAt,这是一个可用于过滤的时间戳属性。

我的帐户中没有可以测试的示例,但下面的内容应该可以正常工作

aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[*]'

如果您想要使用排序方法,可以查看this post

答案 1 :(得分:4)

要添加弗雷德里克的答案,如果你想要最新的,你可以使用[-1]:

aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]'

假设您在图片上使用单个标记...否则您可能需要使用imageTags[*]并再做一些工作来获取所需的标记。

答案 2 :(得分:1)

要获取最新的图像标签,请使用:-

aws ecr describe-images --repository-name foo --query 'imageDetails[*].imageTags[ * ]' --output text | sort -r | head -n 1

答案 3 :(得分:0)

无需对结果进行排序,您可以在image-id上指定imageTag = latest对其进行过滤,如下所示:

aws ecr describe-images --repository-name foo --image-ids imageTag=latest --output text

这将仅返回具有最新图像的结果,即标记为latest的结果

答案 4 :(得分:0)

列出最新的3张图片

aws ecr describe-images --repository-name gvh \
--query 'sort_by(imageDetails,& imagePushedAt)[*].imageTags[0]' --output yaml \
| tail -n 3 | awk -F'- ' '{print $2}'

跳过最新的3张图片

aws ecr describe-images --repository-name gvh \
--query 'sort_by(imageDetails,& imagePushedAt)[*].imageTags[0]' --output yaml \
| head -n -3 | awk -F'- ' '{print $2}'

数字3可以根据用户要求在head或tail命令中通用化

答案 5 :(得分:-1)

仅获得最新图像,而上述答案不需要特殊字符的小幅添加。

aws ecr describe-images --repository-name foo --query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]' --output text