エラー

aws loginコマンドが実装されたのでCredentialを捨ててみたら、Opentofu(Terraform)の実行がエラーになっちゃったので調べた

1
2
3
4
$ tofu plan

│ Error: No valid credential sources found

対処

~/.aws/config の対象profileに credential_process = aws configure export-credentialsの行を追加

1
2
3
4
[profile hoge]
region = ap-northeast-1
login_session = arn:aws:iam::XXXXXXXXXXXX:user/nobiki
credential_process = aws configure export-credentials # この行を追加

このコマンドはなに?(AI解説)

  1. 認証情報の「委任(Delegation)」
    credential_process は、OpenTofu (AWS Provider) がAWSへの接続に必要な認証情報(アクセスキーID、シークレットアクセスキー、セッショントークン)を、外部のコマンドを実行して取得するための設定です。
    OpenTofuは、認証が必要になるたびに、この設定に書かれたコマンド(ここでは aws configure export-credentials)を実行し、そのコマンドが標準出力に出力するJSON形式のデータから認証情報を読み取ります。

  2. AWS CLIキャッシュからの「取り出し」
    設定されたコマンド aws configure export-credentials の役割は以下の通りです。
    AWS CLIに対して、「プロファイルに関連付けられた有効な一時認証情報があるか」を尋ねます。
    AWS CLIは、以前に aws login で取得し、ローカルのキャッシュファイル(通常は ~/.aws/sso/cache,~/.aws/login/cache や内部ストレージ)に保存されている一時キー(ACCESS_KEY_ID, SECRET_ACCESS_KEY, SESSION_TOKEN)をチェックします。
    有効な一時キーが見つかれば、それを OpenTofu が読み取れる特定の JSON 形式で標準出力に出力します。
    OpenTofuはこの JSON を受け取り、AWSとの通信に使用します。

  3. 認証情報の有効期限について
    plan を実行する度にこのコマンドは実行されますが、これは新しい一時認証情報を発行しているわけではありません。