HighLab

awsのECRとDockerを連携する方法

  • 公開日:
  • 更新日:
  • 文字数:1835文字

awsがインストールされていることが前提。
-------
awsにプライベートリポジトリを作成
https://zenn.dev/hibriiiiidge/books/49ee4063b10cec1df1a2/viewer/710b27
-------

(1)-----
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 526983118746.dkr.ecr.us-east-1.amazonaws.com
-----

エラーが表示されます。
Unable to locate credentials. You can configure credentials by running "aws configure". Error: Cannot perform an interactive login from a non TTY device

aws configureの登録がされてないからです。
% aws configure listで(not set)登録されてないことがわかります。
configureの設定をしなければいけない 設定するもの

AWS Access Key AWS
Secret Access Key
Default region name
Default output format

-----------
AWS Access Key IDとAWS Secret Access Keyの作成方法

https://console.aws.amazon.com/iamv2/home#/home

Default region nameはどこでも構いません。
東京の場合 ap-northeast-1
Default output formatはjsonで構いません。
json

参考
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-region
-----------

登録するコマンド % aws configure 登録後(1)を実行します。

---
n error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::526983118746:user/meigen_user is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action

上記エラーが出た場合
アクセス権限がうまくいってないです。
AWSAppRunnerServicePolicyForECRAccess
へのアクセス許可を追加してください。

AmazonEC2ContainerRegistryFullAccess
AmazonEC2ContainerServiceFullAccess
---

Login Succeededで完了

 

Dockerイメージの構築

docker build -t リポジトリ名 .

docker tag リポジトリ名 :latest 000000.dkr.ecr.us-east-1.amazonaws.com/name_ecr:latest

docker push 000000.dkr.ecr.us-east-1.amazonaws.com/name_ecr:latest

docker push してもeofでエラーも何も出ずにpublishできない場合
「AmazonEC2ContainerServiceFullAccess」の権限がないためです。

 

参考
https://zenn.dev/hibriiiiidge/books/49ee4063b10cec1df1a2/viewer/710b27