TerraformのAWSプロバイダーにはallowed_account_ids
という設定項目があるのをご存知でしょうか?コードを実行する対象のAWSアカウントを絞れる設定です。
コードに直接IAMユーザーのクレデンシャルを書いておけば、環境の取り違えは発生しないのですが、このコードはGitなどにコミットしづらいですよね。そこでよくやるのが、AWS CLIで対象のAWSを操作できるようにしておいて、AWS_PROFILEで環境を切り替えるという方法です。
しかし、この方法では環境の取り違えが発生する可能性があります。例えば、自分ではtest_1というAWSアカウントに対してTerraformを実行しているつもりが、AWS_PROFILEにはtest_2というAWSアカウントがセットされている、なんてことが簡単に想像できます。
allowed_account_ids
に対象のAWSアカウントIDをセットしておくことで、このような取り違えを防止できます。
設定方法
特に難しいことはありません。プロバイダーの設定にallowed_account_ids
を追加するだけです。
provider "aws" { allowed_account_ids = ["123456789012", "210987654321", ...] }
ここに列挙されたAWSアカウントに対してのみTerraformが実行できます。それ以外の環境にはエラーが出て処理が失敗します。
まとめ
これを設定しておくだけで環境の取り違えをある程度防止できるので、手動でTerraformを実行する時には設定しておくといいですね。