我有一个ECR存储库设置,它现在包含两个带有顺序标签1和2的图像。我打算从此时开始自动推送docker镜像,我的要求是当我下次推送图像时,它的标签应该是3,所以我必须以某种方式确定下一个数字应该是3,因为最新版本是2.我不想在本地保留这个版本。所以我需要来自ECR本身的这些信息。有什么想法吗?以下命令将给出存储库中所有图像的列表
aws ecr list-images
答案 0 :(得分:5)
感谢@Matt指出jq。安装jq后,以下命令将提供最新版本
aws ecr list-images --repository-name REPOSITORY_NAME | jq '.imageIds | map (.imageTag)|sort|.[]' | sort -r | head -1
答案 1 :(得分:1)
ECR ListImages
API端点将列出存储库中的所有图像shasums和任何关联的标记。您也可filter
向下TAGGED
。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)
})
。
它有一个Java SDK(但我不会用Java来处理,因此赢了很多帮助)。
Node.js Javascript非常简单,对返回的对象/数组/对象进行了一些lodash链处理。
npm init -y && npm install aws-sdk lodash bluebird --save
您可以使用
在当前目录中安装脚本的依赖项aws ecr list-images
如果要处理shell中的.notification-wrapper {
position: relative;
left: -10px;
font-size: 17px;
line-height: 1.47;
letter-spacing: 0.6px;
}
#notification-block {
height: 150px;
border-radius: 5px;
margin: 60px 10px 5px 10px;
background-color: #ffffff;
}
#notification-block h2 {
margin-top: 45px;
}
#notification-block img {
margin-top: 50px;
}
.notification-message {
white-space: normal !important;
}
.read-more,
.read-more a {
float: right;
font-weight: bold !important;
font-size: 16px !important;
color: black !important;
text-decoration: none !important;
}
输出,请尝试jq
。