簡體   English   中英

Amazon DynamoDB 和 IAM - 允許更新項更改單個屬性

[英]Amazon DynamoDB & IAM - Allow update-item to change a single attribute

描述:

我有一個包含 50 個項目的表,每個項目至少有三個屬性NameAgeE-mail

用戶應該能夠:

  1. 對特定項目的Name執行update

  2. 對所有項目的屬性執行以下操作:

  • 批量獲取項目
  • 條件檢查項
  • 描述表
  • 獲取項目
  • 掃描
  • 資源標簽列表
  • 詢問

我試過的:

我在 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"]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM