はじめに
ECRのイメージタグ付けを、Lambdaで簡単に行う手順です。
ECRのイメージタグは、マネジメントコンソールから編集できず、不便な場合があります。
CLIで設定出来るのですが、お手軽に設定できるようにしました。
やりたいこと
ECRのリポジトリ
このようにリリースしてみたが、前のバージョンに戻したい、releaseタグを前のバージョンに付け替えたいときなどに、本ツールが使えます。
これは一例で、後からタグをつけたい場合や、タグを整理したい場合などにも使えます。
準備
Lambda関数を準備します。詳細は割愛します。Lambdaのスペックは最弱でOKです。
IAMポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ecr:BatchGetImage",
"ecr:PutImage"
],
"Resource": "arn:aws:ecr:*:<AWSアカウント>:repository/*"
}
]
}
Lambda関数
import json
import boto3
# タグを付与するリポジトリ名とイメージのダイジェストを設定する
repo_name='xxxxxxxxx'
image_digest='sha256:xxxxxx'
# 付与するタグ
new_tag='release'
client = boto3.client('ecr')
def lambda_handler(event, context):
response = client.batch_get_image(
repositoryName=repo_name,
imageIds=[
{
'imageDigest': image_digest,
},
],
)
# print(response)
if 'images' not in response or len(response.get('images')) < 1:
return {'statusCode': 400 }
response = client.put_image(
repositoryName=repo_name,
imageTag=new_tag,
imageManifest=response.get('images')[0].get('imageManifest')
)
print(response)
return {'statusCode': 200 }
変更手順
タグをつけたいイメージの、リポジトリ名、ダイジェストを控えます。
Lambda関数の更新
Lambda関数を開いて、5行目、6行目、8行目を書き換えます。
Lambda関数のテスト実行
関数を保存(Deploy)、テスト実行をします。
ECR リポジトリ
おわりに
誰でも簡単にタグを付け替えられるようにしました。Lambda便利です!