ある日突然 Terraform 差分が起きた件について、調査して分かったことをメモ
Assume Role 設定で指定していた IAM ロールの ARN が、見覚えのない文字列(AROA
から始まる)に変更されていて、Terraform 適用時に差分が起きた
Principal = {
~ AWS = "AROA..." -> "arn:aws:iam::[アカウント ID]:[ロール名]"
}
この変更を行った覚えはなくて、調査した結果、該当 IAM ロールが削除されたことによって、ARN からプリンシパルID に変換されたことが原因だった
どういうことかと言うと、
- 前提として、AWS の仕様で、意図しない IAM ロール利用を防ぐために、IAM ロールは裏側でユニーク ID で管理されている
-
普段は AWS 側で必要な時に ID 変換されるため目にする機会がないが、arn が指す IAM ロールが削除されると、この ID がコンソール表示される
- これによって、Terraform の差分が発生した
ちなみに、削除されている(存在しない) IAM ロールは ARN 指定することはできず(設定時に AWS 側で存在チェックをしている)、実際、AWS コンソール・Terraform から設定しようとしたができなかった