AdministratorAccess用户在eu-central-2获取Lambda CodeSigningConfig遇AccessDeniedException
Terraform在eu-central-2区域调用Lambda GetFunctionCodeSigningConfig报403 AccessDeniedException的排查方案
问题场景
- 一套用于创建IAM Policy和Lambda的入门级Terraform代码,在eu-central-1区域运行完全正常,切换到eu-central-2(苏黎世)区域后出现异常
- Policy与Lambda资源均创建成功,但Terraform执行阶段调用
GetFunctionCodeSigningConfig接口时返回403权限拒绝错误 - 操作账号已加入拥有
AdministratorAccess权限的用户组,额外添加了AWSLambda_FullAccess权限,甚至显式配置了lambda:GetFunctionCodeSigningConfig等相关权限,问题仍未解决
报错核心信息:
error getting Lambda Function (test_lambda) code signing config AccessDeniedException: status code: 403, request id: xxx
排查与解决思路
1. 检查区域服务特性差异
eu-central-2属于较新的AWS区域,部分Lambda特性的权限控制逻辑可能存在区域级别的特殊配置或服务启用延迟。确认该区域是否对Lambda Code Signing Config相关API有额外的权限限制,比如需要提前启用特定服务或存在区域专属的权限策略。
2. 升级Terraform AWS Provider版本
旧版本的AWS Provider可能对新区域的API支持不完善,导致权限校验逻辑异常。建议升级到最新稳定版的AWS Provider:
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 4.0.0" # 推荐使用官方最新稳定版本 } } }
3. 排查IAM权限边界与组织SCP
即使账号拥有AdministratorAccess,若存在以下情况仍可能被限制:
- 账号/用户组配置了权限边界,需确认边界策略是否包含
lambda:GetFunctionCodeSigningConfig权限 - AWS组织层面配置了服务控制策略(SCP),需检查SCP是否允许Lambda Code Signing相关操作
4. 显式指定资源区域
确保Terraform配置中Lambda资源明确绑定eu-central-2区域,避免跨区域权限校验问题:
resource "aws_lambda_function" "hello_world" { function_name = "test_lambda" role = aws_iam_role.lambda_role.arn handler = "index.handler" runtime = "nodejs16.x" filename = "lambda_function_payload.zip" region = "eu-central-2" }
5. 临时跳过Code Signing Config读取(应急方案)
若暂不依赖Code Signing Config功能,可通过Terraform生命周期配置跳过该属性的读取:
resource "aws_lambda_function" "hello_world" { # 其他资源配置... lifecycle { ignore_changes = [code_signing_config_arn] } }
内容的提问来源于stack exchange,提问作者Michal
相关产品推荐
相关产品推荐

