Amazon DynamoDB & IAM - 允许更新项目更改单个属性



描述:

我有一个包含50个项目的表,每个项目至少有三个属性NameAgeE-mail

用户应该能够:

  1. 对特定项目的Name执行update

  2. 对所有物品的属性执行以下操作:

  • BatchGetItem
  • ConditionCheckItem
  • 描述表格
  • GetItem
  • 扫描
  • 列出资源的标记
  • 查询

我尝试了什么:

我在IAM中使用了此策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "UserNameUpdate",
"Effect": "Allow",
"Action": "dynamodb:UpdateItem",
"Resource": "arn:aws:dynamodb:<region>:<account>:table/<tableName>",
"Condition": {
"StringEquals": {
"dynamodb:ReturnValues": [
"NONE",
"UPDATED_OLD",
"UPDATED_NEW"
]
},
"ForAllValues:StringLike": {
"dynamodb:Attributes": "Name"
}
}
},
{
"Sid": "GetAll",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:ConditionCheckItem",
"dynamodb:DescribeTable",
"dynamodb:GetItem",
"dynamodb:Scan",
"dynamodb:ListTagsOfResource",
"dynamodb:Query"
],
"Resource": "arn:aws:dynamodb:<region>:<account>:table/<tableName>"
}
]
}

结果:

  • 当尝试更新项目时,我得到AccessDeniedException
  • 当尝试其他操作时,它们正常工作

我不太喜欢IAM规则,尤其是Condition部分😕.任何帮助都将不胜感激。

Name是DynamoDB中的保留字。也许这是你的问题?

我认为应该有一个值数组:

"ForAllValues:StringLike": {
"dynamodb:Attributes": ["Name"]
}

最新更新