Amazon web services 通过身份验证的Cognito用户访问DynamoDB表的AWS IAM策略问题

Amazon web services 通过身份验证的Cognito用户访问DynamoDB表的AWS IAM策略问题,amazon-web-services,amazon-dynamodb,amazon-cognito,amazon-iam,Amazon Web Services,Amazon Dynamodb,Amazon Cognito,Amazon Iam,我在通过已成功验证的Cognito用户访问新的DynamoDB表时遇到问题 尝试扫描表时(使用AWS JavaScript SDK),我得到以下AccessDeniedException: 已通过身份验证的Cognito用户策略已通过以下DynamoDB部分进行扩展: { "Sid": "AllowedCatalogActions", "Effect": "Allow", "Action": [ "dynamodb:BatchGetItem", "dynamodb

我在通过已成功验证的Cognito用户访问新的DynamoDB表时遇到问题

尝试扫描表时(使用AWS JavaScript SDK),我得到以下AccessDeniedException:

已通过身份验证的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表吗,只要我像上面那样指定表资源就行了吗?或者我是否还需要在表的“访问控制”选项卡下添加

我可以说,我在我的非根管理员IAM角色(上面用my-ACCOUNT-NUM表示)下创建了VideoCatalog DynamoDB表。这是个问题吗?(在尝试移动到DynamoDB表之前,我使用S3上的JSON文件作为视频目录。)


我糊涂了

查看AWS的错误消息和您提供的策略文档,我可以看到这里有两个不同的区域

AWS表示您的用户无权访问AWS:dynamodb:us-east-1:MY-ACCOUNT-NUM:table/VideoCatalog,而您的策略文档提供对AWS:dynamodb:us-east-2:MY-ACCOUNT-NUM:table/VideoCatalog的访问


您是否错误地在两个不同的区域调配资源

从本质上说,这不是错的。。。但是谢谢你注意到这一点!该表肯定位于us-east-2区域,而Cognito用户池位于us-east-1区域。由于我在尝试编程(使用AWS JavaScript SDK)扫描VideoCatalog表时没有指定区域,因此必须假定它位于同一区域。我没有理由不能将DynamoDB表与我的Cognito用户池放在同一个区域中。。所以我会这样做,并报告回来!你完全正确。很容易错过美国东部1对2的比赛,但现在我知道要先考虑地区问题!谢谢
{
  "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"
  ]
}