はじめに
IAMユーザーを新しく作成し、aws-cli上でもIAMユーザーとして設定しようとしたところうまく登録できませんでした。
それまで使用していた古いIAMユーザーが設定されていることが原因で変更できなかったのですが、解決したので備忘録として残したいと思います。
お気付きの点があれば教えてください。
課題
新しく作ったIAMユーザーをaws-cliのIAMユーザーとして登録できない。
旧IAMユーザーを上書きできない。
手順
まず現状のaws-cliでの権限を確認するために次のコマンドを実行します。
aws sts get-caller-identity
すると現状のどの権限で操作をしているかが確認できます。
{
"UserId": "AKIA4KB4UX5XPJRUGBIS",
"Account": "************",
"Arn": "arn:aws:iam::************:user/Silva-Zoldyck"
}
旧IAMユーザーの情報が表示されています。
IAMユーザーを新たに作成します。
今回はAWSマネジメントコンソール上で作成します。
IAMユーザー作成の画面からAdd usersをクリックします。
User nameを入力し、Access keyにチェックをつけます。
Policyを選択します。今回はAWSが準備しているものを利用します。
IAMユーザーを作成するとAccess Key IDとSecret access keyが表示されるのでコピーしておきます。
aws-cliに設定します。
.awsディレクトリ内のcredentialsファイルを開きます。
vim ~/.aws/credentials
先ほどコピーしたAccess Key IDとSecret access keyを変更します。
これで設定変更完了!
IAMユーザーがの変更が完了しているはず。
再度コマンドを実行
aws sts get-caller-identity
{
"UserId": "AKIA4KB4UX5XPJRUGBIS",
"Account": "************",
"Arn": "arn:aws:iam::************:user/Silva-Zoldyck"
}
が、なぜか変わっていない・・・
そうか!以前のAccess Key IDとSecret access keyが環境変数として残っているからだ!
export AWS_ACCESS_KEY_ID="AKIA4KB4UX5XPJRUGBIS"
export AWS_SECRET_ACCESS_KEY="***************************************"
これを削除すればうまくいくはず!
・・・しかし、削除しても変更されていない。
解決
次のコマンドを入力することで解決しました。
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unsetは関数や変数を削除してくれるコマンドです。
{
"UserId": "AIDA4KB4UX5XLYWOWW4FV",
"Account": "************",
"Arn": "arn:aws:iam::************:user/Chrollo-Lucilfer"
}
無事に変更されています!
- @RubiconLink さんより教えていただいたので補足
AWSの公式の「構成設定と優先順位」には次のように記されています。
AWS CLI は、システム環境変数、ユーザー環境変数、ローカルの AWS 設定ファイル、またはコマンドラインでパラメータとして明示的に宣言されたものなど、複数の場所にある認証情報と構成設定を使用します。特定の場所が他の場所よりも優先されます。AWS CLI 認証情報と構成設定は、次の順序で優先されます。
- コマンドラインオプション
- 環境変数
- CLI 認証情報ファイル
- CLI 設定ファイル
- コンテナ認証情報
- Amazon EC2 インスタンスプロファイルの認証情報
今回私が設定値を更新していたcredentialsファイルは3に該当します。
2の環境変数よりも優先順位が低かったため、unsetで削除してあげることで更新することができたということでしょう。
おわりに
今回のようにIAMユーザーを変更することはなかなかないかもしれませんが、もしもうまくいかないかなかった場合は試してみてください。
参考