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

Terraform配置AWS Lambda权限报错:source_arn需字符串,求正确语法

解决AWS Lambda Permission中source_arn数组报错的问题

Terraform的aws_lambda_permission资源中,source_arn参数仅支持字符串类型,不接受数组值,这就是你遇到"expecting a string"错误的原因。要给多个Secrets Manager密钥配置Lambda调用权限,需要为每个ARN创建独立的权限规则,推荐用for_each批量生成资源,避免重复代码。

正确配置示例:

# 定义需要授权的Secrets Manager密钥ARN列表
locals {
  secret_arns = ["secret.arn", "secret.arn2", "secret.arn3"]
}

# 批量生成Lambda权限资源,每个密钥ARN对应一条权限
resource "aws_lambda_permission" "allow_rotate_secrets_permission" {
  for_each      = toset(local.secret_arns)
  statement_id  = "AllowExecutionFromSecretsManager-${replace(each.value, "/[^a-zA-Z0-9]/", "-")}"
  action        = "lambda:InvokeFunction"
  function_name = "UserCredentialsRotationLambda"
  principal     = "secretsmanager.amazonaws.com"
  source_arn    = each.value
}

说明:

  • 通过locals统一管理密钥ARN列表,后续增删密钥只需修改此处
  • for_each = toset(local.secret_arns)会遍历列表,为每个ARN创建独立的权限资源
  • statement_id通过替换ARN中的特殊字符生成唯一标识,避免资源命名冲突
  • 每个权限资源的source_arn对应列表中的单个ARN,完全符合参数的字符串类型要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:27:27