見やすいようにバックスラッシュで行を分けてますが、ワンライナーです。
terraformをローカルマシンで実行する時に、AWSプロバイダーの部分にローカルマシン固有のプロファイルとか埋め込みたくないけど、都度クレデンシャルを手で環境変数に設定するのは手間だということで作ってみたものです。
AWS_BASE_PROFILE="default"; \ AWS_ASSUME_PROFILE="<assume先のプロファイル>"; \ aws --profile ${AWS_BASE_PROFILE} \ sts assume-role \ --role-arn $(aws configure get ${AWS_ASSUME_PROFILE}.role_arn) \ --role-session-name ${AWS_ASSUME_PROFILE}-session \ --query 'Credentials.{ AWS_ACCESS_KEY_ID:AccessKeyId, AWS_SECRET_ACCESS_KEY:SecretAccessKey, AWS_SESSION_TOKEN:SessionToken }' | \ jq -r 'to_entries | .[] | [.key + " " + .value]|@tsv' | while read key value; do export $key=$value; done
1行にするとこんな感じ。
AWS_BASE_PROFILE="default"; AWS_ASSUME_PROFILE="<assume先のプロファイル>"; aws --profile ${AWS_BASE_PROFILE} sts assume-role --role-arn $(aws configure get ${AWS_ASSUME_PROFILE}.role_arn) --role-session-name ${AWS_ASSUME_PROFILE}-session --query 'Credentials.{AWS_ACCESS_KEY_ID:AccessKeyId,AWS_SECRET_ACCESS_KEY:SecretAccessKey,AWS_SESSION_TOKEN:SessionToken}' |jq -r 'to_entries | .[] | [.key + " " + .value]|@tsv' |while read key value; do export $key=$value; done