AWS IAM アイデンティティセンターのユーザーの一時的な認証情報を取得したいです。
簡単な説明
IAM アイデンティティセンターを使用するように名前付きプロファイルを設定すると、$ cd ~/.aws/sso/cache ディレクトリに JSON ファイルが作成されます。JSON ファイルには、JSON ウェブトークン (JWT) が含まれています。これは get-role-credentials API 相当のコマンドで一時的なセキュリティ認証情報を取得するために使用されます。アクセストークンは 8 時間有効です。有効期限は JSON ファイルの expiresAt タイムスタンプで確認できます。期限切れのトークンを再認証するには、get-role-credentials コマンドを使用する必要があります。
解決策
AWS コマンドラインインターフェイス (AWS CLI) を使用して IAM アイデンティティセンターのユーザーの一時的な認証情報を取得します。
**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
一時的な認証情報を取得する
AWS CLI で、次の手順を実行します。
-
JSON ファイルを開き、アクセストークンをコピーします。
$ cat 535a8450b05870c9045c8a7b95870.json
{"startUrl": "https://my-sso-portal.awsapps.com/start", "region": "us-east-1", "accessToken": "eyJlbmMiOiJBM….", "expiresAt": "2020-06-17T10:02:08UTC"}
-
get-role-credentials AWS CLI コマンドを実行して IAM アイデンティティセンターのユーザーの認証情報を取得します。
$ aws sso get-role-credentials --account-id 123456789012 --role-name permission-set-name --access-token eyJlbmMiOiJBM…. --region enter_the_same_sso_region_same_in_the_JSON_file
出力例:
{ "roleCredentials": {
"accessKeyId": "ASIA*************",
"secretAccessKey": "**********************************",
"sessionToken": "****************************************",
"expiration": 1592362463000
}
}
-
認証情報を環境変数として設定します。
エラーメッセージをトラブルシューティングする
「An error occurred (ForbiddenException) when calling the GetRoleCredentials operation: No access.」
このエラーは、AWS CLI のロール名が正しくないことが原因で発生する可能性があります。ロール名をチェックして、それが正しいことを確認します。
「An error occurred (UnauthorizedException) when calling the GetRoleCredentials operation: Session token not found or invalid.」
このエラーは、セッショントークンまたは AWS リージョンが正しくないことが原因で発生します。AWS CLI コマンドのリージョンが、JSON ファイル出力のリージョンと同じであることを確認します。
関連情報
IAM アイデンティティセンターのアクセス権限セットを使用するにはどうすればよいですか?