1. ホーム
  2. amazon-web-services

[解決済み] AWSのstsは、1つのコマンドの役割を担う

2022-03-06 06:52:08

質問

CLIでAWSのロールを引き受けるために、以下のコマンドを実行しています。

aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test --region eu-central-1

これでスキーマに従った出力が得られます。

{
    "Credentials": {
        "AccessKeyId": "someAccessKeyId",
        "SecretAccessKey": "someSecretAccessKey",
        "SessionToken": "someSessionToken",
        "Expiration": "2020-08-04T06:52:13+00:00"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "idOfTheAssummedRole",
        "Arn": "theARNOfTheRoleIWantToAssume"
    }
}

の値を手動でコピーして貼り付けています。 AccessKeyId , SecretAccessKeySessionToken をこのように大量にエクスポートしています。

export AWS_ACCESS_KEY_ID="someAccessKeyId"                                                                                      
export AWS_SECRET_ACCESS_KEY="someSecretAccessKey"
export AWS_SESSION_TOKEN="someSessionToken"

最終的に役を引き受けること。

どうすれば一度にできるのでしょうか?つまり aws sts ... コマンドを exports .

解決方法は?

最後に、同僚がこの素晴らしいスニペットを教えてくれたので、一度に作業を完了させることができます。

eval $(aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\nexport AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')

AWS CLIとは別に、必要なのは jq は、通常、Linuxデスクトップにインストールされています。