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

配置Lambda的IAM策略实现DynamoDB条件访问时遇权限拒绝错误

解决AWS IAM策略权限拒绝问题

问题原因分析

  • 原策略使用ForAllValues:StringEquals条件,该条件适用于多值集合匹配,单值场景下应改用StringEquals。
  • 未确认Cognito身份池的主体标签映射是否生效,Lambda调用时的凭证可能未携带username标签。
  • 资源配置未使用DynamoDB表的完整ARN,仅填写TableARN无法匹配实际资源。
  • Lambda执行角色的关联或Cognito身份池的信任关系可能存在配置错误。

修正后的IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:GetItem",
            "Resource": "arn:aws:dynamodb:你的区域ID:你的AWS账号ID:table/你的表名称",
            "Condition": {
                "StringEquals": {
                    "dynamodb:LeadingKeys": "${aws:PrincipalTag/username}"
                }
            }
        }
    ]
}

关键检查步骤

  • 确认Cognito身份池的映射配置:进入身份池编辑页面,在Cognito用户池的属性映射中,确保sub已正确映射到username主体标签。
  • 验证Lambda的凭证来源:Lambda必须使用Cognito身份池生成的临时凭证调用DynamoDB,而非Lambda自身的执行角色(后者不会携带Cognito的主体标签)。
  • 查看CloudTrail日志:通过日志确认权限拒绝事件中的principalTag是否存在、dynamodb:LeadingKeys的值是否与username一致,以及资源ARN是否匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:17:54