tapitapi’s blog

1日1杯タピオカ!エンジニア

【AWS CLI】2つ以上のAWSアカウントを使い分ける

AWSのアカウントを2つ(仕事用&プライベート用)持つことになり、AWS CLIで使い分けはどうすれば?となったので、解決方法を紹介します。

 

1. まず、2つのアカウントそれぞれでIAMユーザを登録する

*IAMサービスの「Users」を選択

f:id:kayo445:20200713155931p:plain

 

*「Add user」ボタンをクリック

f:id:kayo445:20200713160023p:plain

* [User name]を記入、[Access Type]をProgrammatic access (AWS CLIでアクセスできる様にするため)にチェックを入れて、下の方にある[Add User]ボタンをクリック

f:id:kayo445:20200713160155p:plain

 

*[Create group]ボタンをクリックし、[Group name]を記入し、与える権限を選択

(今回は、[Group name]をAdminという名前にし、全ての権限(Administrator Access)を与える設定にしました。)

f:id:kayo445:20200713160410p:plain

f:id:kayo445:20200713160451p:plain

 

*こんな風に表示されれば、権限を与える設定登録に成功![Next: Tags]をクリック

f:id:kayo445:20200713160722p:plain

 

*Tags設定は必須ではないので、何も記載しないで、[Next:Review]をクリック

f:id:kayo445:20200713160842p:plain

 

*Reveiw画面で、設定を確認し、OKなら[Create user]をクリック

f:id:kayo445:20200713160129p:plain

 

*ユーザ作成が成功したら、下記のように表示されるので、[Access Key ID], [Secret access key]をメモしておいてください(後でAWS CLIの設定で使用します)

f:id:kayo445:20200713161104p:plain

 

*他のAWSアカウントも、上記と同じ手順で、権限を与えられたIAMユーザを作成し、[Access Key ID], [Secret access key]をメモしておいてください

 

2. AWS CLIのインストール(Mac環境)

curlコマンドで、AWS CLIのパッケージをローカルにダウンロード

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"

 

*インストール実行

(パスワードを聞かれた場合はPCにログインする時のユーザパスワード)

sudo installer -pkg AWSCLIV2.pkg -target /

 

*正しくインストールされたか確認

which aws

=> /usr/local/bin/aws が表示されればOK

 

aws --version
=> aws-cli/2.0.13 Python/3.7.4 Darwin/19.3.0 botocore/2.0.0dev17 のようにバージョンが表示されればOK

 

*コンソール上で下記コマンドをうつ

aws configure

 

*すると、下記4つの入力欄が表示されるのでそれぞれ入力(デフォルトのユーザとして登録したいAWSアカウントのIAM情報を入力)

AWS Access Key ID [None]: ここに、上記で確認したAccess Key ID入力
AWS Secret Access Key [None]:ここに、上記で確認したSecret Access Key入力
Default region name [None]: 契約している地域(ap-northeast-1など)
Default output format [None]: json

 

*次に、他のユーザを登録(名前付きユーザとして登録)するため、コンソール上で下記コマンドをうつ。(赤い部分を、登録したいユーザ情報に変更してください)

aws configure set region us-west-2 --profile tapitapi

 

*すると、下記4つの入力欄が表示されるのでそれぞれ入力

AWS Access Key ID [None]: ここに、上記で確認したAccess Key ID入力
AWS Secret Access Key [None]:ここに、上記で確認したSecret Access Key入力
Default region name [None]: 契約している地域(ap-northeast-1など)
Default output format [None]: json

 

*2つのユーザが登録できたか確認するため、下記コマンド実行

aws configure list-profiles

 

=>

default

tapitapi

 

上記実行し、defaultと2つ目のユーザの名前(今回はtapitapi)が表示されればOK

 

3. それぞれの環境に合わせてAWS CLIを実行できるか確認するため、S3 bucketを作成してみる

S3 bucketがすでに作成されている場合は、4.へ進んでください

*S3 bucketsサービスで[Create bucket]ボタンをクリック

f:id:kayo445:20200713164953p:plain

 

*[Bucket name]を記入して[Next]をクリック。(Regionなど変更したい場合は、select boxで他の地域に変更可能)

f:id:kayo445:20200713165037p:plain

 

*オプションを選択し、[Next]をクリック

今回はDefault encription(S3 bucket内に配置したファイルを自動で暗号化してくれる設定)のみ選択しました。

バージョン管理や、アクセスログを取りたい場合は、Versioning, Server access loggingなども選択するといいです

f:id:kayo445:20200713165209p:plain

 

パーミッション設定で、Block all public access (外部からのアクセスをブロック)を選択し、[Next]をクリック

bucket を作成した後、フォルダごとに公開設定ができるので、今回はとりあえず、全てブロックする設定にしました

f:id:kayo445:20200713165517p:plain

 

*Review画面で設定を確認し、OKなら、[Create bucket]をクリック

f:id:kayo445:20200713165745p:plain

 

*こんな感じで、Bucketが作成されればOK

f:id:kayo445:20200713165833p:plain

 

*上記の手順で、複数のAWSアカウント上でもBucketを作成してみてください

 

4. aws S3 コマンドで、それぞれのAWSアカウントを使い分ける

*まず、デフォルトのAWSアカウントS3bucketのフォルダ構成を調べる

aws s3 ls

これでS3bucketのフォルダが表示されればOK

 

*名前つきAWSアカウントS3bucketのフォルダ構成を調べる

aws s3 ls --profile tapitapi

これでS3bucketのフォルダが表示されればOK

 

以上ですーーー!!

 

awsコマンドは、--profile パラメタを指定することで、2つ以上のAWSアカウントを使い分けることができることが分かりました

 

今後PythonなどでAWS CLIのコマンドを使用したプログラムを書くときは、--profileを意識した方がいいと思います(ユーザによって複数のアカウントを登録している場合があるため。)

 

追加で、AWS CLIのコマンドを使用したプログラムを書いたとき、--outputパラメタでもつまづいたので、参考までに記載しておきます

tapitapi.hatenadiary.com

 

おやすみなさい