AWS CDKが対応していないのか、~/.aws/configのプロファイルに設定したaws_signing_helperからクレデンシャルを取得することができなかったので、aws_signing_helperで取得したクレデンシャルを、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKENの3つの環境変数に反映するシェルを作りました。
使い方
source ./set_aws_credential_from_roles_anywhere.sh
または
. ./set_aws_credential_from_roles_anywhere.sh
コード
./set_aws_credential_from_roles_anywhere.sh
#---- # Roles Anywhereで取得した一時クレデンシャルを環境変数に設定するシェル # 使い方 # source set_aws_credential_from_roles_anywhere.sh # 前提 # aws_signing_helperがインストールされていること # aws_signing_helperはパスが通る場所に実行権限が付与されて配置されていること # Roles Anywhereが設定済みであること # Roles Anywhereの設定 CLIENT_CERT=<クライアント証明書のファイルパス> PRIVATE_KEY=<クライアントの秘密鍵のファイルパス> TRUST_ANCHOR_ARN=<IAM Roles Anywhereの信頼アンカーのARN> PROFILE_ARN=<IAM Roles AnywhereのプロファイルのARN> ROLE_ARN=<一時認証情報を取得したいIAM ロールのARN> # 実行 credentials_json=$( aws_signing_helper credential-process \ --certificate ${CLIENT_CERT} \ --private-key ${PRIVATE_KEY} \ --trust-anchor-arn ${TRUST_ANCHOR_ARN}\ --profile-arn ${PROFILE_ARN} \ --role-arn ${ROLE_ARN}; ) export AWS_ACCESS_KEY_ID=$(echo $credentials_json | jq -r .AccessKeyId) export AWS_SECRET_ACCESS_KEY=$(echo $credentials_json | jq -r .SecretAccessKey) export AWS_SESSION_TOKEN=$(echo $credentials_json | jq -r .SessionToken)