【问题标题】:AWS ECR image listAWS ECR 映像列表
【发布时间】:2017-04-14 10:35:17
【问题描述】:
我有一个 ECR 存储库设置,它现在包含两个带有顺序标签 1 和 2 的图像。我计划从这次自动推送 docker 图像,我的要求是下次我推送图像时,它的标签应该是3,所以我必须以某种方式确定下一个数字应该是 3,因为最新版本是 2。我不想在本地保留这个版本。所以我需要来自 ECR 本身的这些信息。有什么想法吗?以下命令将列出存储库中的所有图像
aws ecr list-images
【问题讨论】:
标签:
amazon-web-services
docker
amazon-ec2
【解决方案1】:
感谢@Matt 指出 jq。安装 jq 后,以下命令将给出最新版本
aws ecr list-images --repository-name REPOSITORY_NAME | jq '.imageIds | map (.imageTag)|sort|.[]' | sort -r | head -1
【解决方案2】:
ECR ListImages API 端点将列出存储库中的所有图像 shasum 和任何相关标签。您也可以将filter 降至TAGGED。
有一个Java SDK (但我不处理Java,所以不会有太大帮助)。
Node.js Javascript 非常简单,对返回的对象/数组/对象进行了一些lodash 链处理。
const _ = require('lodash')
const Promise = require('bluebird')
const AWS = require('aws-sdk')
let config = {
region: 'us-west-1',
repo = 'myrepo'
}
const ecr = new AWS.ECR({region: config.region})
Promise.promisifyAll(ecr)
ecr.listImagesAsync({ repositoryName: config.repo, filter: { tagStatus: 'TAGGED'} })
.then( data => {
let img = _(data.imageIds).sortBy('imageTag').last()
console.log(img.imageTag)
})
您可以使用
在当前目录中安装脚本的依赖项
npm init -y && npm install aws-sdk lodash bluebird --save
如果您想在 shell 中处理 aws ecr list-images 输出,请尝试 jq。