You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Lambda子模块中创建额外AWS策略时触发无效索引错误

问题解决:Terraform Lambda模块多策略配置错误

错误原因

你当前的policy_jsons配置是把两个JSON策略合并成了单个字符串放到列表里,所以var.policy_jsons实际是长度为1的列表,但你设置了number_of_policy_jsons = 2,模块内部用count循环时,当count.index=1就会找不到对应元素,触发索引越界错误。

正确配置方式

需要将每个独立的IAM策略JSON作为policy_jsons列表的一个单独元素,每个策略用单独的heredoc块包裹:

number_of_policy_jsons = 2

policy_jsons = [
  <<-EOT
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "xray:*"
                ],
                "Resource": ["*"]
            }
        ]
    }
  EOT,
  <<-EOT
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:*"
                ],
                "Resource": ["*"]
            }
        ]
    }
  EOT
]

额外说明

  • 确保每个策略JSON是列表的独立元素,用逗号分隔不同的heredoc块
  • 也可以直接使用JSON字符串(不需要heredoc),只要保证每个策略是列表的一个元素:
    policy_jsons = [
      "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"xray:*\"], \"Resource\": [\"*\"]}]}",
      "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"s3:*\"], \"Resource\": [\"*\"]}]}"
    ]
    
  • number_of_policy_jsons的值要和policy_jsons列表的长度严格保持一致,避免再次出现索引不匹配问题

内容的提问来源于stack exchange,提问作者16069229

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:33:23