はじめに
AWSの各種サービスを操作する際、マネジメントコンソールだけでは実現できない処理があり、AWS CLIを利用する必要がある場面が度々あります。単一のAWSアカウントを使用している場合は比較的シンプルですが、複数のAWSアカウントを管理している場合、操作の都度、適切な認証情報に切り替える必要があります。
本記事では、私自身が複数アカウント環境下でAWS CLIの認証情報管理に苦戦した経験と、その解決策について備忘録として共有させていただきます。同様の課題に直面している方の参考になれば幸いです。
AWS CLIとは?
AWS CLI(AWS Command Line Interface)は、Amazon Web Services(AWS)の各種サービスをコマンドラインから操作・管理するための公式ツールです。Windows、macOS、Linuxなど主要なOSに対応しており、ターミナルやコマンドプロンプトを通じて、AWSのリソースを制御できます。
AWS CLIのダウンロードとインストール
以下の公式ドキュメントを参考にインストールします。
インストール完了後に、コマンド実行してバージョンが表示されればOKです。
$ aws --version
aws-cli/2.24.17 Python/3.12.9 Windows/11 exe/AMD64
アクセスキーの情報をAWS CLIに設定
以下のコマンドでアクセスキーの情報を設定
$ aws configure
対話形式で入力を求められます。
AWS Access Key ID [None]: Access key ID
# Enter
AWS Secret Access Key [None]: Secret access key
# Enter
Default region name [None]: 未入力
# Enter
Default output format [None]: 未入力
# Enter
~/.aws/credentials に設定した情報が記載されてます。
[default]
aws_access_key_id = *****
aws_secret_access_key = *****
プロファイルの追加
別のアクセスキーの情報を追加する場合は、プロファイルを追加します。
aws configure --profile プロファイル名
また、対話形式で入力求められるので追加したいキー情報を入力して下さい。
~/.aws/credentials に追加した情報が記載されてます。
[default]
aws_access_key_id = *****
aws_secret_access_key = *****
[dev]
aws_access_key_id = *****
aws_secret_access_key = *****
プロファイルの切り替え方法
方法1: コマンドごとに指定
aws s3 ls --profile dev
プロファイルを指定しない場合は、defaultが使用されます
方法2: 環境変数で指定(セッション中ずっと反映したいとき)
export AWS_PROFILE=dev
で、結局何に手こずったの?
credentialsを修正したのに、プロファイルが認識されない
エディターで直接修正したのですが、コマンド実行時にプロファイル指定しても
そんなプロファイル無いと怒られ続けました。。
原因は?
- WSL2のUbuntuOS経由でAWSコマンド実行していた
- credentialsの情報はWindowsとは別で設定必要だった
- UbuntuOSでawsコマンドインストールした場合は、credencialsが別で作成されている
- Credentialsをエディターで編集しても反映されない場合がある
- プロファイル追加はなるべく、コマンドで行う
最後に
今回は、複数のAWSアカウントを扱う際のAWS CLI認証情報管理について、私が直面した課題と解決策を共有させていただきました。aws configureコマンドや認証情報ファイルの設定、プロファイルの切り替えなど、最初は煩雑に感じる作業も、一度理解してしまえば非常に効率的なワークフローを構築できます。
特に開発環境と本番環境を分離している場合や、複数のプロジェクトで異なるAWSアカウントを使用している場合には、この認証情報の適切な管理が作業効率と安全性の両面で重要になってきます。また、AWS SSO(シングルサインオン)やIAM Roleの一時的な認証情報の活用など、より高度な認証方法も検討する価値があるでしょう。
AWS CLIは一度設定を適切に行えば、その後の運用がスムーズになるツールです。この記事が、同じような課題に直面している方の一助となれば幸いです。