0
0

More than 1 year has passed since last update.

AWS ECRのイメージタグ付けを簡単に行う方法

Posted at

はじめに

ECRのイメージタグ付けを、Lambdaで簡単に行う手順です。

ECRのイメージタグは、マネジメントコンソールから編集できず、不便な場合があります。
CLIで設定出来るのですが、お手軽に設定できるようにしました。

やりたいこと

ECRのリポジトリ

image.png
このようにリリースしてみたが、前のバージョンに戻したい、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 }

変更手順

タグをつけたいイメージの、リポジトリ名、ダイジェストを控えます。

ECRのリポジトリでダイジェストをコピーします。
image.png

Lambda関数の更新

Lambda関数を開いて、5行目、6行目、8行目を書き換えます。
image.png

Lambda関数のテスト実行

関数を保存(Deploy)、テスト実行をします。

ECR リポジトリ

ECRリポジトリのイメージタグが書き換わりました!
image.png

おわりに

誰でも簡単にタグを付け替えられるようにしました。Lambda便利です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0