私はいくつかの要素を持つ表を持っています。私は次のURLに基づいて特定の属性をユーザーがスキャンする、未認証(特定の属性をまだ認証されていないユーザーに戻したい)のファイングレイン・アクセス制御(表の特定の属性へのアクセスの制限)を使用しようとしていますAmazon DynamoDB:ファイングレイン・アクセス・コントロール特定の属性を持つスキャン
私は、次の役割を削除していた場合{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LimitAccessToSpecificAttributes",
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:Query",
"dynamodb:BatchGetItem",
"dynamodb:Scan"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:AccountID:table/MyTable"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:Attributes": [
"startDate",
"endDate"
]
},
"StringEqualsIfExists": {
"dynamodb:Select": "SPECIFIC_ATTRIBUTES",
"dynamodb:ReturnValues": [
"NONE",
"UPDATED_OLD",
"UPDATED_NEW"
]
}
}
}
]
}
は、それが動作します:
:"Condition": { "ForAllValues:StringEquals": { "dynamodb:Attributes": [ "startDate", "endDate" ] }, "StringEqualsIfExists": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES", "dynamodb:ReturnValues": [ "NONE", "UPDATED_OLD", "UPDATED_NEW" ] }
問題は、私は私のコード(アンドロイド)を実行しているとき、私は次の例外を取得していますということです0
ユーザー:arn:aws:sts :: AccountID:想定されるロール/ Cognito_XXXUnauth_Role/CognitoIdentityCredentialsには実行が許可されていません:dynamodb:リソースのスキャン:arn:aws:dynamodb:us-east-1:AccountID:table/MyTableサービス:AmazonDynamoDB;ステータスコード:400;エラーコード:AccessDeniedException;
私は何が間違っているのか知りたいのですが、例外が発生します。 特定の属性を取得する他の方法はありますか?
私は、次のAndroidのコードを使用しています:
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(getApplicationContext(),
"identityPoolId",
Regions.US_EAST_1
);
AmazonDynamoDBClient ddb = new AmazonDynamoDBClient(credentialsProvider);
ScanRequest scanRequest = new ScanRequest();
scanRequest = scanRequest.withProjectionExpression("startDate, endDate");
scanRequest.setTableName("MyTable");
try {
ScanResult scanResult = ddb.scan(scanRequest);
} catch (Exception ex) {
log(ex.getMessage());
}
任意の助けをいただければ幸いです。