【AWS CLI】2つ以上のAWSアカウントを使い分ける
AWSのアカウントを2つ(仕事用&プライベート用)持つことになり、AWS CLIで使い分けはどうすれば?となったので、解決方法を紹介します。
1. まず、2つのアカウントそれぞれでIAMユーザを登録する
*IAMサービスの「Users」を選択
*「Add user」ボタンをクリック
* [User name]を記入、[Access Type]をProgrammatic access (AWS CLIでアクセスできる様にするため)にチェックを入れて、下の方にある[Add User]ボタンをクリック
*[Create group]ボタンをクリックし、[Group name]を記入し、与える権限を選択
(今回は、[Group name]をAdminという名前にし、全ての権限(Administrator Access)を与える設定にしました。)
*こんな風に表示されれば、権限を与える設定登録に成功![Next: Tags]をクリック
*Tags設定は必須ではないので、何も記載しないで、[Next:Review]をクリック
*Reveiw画面で、設定を確認し、OKなら[Create user]をクリック
*ユーザ作成が成功したら、下記のように表示されるので、[Access Key ID], [Secret access key]をメモしておいてください(後でAWS CLIの設定で使用します)
*他のAWSアカウントも、上記と同じ手順で、権限を与えられたIAMユーザを作成し、[Access Key ID], [Secret access key]をメモしておいてください
*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]ボタンをクリック
*[Bucket name]を記入して[Next]をクリック。(Regionなど変更したい場合は、select boxで他の地域に変更可能)
*オプションを選択し、[Next]をクリック
今回はDefault encription(S3 bucket内に配置したファイルを自動で暗号化してくれる設定)のみ選択しました。
バージョン管理や、アクセスログを取りたい場合は、Versioning, Server access loggingなども選択するといいです
*パーミッション設定で、Block all public access (外部からのアクセスをブロック)を選択し、[Next]をクリック
bucket を作成した後、フォルダごとに公開設定ができるので、今回はとりあえず、全てブロックする設定にしました
*Review画面で設定を確認し、OKなら、[Create bucket]をクリック
*こんな感じで、Bucketが作成されればOK
*上記の手順で、複数の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パラメタでもつまづいたので、参考までに記載しておきます
おやすみなさい