ECRの untagged イメージにタグ名をつける

これはなに?

AWS CLIでECRの untagged イメージにタグ名をつける手順メモ。
公式の手順だとイメージ変更にタグ名が必要だが、そもそもタグが付いてないイメージなので困って調べた。
イメージにもう一度タグを付ける - Amazon ECR

f:id:ykoomaru:20200709205916p:plain

目次

実行環境

  • AmazonLinux2

作業

1. タグ名を変更したいイメージの ”imageDigest" 値を取得する。

aws ecr describe-images --profile <your_profile_name> --repository-name <your_repo_name>

f:id:ykoomaru:20200709212712p:plain

2. マニフェストを作成する。

ここが肝で、--image-ids に imageDigest を指定します。
sha256:xxxx の部分は、1で取得した値を入れます。

MANIFEST=$(aws ecr batch-get-image --profile <your_profile_name> --repository-name <your_repo_name> --image-ids "imageDigest=sha256:xxxx" --query 'images[].imageManifest' --output text)

3. タグ名を変更する。

<tag_name> に任意のタグ名を入れてください。

aws ecr put-image --profile <your_profile_name> --repository-name <your_repo_name> --image-tag <tag_name> --image-manifest "$MANIFEST"

4. 実行結果を確認する。

aws ecr describe-images --profile <your_profile_name> --repository-name <your_repo_name>

untaggedの時にはなかったimageTagsという項目が表示されていれば設定完了です。
f:id:ykoomaru:20200709215325p:plain

最後に

WindowsだとマニフェストのJSONをうまく認識させられずInvalidになりました、、。機会があれば調べよう。