我无法通过成功通过身份验证的Cognito用户访问新的DynamoDB表。
尝试扫描表(使用AWS JavaScript SDK)时,我得到以下AccessDeniedException:
Unable to scan. Error: {
"message": "User: arn:aws:sts::MY-ACCOUNT-NUM:assumed-role/Cognito_VODStreamTestAuth_Role/CognitoIdentityCredentials
is not authorized to perform: dynamodb:Scan on resource: arn:aws:dynamodb:us-east-1:MY-ACCOUNT-NUM:table/VideoCatalog",
"code": "AccessDeniedException",
"time": "2019-01-27T02:25:27.686Z",
"requestId": "blahblah",
"statusCode": 400,
"retryable": false,
"retryDelay": 18.559011800834146
}
已验证的Cognito用户策略已通过以下DynamoDB部分进行了扩展:
{
"Sid": "AllowedCatalogActions",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:GetItem",
"dynamodb:Scan",
"dynamodb:Query",
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-2:MY-ACCOUNT-NUM:table/VideoCatalog"
]
}
这是否足以让经过身份验证的Cognito用户访问我可能创建的任何DynamoDB表,只要我像上面那样指定表资源?还是我还需要在表格的“访问控制”标签下添加"Fine-grained access control"?
我可以说我是在非根管理员IAM角色(上面由MY-ACCOUNT-NUM表示)下创建的VideoCatalog DynamoDB表。那是问题吗? (在尝试移至DynamoDB表之前,我曾在S3上使用JSON文件作为视频目录。)
IAM感到困惑!
答案 0 :(得分:1)
查看来自AWS的错误消息和您提供的策略文档,我可以看到这里有两个不同的区域。
AWS表示您的用户无权访问aws:dynamodb: us-east-1 :MY-ACCOUNT-NUM:table / VideoCatalog,而您的策略文档却提供对aws的访问:dynamodb: us-east-2 :MY-ACCOUNT-NUM:表格/视频目录。
您是否可能会错误地在两个不同的区域中配置资源?