为AWS Lambda添加OpenTelemetry层时遇GetLayerVersion权限错误
AWS Lambda添加OpenTelemetry层权限错误排查与解决
问题描述
在为Python Lambda函数添加ARN为arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-python-x86_64-ver-1-17-0:1的OpenTelemetry层时,触发如下权限错误:
"arn:aws:iam::myaccountid:root is not authorized to perform:lambda:GetLayerVersion on resource arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-python-x86_64-ver-1-17-0:1"
已尝试的操作包括:添加lambda:GetLayerVersion权限、为Lambda配置全权限、创建拥有全权限的IAM用户,但问题未解决。使用个人AWS免费套餐账户,目标是配置OpenTelemetry将遥测数据发送至Grafana。
排查与解决步骤
- 验证层的跨账户访问权限:该层所属账户901920570463为AWS在ap-southeast-2区域的托管账户,但需确认此层是否开放跨账户访问权限。部分共享层默认仅允许同账户使用,若为第三方共享层,需层的所有者配置资源策略开放权限。
- 检查IAM权限限制:即使配置了全权限,也要排查是否存在IAM边界策略或**服务控制策略(SCP)**拦截请求。免费套餐账户默认无SCP,但如果曾设置过IAM边界策略,可能会限制
lambda:GetLayerVersion操作。 - 使用标准AWS托管ADOT层ARN:AWS托管的ADOT Python层命名格式为
arn:aws:lambda:ap-southeast-2:901920570463:layer:aws-otel-python<版本号>:<层版本>(例如Python3.8对应aws-otel-python3-8),你使用的ARN命名格式非标准,建议确认层的合法性,优先使用官方托管层。 - 自行部署ADOT层到本地账户:若跨账户层无法访问,可手动将ADOT Python层代码打包部署到自己的账户:
- 从ADOT官方仓库获取对应版本的Python层代码
- 将代码打包为zip格式
- 在Lambda控制台创建自定义层并上传zip包
- 为Lambda函数添加本地账户内的自定义层
- 核对资源ARN准确性:确认层ARN的区域、账户ID、层名称、版本号无拼写错误,错误的ARN会导致权限验证失败。
内容的提问来源于stack exchange,提问作者Yadukrishnan P
相关产品推荐
相关产品推荐

