概要
上記のようなIAMロールのリソース内でエラーが出ていたがうざいなと思いつつ
時間がなかったので放置していたが我慢の限界が来たので調べて見た
解決方法
単純にIAMロールの中にIAMポリシーを記述することが非推奨になったみたいです
一つのリソースに複数のリソースの定義を含むのがダメになった感じですね
一つ一つリソースごとに定義して書くとコードが分離されて可読性が上がるから変わったのでしょう
まぁでも個人的に非推奨の方が見やすい...
非推奨
resource "aws_iam_role" "hoge_role" {
name = "hoge-dev-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid = ""
Principal = {
Service = "ec2.amazonaws.com"
}
},
]
})
managed_policy_arns = [
"arn:aws:iam::aws:policy/CloudWatchFullAccess"
]
}
推奨
resource "aws_iam_role" "hoge_role" {
name = "hoge-dev-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid = ""
Principal = {
Service = "ec2.amazonaws.com"
}
},
]
})
- managed_policy_arns = [
- "arn:aws:iam::aws:policy/CloudWatchFullAccess"
- ]
}
+resource "aws_iam_role_policy_attachment" "cloudwatch_full_access" {
+ role = aws_iam_role.hoge_role.name
+ policy_arn = "arn:aws:iam::aws:policy/CloudWatchFullAccess"
+ }