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

如何解决Terraform中获取Lambda函数代码签名配置时的AccessDeniedException错误

解决Terraform部署Lambda时的AccessDeniedException(代码签名配置)问题

针对你遇到的这个权限错误,我整理了几个实用的解决方案,你可以逐一尝试:

1. 给Terraform执行角色补充必要的IAM权限

这个错误的核心原因是:AWS Provider 3.16.0以上的版本会默认尝试获取Lambda的代码签名配置,但你的IAM角色缺少对应的lambda:GetCodeSigningConfig权限。你可以给执行Terraform的IAM角色添加以下权限Policy:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:GetCodeSigningConfig",
            "Resource": "*"
        }
    ]
}

如果你的Lambda有特定的代码签名配置,建议把Resource限定为对应的配置ARN,这样更符合最小权限原则。

2. 确认AWS Provider与Terraform版本的兼容性

你当前用的是Terraform v0.13.4,虽然资料说AWS Provider 3.18.0能解决这个问题,但得先确认两者的兼容性。Terraform 0.13.4对Provider版本有一定限制,你可以在versions.tf里明确锁定兼容的版本范围:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.18.0" # 锁定在3.18.x系列,确保和Terraform 0.13.4兼容
    }
  }
}

然后执行terraform init -upgrade来升级Provider到指定版本,再重新部署试试。

3. 显式跳过代码签名配置检查(如果不需要的话)

如果你的Lambda根本不需要使用代码签名配置,那可以在Terraform的Lambda资源定义里显式设置code_signing_config_arn为空字符串,强制Provider跳过对该配置的自动检测:

resource "aws_lambda_function" "your_lambda" {
  # 你的其他Lambda配置(比如函数名、运行时、ECR镜像地址等)
  code_signing_config_arn = ""
}

这个方法能直接绕过权限检查环节,快速解决问题。

额外排查点

如果以上方法都没效果,你可以试试:

  • 执行terraform state refresh刷新状态文件,确保本地状态和AWS云端一致
  • 检查是否有SCP(服务控制策略)或者其他IAM权限边界限制了lambda:GetCodeSigningConfig的调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:34:07