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

AWS SAM部署的Lambda无法获取角色权限访问DynamoDB

Lambda无法执行DynamoDB PutItem操作的原因及解决办法

问题背景

部署包含Lambda的AWS SAM模板时,传入了现有DynamoDB表的ARN作为myTable参数,但调用API时触发权限错误:

User: arn:aws:sts::XXXXXXXXXX:assumed-role/APP_ROLE/LAMBDA_APP
is not authorized to perform: dynamodb:PutItem on resource:
arn:aws:dynamodb:eu-central-1:XXXXXXXXXX:table/TABLE_NAME because no
identity-based policy allows the dynamodb:PutItem action

核心原因

SAM模板中使用的DynamoDBCrudPolicy内置策略,其TableName参数要求传入纯表名(如TABLE_NAME),而非完整的表ARN。当你传入ARN时,IAM策略生成的资源路径会变成错误格式:arn:aws:dynamodb:region:account:table/[传入的ARN],导致权限规则无法匹配实际的DynamoDB表资源,最终触发权限拒绝。

解决方案

两种修复方式任选其一即可:

方式1:修改参数传入值

将部署时传入的myTable参数值从完整ARN改为纯表名,例如:

TABLE_NAME

方式2:自定义IAM策略替代内置策略

如果需要保留传入ARN的方式,替换模板中的DynamoDBCrudPolicy为自定义语句,直接引用ARN作为资源:

Policies:
  - Statement:
      - Effect: Allow
        Action:
          - dynamodb:PutItem
          - dynamodb:GetItem
          - dynamodb:UpdateItem
          - dynamodb:DeleteItem
        Resource: !Ref myTable

验证步骤

修改完成后重新部署SAM模板,再次调用API即可验证权限是否正常生效。

内容的提问来源于stack exchange,提问作者Rubén Aguado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:02:16