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

Ale*_*lex 8 amazon-ec2 amazon-web-services aws-cli

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

让我们调用回购foo,并说最新的图像被标记bar.我用什么查询返回bar

我得到了

aws ecr list-images --repository-name foo
Run Code Online (Sandbox Code Playgroud)

然后意识到列表图像文档没有提供日期作为可查询字段的引用.在终端中粘贴以上内容为我提供了仅包含标签和摘要的密钥对,没有日期.

还有一些方法可以获得"最新"的图像吗?我可以假设它将永远是返回输出中的第一个或最后一个吗?

Fré*_*nri 22

你可以describe-images改用.

aws ecr describe-images --repository-name foo 
Run Code Online (Sandbox Code Playgroud)

返回imagePushedAt哪个是可用于过滤的时间戳属性.

我的帐户中没有用于测试的示例,但下面的内容应该可行

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

如果您想要使用排序方法的另一种风格,您可以查看此帖子

  • 这对我有用:`aws ecr describe-images --output json --repository-name $ DOCKER_IMAGE_NAME --query'sort_by(imageDetails,&imagePushedAt)[-1] .imageTags [0]'| jq。--raw-output`。没有`jq`的存储库显示2张图像。 (2认同)

Vin*_*wda 6

要仅获取最新图像,而不需要上述答案所需的特殊字符的少量添加。

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


Bre*_*een 5

要添加到弗雷德里克的答案中,如果您需要最新的信息,可以使用[-1]:

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

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

  • 如果您有很多标签,请添加“--no-paginate”。 (2认同)

Har*_*G V 5

列出推送到 ECR 的最新 X 镜像

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

列出推送到 ECR 的前 X 个图像

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

根据用户要求,数字“X”可以概括为头命令或尾命令