我有一個ECR存儲庫設置,它現在包含兩個帶有順序標籤1和2的圖像。我計劃從這個時候自動推入Docker圖像,我的要求是當我下次推圖像時,它的標籤應該是3,所以我必須以某種方式確定下一個數字應該是3,因爲最新版本是2.我不想在本地保留這個版本。所以我需要ECR本身的這些信息。有什麼想法嗎?下面的命令將給予庫AWS ECR圖像列表
aws ecr list-images
我有一個ECR存儲庫設置,它現在包含兩個帶有順序標籤1和2的圖像。我計劃從這個時候自動推入Docker圖像,我的要求是當我下次推圖像時,它的標籤應該是3,所以我必須以某種方式確定下一個數字應該是3,因爲最新版本是2.我不想在本地保留這個版本。所以我需要ECR本身的這些信息。有什麼想法嗎?下面的命令將給予庫AWS 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端點將列出所有的圖像shasums和任何相關的標記,是在一個庫中的所有圖像的列表。您也可以將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
安裝腳本的依賴嘗試jq
如果你要處理的外殼aws ecr list-images
輸出。
感謝@Matt對於指出jq –