2016-12-09 16 views
0

dynamodbに接続して概念証明していますが、権限に問題があるようです。AWS 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 

誰もがここで間違って何も見えていますか?

おかげ

答えて

0

あなたのポリシーは、この文書からのサンプルの一部に基づいているように見える:

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

しかし、あなたのコードは、パーティション・キーのマッチングでレコードを追加するためには表示されませんユーザー名。

希望する結果に応じて、2つの解決策があります。

解決方法1:

は、あなたは、単にテーブルにレコードを挿入すると仮定すると、あなたのようなポリシーを使用することができます。

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

このポリシーは、すべてのDynamoDBのへのユーザーの完全DynamoDBのアクセスを許可しますリソース。

解決方法2:あなただけの彼らのために/プット・レコードを読み取るために、ユーザーを制限するテーブルへのアクセスを制限したい場合は、あなたがあなたのMusic構造に移入され、あなたの主キー属性を確認する必要があり

あなたのIAMユーザー名。

+0

違いを見て、私の元のポリシーのほとんどを維持することができました。私はあなたが指摘した条件を削除し、それはそれを行いました。 – user2981810

関連する問題