使用AWS CLI和jq(如果需要),我正在尝试获取特定仓库中最新图像的标记。
让我们调用回购foo
,并说最新图片标记为bar
。我使用什么查询来返回bar
?
我到目前为止
aws ecr list-images --repository-name foo
然后意识到list-images documentation没有提供日期作为可查询字段的引用。在终端中粘贴以上内容为我提供了仅包含标签和摘要的密钥对,没有日期。
还有办法获得“最新”图片吗?我可以假设它将永远是返回输出中的第一个或最后一个吗?
答案 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