IT男のアジャイルキャリア奮闘記

IT業界でキャリアを築きたい貴方にお役立ち情報を発信していきます

MENU

ECRコンテナイメージのAWSアカウント間移行

今週はAWSクラウドリソースのアカウント間移行をテーマに特定のサービスについて移行方法のTipsを発信していきます。

 

目次

 

背景

f:id:hungrycrazyman:20210621075537p:plain

リソースのアカウント間移行の背景ですが、元々2つのAWSアカウントで開発環境を運用しており、諸事情により1つのアカウントを削除することになったので削除アカウントで作成したリソースを一部もう一つのアカウントへ移行することになりました。

 

移行対象サービス

f:id:hungrycrazyman:20210623074108p:plain

AWSの完全マネージド型のコンテナレジストリサービスであるAmazon Elastic Container Registryです。

 

移行手順

1.移行元のECRレジストリにログインし、ローカルにDockerイメージをプルする。

まず以下ユーザーガイドP15を参照し、以下のようにaws cliのコマンドを実行してログイン認証します。

コマンド例

aws ecr get-login-password --region <リージョン名> | docker login --username AWS --password-stdin <アカウントID>.dkr.ecr.<リージョン名>.amazonaws.com

ユーザーガイドは以下。

https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/ecr-ug.pdf

f:id:hungrycrazyman:20210623075457p:plain

 

次に下記のようにローカル環境にてDockerが起動されていることを確認し、 

f:id:hungrycrazyman:20210623080041p:plain

コマンドラインツールにてイメージプルのコマンドを実行します。

コマンド例

docker pull <アカウントID>.dkr.ecr.<リージョン名>.amazonaws.com/<リポジトリ名>:<バージョン>

出力結果例

f:id:hungrycrazyman:20210623080432p:plain

 

2.移行先アカウントのECRレジストリに移行元アカウントのリポジトリと同名のリポジトリを作成します。

f:id:hungrycrazyman:20210622080101p:plain

リポジトリ一覧右上にある「リポジトリを作成」から簡単にリポジトリを作成することができます。

 

作成結果

f:id:hungrycrazyman:20210623080923p:plain

 

3.移行先のリポジトリへローカルイメージをプッシュする

ローカルにあるプッシュ対象のイメージIDを確認する。

コマンドラインでdocker imagesを実行

f:id:hungrycrazyman:20210623081608p:plain


RIPOSITORYとある列がイメージ名を指し、

<アカウントID>.dkr.ecr.<リージョン名>.amazonaws.com/<リポジトリ名>という構成になっており、AWSではリポジトリのパス(リポジトリの住所)を意味している。

 

今回移行先ように既存イメージの住所を変更してあげる(イメージ名を変更する)ことで移行先アカウントのECRリポジトリへのプッシュを可能とすることが重要です。

 

なので移行したいイメージに対し、docker tagをコマンドして改名してあげます。

※実際はコピーしたイメージ対象に対し、新しく名前をつけます。

コマンド例

docker tag <イメージID> <移行先アカウントID>.dkr.ecr.<リージョン名>.amazonaws.com/<リポジトリ名>(変更後のイメージ名)

 

実行例

f:id:hungrycrazyman:20210623082624p:plain


後はイメージ名を変更したイメージに対し、移行先のリポジトリへプッシュするだけです。

コマンド例

docker push <移行先アカウントID>.dkr.ecr.<リージョン名>.amazonaws.com/<リポジトリ名>:<バージョン>(改名したイメージ名)

 

実行結果

f:id:hungrycrazyman:20210623082958p:plain

 

以上でアカウント間のECRリポジトリ移行は完了です。お疲れ様でした。
 

ではまた、会いましょう。