AWS DynamoDB 写入权限不起作用



我正在做一个与DynamoDB连接的概念证明,但我似乎有权限问题。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "dynamodb:*"
        ],
        "Resource": [
            "arn:aws:dynamodb:us-west-1:172777662485:table/*"
        ],
        "Condition": {
            "ForAllValues:StringEquals": {
                "dynamodb:LeadingKeys": [
                    "${www.amazon.com:user_id}"
                ]
            }
        }
    }
]

}

代码:

DynamoDBContext context = new DynamoDBContext(new AmazonDynamoDBClient("...", "...", new AmazonDynamoDBConfig() { RegionEndpoint = RegionEndpoint.USWest1, MaxErrorRetry = 6 }));
var writeContext = context.CreateBatchWrite<Music>();
writeContext.AddPutItem(new Music() { Artist = "Test Artist", SongTitle = "SongTitle" });
writeContext.Execute();

我遇到的错误是:

arn:aws:iam::...:user/DynamoDBTestUser is not authorized to perform: dynamodb:BatchWriteItem on resource: arn:aws:dynamodb:us-west-1:172777662485:table/Music

有人在这里看到任何错误吗?

谢谢

您的策略似乎基于此文档中的一些样本:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html

但是,您的代码似乎没有添加带有与用户名匹配的分区键的记录。

因此,有2种可能的解决方案,具体取决于您所需的结果。

解决方案1:

假设您只想将记录插入表中,则可以使用以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "dynamodb:*"
        ],
        "Resource": "*"
    }]
}

此策略授予用户完全DynyoDB访问任何DynamoDB资源。

解决方案2:

如果要限制限制对用户仅读取/放置记录的表的访问,则需要确保使用IAM用户名填充Music结构中的主要密钥属性。

<</p>

最新更新