Amazon ECR はとても便利ですが、ECS 以外でのデプロイとなると
適切なインスタンスプロフィールが与えられた EC2 であっても
例えば CLI の aws ecr get-login
で得られる値をもって
docker login
しないと接続ができませんでした。
最近素晴らしいツールが公開されたので、改めて Qiita に記事を残します。
Amazon ECR credential helper
公式のツールとして
GitHub にソースコードとインストール方法、使い方が公開されています。
https://github.com/awslabs/amazon-ecr-credential-helper
Docker v1.11 で実装された credential-helper のインターフェースを実装した
プラグインという形になっており、利用方法もこれに準じています。
インストール
- 対応クライアントは Docker v1.11 以降
- git と make が必要
- Go1.5 以降、または Docker そのものを利用してビルド
- ~/.docker/config.json に
credsStore
を指定
使い方
以下のどれかを満たしておく。
- EC2 上なら、適切な権限のインスタンスプロフィールを設定
- 環境変数
AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
を設定 - 設定ファイル
~/.aws/credentials
を用意
その上でツールがインストールされていれば、リポジトリが
ECR かどうかを意識する必要なく、docker login もせずに
docker pull や push が行えます。
Dockerized ECR credential helper
上述のツールはとても素晴らしいのですが、CoreOS や RancherOS などで
できれば git も make も使いたくない場合でも Docker さえあれば
このツールが動作するように、ツールそのものを Dockerize しました。
インストール
docker pull pottava/amazon-ecr-credential-helper
- PATH の通った場所に
docker-credential-ecr-login
シェルを書く - ~/.docker/config.json に
credsStore
を指定
使い方
ツールと同じです。
その他
- Dockerfile を真似してもらえればローカルでもビルドできます
- 本家のリポジトリにもそのうち PR 送ろうかとは思います
- Mesos 環境下ではうまく動作せず。これ ならもちろん ECR もいけるけど・・