2016-11-30 40 views
0

我有一個ECR存儲庫設置,它現在包含兩個帶有順序標籤1和2的圖像。我計劃從這個時候自動推入Docker圖像,我的要求是當我下次推圖像時,它的標籤應該是3,所以我必須以某種方式確定下一個數字應該是3,因爲最新版本是2.我不想在本地保留這個版本。所以我需要ECR本身的這些信息。有什麼想法嗎?下面的命令將給予庫AWS ECR圖像列表

aws ecr list-images 

回答

2

感謝@Matt指出關於jq。安裝jq後下面的命令會給最新版本

aws ecr list-images --repository-name REPOSITORY_NAME | jq '.imageIds | map (.imageTag)|sort|.[]' | sort -r | head -1 
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輸出。

+0

感謝@Matt對於指出jq –