0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS CLI】ロールを切り替えて別のアカウントにあるDockerイメージを取得する

Last updated at Posted at 2020-10-22

#背景
AWSを使用して別のアカウントのECRにあるDockerイメージを取得したかったため
AWS CLIによるロール切り替えについていろいろ調べた結果をまとめました。

#前提条件
#####1.アカウントAに欲しいDockerイメージがある
#####2.アカウントBに存在するEC2にアカウントAのDockerイメージをPULLする

#作業の流れ
####1.アカウントAのIAMからアカウントBで使えるロールを作る
#####1-1.信頼されたエンティティの選択
image.png

※アカウントIDは__アカウントBのID12桁__を入力する

#####1-2.Attachアクセス制限ポリシー
 下記を付与する
 ・AmazonEC2ContainerRegistryFullAccess
 ・AmazonEC2FullAccess
 ・AmazonEC2RoleforSSM(EC2にセッションマネージャーで接続するために使用)

#####1-3.ロールの作成
 ・タグ名は入力しなくてもよい
 ・ロール名はswitch-roleなどわかりやすい名前が良いかと。
 ・作成後、作成されるロールのARNをコピーする
image.png

####2.アカウントBで実際にロールを切り替えるための準備をする
#####2-1.アカウントBでログインしてEC2のIAMロールを設定する
EC2に付けているIAMロールを開いて信頼関係タブから信頼関係編集ボタンを押下
image.png

青枠に作成したロールのARNを貼り付ける

#####2-2.EC2にログインして、awscliの設定をする
EC2にログイン(今回はセッションマネージャーを利用)
ログイン後、管理者権限(su)に切り替え

######2-2-1.切替後のプロファイルを登録する

[root@ip-10-10-10-131 ~]# aws configure --profile dev
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]: json

ここでは、切替後の名前を__dev__と定義する
設定後、configureファイルを直接開く

[root@ip-10-10-10-131 ~]# vi .aws/config

「role_arn」と「source_profile」を追記する
image.png

######2-2-2.認証情報を登録する

[root@ip-10-10-10-131 ~]# vi .aws/credentials

credentialsファイルを新規作成する

[default]
aws_access_key_id = xxxxxxxx
aws_secret_access_key = xxxxxx

アクセスキーとシークレットアクセスキーはアカウントBで使用できるユーザーのものを登録する

####3.実際に試してみる
#####3-1.ロールを切り替えない場合

ECR(Amazon Elastic Container Registry)にログイン

[root@ip-10-10-10-185 ~]aws ecr get-login --region ap-northeast-1 --no-include-email > dlogin.sh
[root@ip-10-10-10-185 ~]chmod +x dlogin.sh
[root@ip-10-10-10-185 ~]./dlogin.sh

リポジトリの取得

[root@ip-10-10-10-185 ~]docker pull 'リポジトリのURI'
Error response from daemon: Get 'リポジトリのURI' no basic auth credentials

という風に認証関係でエラーとなる

#####3-2.ロールを切り替えた場合
ECR(Amazon Elastic Container Registry)にログイン

[root@ip-10-10-10-185 ~]aws ecr get-login --region ap-northeast-1 --no-include-email --profile dev > dlogin_dev.sh
[root@ip-10-10-10-185 ~]chmod +x dlogin_dev.sh
[root@ip-10-10-10-185 ~]./dlogin_dev.sh

リポジトリの取得

[root@ip-10-10-10-185 ~]docker pull 'リポジトリのURI'
ダウンロード中..
・
・
・
・
Digest: sha256:0xx
Status: Downloaded newer image for 'リポジトリのURI'

取得したイメージの確認

[root@ip-10-10-10-185 ~]# docker images
REPOSITORY     TAG                 IMAGE ID            CREATED             SIZE
リポジトリ名    latest              xxxxxxxxxxxx        13 months ago       5.37GB

#最後に
今回はDockerイメージの取得に特化したが、ロールの切り替えはCodeCommitからドキュメントの取得などにも使えるので
備忘録としてaws cliの切り替えの手順をまとめました。

#参考
AWS CLI のprofileを簡単に切り替える

[AWS CLI でロールを切り替えて作業する]
(https://nasrinjp1.hatenablog.com/entry/2018/04/06/215737)

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?