MFA設定済みの状態でAWS-CLIを利用する手順メモ


前提

  • 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 トークンを使用したらよいですか?