awsのスイッチロール先のecrにpushする際に詰まったので備忘録として記録します。
ECRレポジトリを作成
まずecrにレポジトリを作成する。
次にawsのセキュリティ認証でアクセスキーを作成する
この時、アクセスキーとシークレットアクセスキーをコピーしてcsvをダウンロードする。
ローカルのcredentialとconfig
次に vi ~/.aws/credentials
でアクセスキーとシークレットアクセスキーを記入
例
[hoge-deploy]
aws_access_key_id = ........
aws_secret_access_key = ........
次に vi ~/.aws/config
でprofileを記入
例
[profile hoge-deploy]
region = ap-northeast-1
output = json
ECRにpush
そのあとはログインしてpushする。
アクセスキーが複数ある場合は、ログインの際に—profile [profile名]をつけるのを忘れずに。
つけなかったらdefaultが優先される
例
$aws ecr get-login-password --region ap-northeast-1 --profile hoge-deploy | docker login --username AWS --password-stdin xxxx.dkr.ecr.xxxx.amazonaws.com
$docker tag hoge:latest xxxx.dkr.ecr.xxxx.amazonaws.com/hoge:latest
$docker push xxxx.dkr.ecr.xxxx.amazonaws.com/hoge:latest
ec2がecrからpullしたい時には、ec2にロールを付与しないといけない。
今回はpullのみ必要だったので AmazonEC2ContainerRegistryReadOnly
を付与しました。
EC2のコンテナ → アクション → セキュリティ → IAMロールを変更 → AmazonEC2ContainerRegistryReadOnly を選択して、変更をクリック