当前位置:  开发笔记 > 编程语言 > 正文

AWS JS SDK,IAM和DynamoDB问题

如何解决《AWSJSSDK,IAM和DynamoDB问题》经验,为你挑选了1个好方法。

使用AWS JS SDK + DynamoDB时出现此错误:

AccessDeniedException:User:arn:aws:its :: [accnt id]:assume-role/dynamoIntroRole/web-identity无权执行:dynamodb:PutItem on resource:arn:aws:dynamodb:us-west-2:[ accnt id]:table/websiteTest

这是我用过的HTML/JS:

Insert title here



以下是我附加到所使用角色的IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:[my account deleted]:table/websiteTest"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": [
                        "${graph.facebook.com:id}"
                    ]
                }
            }
        }
    ]
}

我错过了什么?



1> 小智..:

您遇到的问题与IAM策略中指定的条件有关.它目前指定了细粒度的访问控制.

"Condition": {
            "ForAllValues:StringEquals": {
                "dynamodb:LeadingKeys": [
                    "${graph.facebook.com:id}"
                ]
            }
        }

条件要求分区键与使用的Facebook ID匹配.如果您没有指定的分区键,则会抛出AccessDeniedException.

因此,您需要创建一个以Facebook ID作为分区键的表,或者从IAM策略中删除条件.另请注意,分区键必须是字符串才能使用细粒度的访问控制.

资源:

DynamoDB的细粒度访问控制

细粒度访问控制的示例策略

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有