違うs3バケットに同じようなポリシーを作成しようとしています。
iam.tf
1data "aws_iam_policy_document" "allow_rw_access_s3_bucket" { 2 for_each = local.s3_buckets 3 statement { 4 sid = "AllowListDapBucket" 5 effect = "Allow" 6 actions = [ 7 "s3:ListBucket" 8 ] 9 resources = [format("arn:aws:s3:::%s-%s", each.value.name, var.env)] 10 } 11 statement { 12 sid = "AllowPutData" 13 effect = "Allow" 14 actions = [ 15 "s3:PutObject", 16 ] 17 resources = [ 18 "arn:aws:s3:::${format("%s-%s", each.value.name, var.env)}", 19 "arn:aws:s3:::${format("%s-%s", each.value.name, var.env)}/*" 20 ] 21 } 22} 23 24resource "aws_iam_policy" "allow-s3-role" { 25 for_each = local.s3_buckets 26 name = format("allow-s3-%s-%s", each.value.name, var.env) 27 policy = data.aws_iam_policy_document.allow_rw_access_s3_bucket.json 28}
locals.tf
1locals { 2 s3_buckets = { 3 school-dap = { 4 name = "school-dap" 5 tags_name = "school_dap" 6 } 7 argo-artifact = { 8 name = "argo-artifact" 9 tags_name = "argo_artifact" 10 } 11 } 12}
このように記載すると以下のようにエラーが出ます。
╷ │Error: Missing resource instance key │ │ on iam.tf line 27, in resource "aws_iam_policy" "allow-s3-role": │ 27: policy = data.aws_iam_policy_document.allow_rw_access_s3_bucket.json │ │Because data.aws_iam_policy_document.allow_rw_access_s3_bucket has │"for_each" set, its attributes must be accessed on specific instances. │ │For example, to correlate with indices of a referring resource, use: │ data.aws_iam_policy_document.allow_rw_access_s3_bucket[each.key] ╵
iam.tfの下記の部分でどのaws_iam_policy_documentを使っていいのかがわからないというエラーというのはわかりますがこちらをどのように変更すればよろしいでしょうか?
resource "aws_iam_policy" "allow-s3-role" { for_each = local.s3_buckets name = format("allow-s3-%s-%s", each.value.name, var.env) policy = data.aws_iam_policy_document.allow_rw_access_s3_bucket.json }
エラーの内容の通りに
policy = data.aws_iam_policy_document.allow_rw_access_s3_bucket[each.key]
ともしてみたのですが同じようなエラーになりました

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。