タイトルのとおり、ECRリポジトリにCLIでプッシュする方法です。
「ブラウザ上のGUIでイメージ選択してアップロード」みたいなことは出来ないので、コマンド実行して作業する必要があります。最初はマネジメントコンソール上で簡単にできるものだと思っていました。。。
IAMユーザー・アクセスキーを用意する
ECRリポジトリにプッシュするため、リポジトリ更新権限を持つユーザーが必要です。
なければ以下の手順で作成します。
許可のオプション:ポリシーを直接アタッチ
許可ポリシー:AmazonElasticContainerRegistryPublicFullAccess
※更新権限があればよいので PowerUser でもOK
AWSに接続するための認証情報(アクセスキー・シークレットアクセスキー)を取得します。
ユースケース:その他
タグ:分かれば何でもOK
作成されたアクセスキー・シークレットアクセスキーをコピーして控えておく
※後述のECRリポジトリへのプッシュ設定時に使用します
Amazon CLI インストール
以下のページから CLI をダウンロードしてインストールします。
https://aws.amazon.com/jp/cli/
CLI を使って先ほど取得した認証情報を設定します。
$ aws configure --profile {任意のプロファイル名}
AWS Access Key ID [None]: {アクセスキー}
AWS Secret Access Key [None]: {シークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json
ECRリポジトリにプッシュ
マネジメントコンソール上でプッシュに必要なコマンドを表示・取得する。
先ほど設定した認証情報を使って AWS にログイン
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ********.dkr.ecr.ap-northeast-1.amazonaws.com
イメージのビルド・タグ付け
--no-cachでキャッシュを使用しない
※イメージ名:rails7-mysql で書いていますが、適宜置き換えてください。
$ docker build --no-cash -t rails7-mysql .
$ docker tag rails7-mysql:latest ********.dkr.ecr.ap-northeast-1.amazonaws.com/rails7-mysql:latest
ECR にプッシュ
$ docker push ********.dkr.ecr.ap-northeast-1.amazonaws.com/rails7-mysql:latest
※認証情報の有効期限(30日)が切れるとプッシュ時にエラーとなるので、再度上述のログインコマンドを実行する