AWS初学者です。
AWS CLIに紐づくデフォルトのプロファイルをIAMユーザーからIAM Identity Centerユーザーに変更したかったです。
その際に手間取ってしまったため、備忘録としてまとめます。
問題
過去のAWS学習時にAWS CLIのデフォルトのプロファイルとしてIAMユーザーを設定していました。
コマンドを打って確認してみます。
$ aws sts get-caller-identity
{
"Account": "123456789012",
"UserId": "ABCDEFGHIJKLMNOPQRSTUV",
"Arn": "arn:aws:iam::123456789012:user/test"
}
今回の学習ではIAMユーザーではなく、すでに作成済みのIAM Identity Centerユーザーを使用しています。
そのためAWS CLIへ紐付けるデフォルトのプロファイルもIAM Identity Centerユーザーの情報へ変更する必要がありました。
解決策
AWS CLIのdefault
というプロファイルにIAM Identity Centerユーザーの情報を設定することで解決できました。
具体的な手順は次のとおりです。
1. defaultプロファイルの設定
具体的にはaws configure sso --profile default
を実行して流れにしたがいます。
$ aws configure sso --profile default
SSO session name (Recommended): default
SSO start URL [None]: https://a-123456bcde.awsapps.com/start/
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]: sso:account:access
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
ABCD-EFGH
The only AWS account available to you is: 123456789012
Using the account ID 123456789012
The only role available to you is: AdministratorAccess
Using the role name "AdministratorAccess"
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile default
$
~/.aws/config
ファイルの[default]
に入力した内容が登録されていれば成功です。
[default]
sso_session = default
sso_account_id = 123456789012
sso_role_name = AdministratorAccess
region = ap-northeast-1
output = json
2. 旧IAM ユーザー情報の削除
次に~/.aws/credentials
ファイルから default
プロファイルの IAM ユーザーの認証情報をコメントアウトか削除します。
[default]
# aws_access_key_id = ABCDEFGHIJKLMNOPQRSTUV
# aws_secret_access_key = hogehogehogehogehogehogehogehogehogehoge
※この手順は不要かもしれません。
3. 動作確認
最後にもう一度コマンドを打って、IAM Identity Centerユーザーの認証情報がAWS CLIと紐づいているか確認します。
$ aws sts get-caller-identity
{
"UserId": "HOGEHOGEHOGEHOGEHOGE:test-user",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/AWSReservedSSO_AdministratorAccess_1234hogehoge1234hogehoge/test-user"
}
きちんと紐づいていました!
おわりに
手順としてはこれで良いものの、AWSの権限や認証まわりはまだ頭の中にメンタルモデルが形成できていない感覚です。
手を動かしながら、理解を深めていく所存です。参考資料
コメント