前提
- awsに関する知識がそこそこある前提で書きます
- CLIのセットアップが完了していること
- CLIの利用に際して、profileでの切り替えに理解があること
- MFAを設定したIAMアカウントの認証情報が.aws/credentialや.aws/configに記載されていること(profile名をtargetとします)
いつ実施しますか
MFAが設定されたIAMアカウントからAWSのCLIで操作を行う必要がある際に利用します。
今回の場合、RDSのイベントログがwebコンソール上だと1日分しか表示されないため、
過去分を確認したく、今回に至ります。
cf. 【小ネタ】RDSイベントは直近1日分しか表示されないのでAWS CLIで確認しよう
※頻度が高いなら、別の手段の検討がオススメ
手順
webでログインするときと同様に、MFAのトークンを準備してください。
以下のコマンドのtoken-codeに、表示されている値を設定してください。
$ aws --profile target sts get-session-token --serial-number arn:aws:iam::012345678900:mfa/mesh1nek0x0 --token-code 00000
実行すると
{
"Credentials": {
"SecretAccessKey": "secret-access-key",
"SessionToken": "temporary-session-token",
"Expiration": "expiration-date-time",
"AccessKeyId": "access-key-id"
}
}
こういう結果が得られるので、上記の結果を元に.aws/credentialに以下のように追記します
[target-mfa]
output = json
region = ap-northeast-1
aws_access_key_id = <Access-key-as-in-returned-output>
aws_secret_access_key = <Secret-access-key-as-in-returned-output>
aws_session_token = <Session-Token-as-in-returned-output>
あとは実行したいコマンドでprofileに 今ほど追加したtarget-mfa
を指定すればいけます。
$ aws rds describe-events --profile target-mfa --duration $(bc <<< "60 * 24 * 7")
参考
AWS CLI 経由で AWS リソースへのアクセスを認証するには、どのように MFA トークンを使用したらよいですか?