LoginSignup
0
1

More than 3 years have passed since last update.

docker-compose + AWS ECR(azon Elastic Container Registry) AWS CLIの複数アカウントの管理について

Posted at

AWS CLIのアカウント管理

  • AWS ECR に Docker imageをpushしようとした時に会社用と、個人用のアカウント管理するのがちょっと手こずったのでメモ
    • 結論:
      ローカルにある~/.aws/credentialsファイルで管理
  • docker-composeを使ってECRにimageをpushするときに、ちょっと手こずったのでメモ
    • 結論:
      複数回に分けてimageをpushする必要がある

※ AWS CLI2がインストールされている前提

参考:
こちらの記事からだいだいわかったので引用させていただきます
awscliの設定切り替え

AWS CLIで複数アカウントを管理する

モチベ

会社でもAWSアカウントを使っているけど、個人開発でもECRにpushしたい。でもpushしようとしたら、その会社アカウントではpushできませんよ!的なエラーが出る。

アカウント管理

以下のファイルがこのように2種類以上のアカウントを管理する。

最終的にこのファイルが以下のような形になっていれば良いのでvimで書いても良いとは思う。
この記事では他の方法を紹介している。

~/.aws/credentials
[default]
aws_access_key_id=***********AI
aws_secret_access_key=**************************hi
region = ap-northeast-1

[profile test-user]
aws_access_key_id = ************HI
aws_secret_access_key = *************************3MA
region=us-west-2

~/.aws/credentials に新しくアカウントを登録する方法

公式サイトに載っていたのでそちらを記載
参考:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-files.html

スクリーンショット 2021-02-24 11.47.26.png

$ aws configure

とすると(AWS CLIが既にインストールされていれば)Access KeyやSecret Access Keyを標準入力で求められるので、IAMを作成した時に表示されるkeyを入力する。

Default region name, Default output formatについては任意の値を。

上の作業が終わった後に

$ cat ~/.aws/credentials

とかで確認してみると新しい情報が追加されているはず。

keyの保存

新しくIAMを作成したときは、IAMの作成完了画面で aws_access_key_id, aws_secret_access_keyの2つが発行されてnew_account_credentials.csvというファイルが一緒に保存できる画面が出ると思うのでそこから2つのkeyを保存しておく。

ecrにpushするときの権限

ecrにpushするときはそれぞれ個人ごとにIAMを作成してecrにpushできる権限をつけてpushできるようにする
pushできるようにするための権限はここら辺

AmazonEC2ContainerRegistryFullAccess
AmazonEC2ContainerRegistryPowerUser
AmazonEC2ContainerRegistryReadOnly

参考:
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/ecr_managed_policies.html

アカウントの切り替え

export AWS_DEFAULT_PROFILE=test-user

としてから

aws s3 list



aws ecr get-login

などの任意のログインするコマンドなどを実行する

test-userは[default]などで囲まれている~/.aws/credentialsのファイルの値を入力する

こっちでもできるらしい

aws s3 list --profile test-user

docker-compose + ECR

まぁ、ここは簡単に。
知らなかったので記載するが、Docker imageをECRにpushするときはaws cliを正しいアカウントで切り替えた後に以下のコマンドを実行するとpushできる。

が、docker-composeの場合ってどうするんや??
と思ったのでちょっと調べてみたが、あまり情報なかった。。。(3分くらいしか調べてないけど)

結論
docker-composeの場合は一気に複数のimageを作るので複数回push作業を行う必要がある。
もしかしたら違う方法があるのかもしれないので知っている方いたら教えてください。

なので、例えば
こんな感じの環境をDockerに乗せるときは api-server, db-server(Model), mysqlの3つのimageをdocker-composeで作る必要がある。

image.png

その場合は、それぞれのサービスごとにECRでレポジトリを作成して、それぞれの環境にpushするようにする。

ちょっとめんどくさいのでもっといい方法、楽なスクリプトとか書けばいいのかな?とは思うがわからん。

# タグをつける
$ docker tag hello-world:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

# ECRにpushする
$ docker push aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

出力:

The push refers to a repository [aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world] (len: 1)
e9ae3c220b23: Pushed
a6785352b25c: Pushed
0998bf8fb9e9: Pushed
0a85502c06c9: Pushed
latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774

参考:https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/getting-started-cli.html

以上。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1