私はECRリポジトリ設定を持っています。これには順次タグ1と2の2つの画像が含まれています。この時点からドッカー画像を自動的にプッシュする予定です。次に、そのタグは3でなければならないので、最新のバージョンは2であるので、次の数字は3であるべきであることを何とか識別しなければならない。私はこのバージョンをローカルに保存したくない。だから私はECR自体からこの情報が必要です。何かご意見は?次のコマンドは、リポジトリAWS ECR画像リスト
aws ecr list-images
私はECRリポジトリ設定を持っています。これには順次タグ1と2の2つの画像が含まれています。この時点からドッカー画像を自動的にプッシュする予定です。次に、そのタグは3でなければならないので、最新のバージョンは2であるので、次の数字は3であるべきであることを何とか識別しなければならない。私はこのバージョンをローカルに保存したくない。だから私はECR自体からこの情報が必要です。何かご意見は?次のコマンドは、リポジトリAWS ECR画像リスト
aws ecr list-images
jqについて指摘してくれてありがとう@Matt。 jqをインストールした後、次のコマンドを実行すると最新のバージョンが表示されます
aws ecr list-images --repository-name REPOSITORY_NAME | jq '.imageIds | map (.imageTag)|sort|.[]' | sort -r | head -1
ECR ListImages
APIエンドポイントは、リポジトリ内にあるすべての画像shasumsと関連するタグの一覧が表示されます内のすべての画像のリストが表示されます。 TAGGED
でも同様にfilter
にすることができます。
それには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)
})
あなたはシェルでaws ecr list-images
出力を処理したい場合はjq
を試してみてください
npm init -y && npm install aws-sdk lodash bluebird --save
と、現在のディレクトリにスクリプトの依存関係をインストールすることができます。
jqについて指摘してくれてありがとう@Matt –