AWS ECR图像列表

我有一个ECR存储库设置,现在包含两个图像,顺序标签1和2.我打算从这个时候自动推动docker图像,我的要求是当我下一次推图像,它的标签应该是3,所以我必须以某种方式确定下一个数字应为3,因为最新版本是2.我不想保留本地版本。 所以我需要ECR本身的信息。 有什么想法吗? 以下命令将给出存储库中所有图像的列表

aws ecr list-images 

感谢@Matt指出jq。 安装jq后,下面的命令会给出最新版本

 aws ecr list-images --repository-name REPOSITORY_NAME | jq '.imageIds | map (.imageTag)|sort|.[]' | sort -r | head -1 

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