我原本以为这个问题是由于区域不匹配造成的,但是在更改区域之后,我在尝试在此处找到的Amazon AWS示例时仍然会遇到以下错误:
AmazonServiceException: User: arn:aws:sts::[My Account
ARN]:assumed-role/Cognito_AndroidAppUnauth_DefaultRole/ProviderSession
is not authorized to perform: dynamodb:DescribeTable on resource:
arn:aws:dynamodb:us-east-1:[My Account ARN]:table/test_table (Service:
AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException;
Request ID: BBFTS0Q8UHTMG120IORC2KSASVVV4KQNSO5AEMVJF66Q9ASUAAJG)
Run Code Online (Sandbox Code Playgroud)
一切都或多或少相同,我改变的唯一事情就是将DBclient区域更改US_EAST_1为托管我的测试表的位置,并使用通过以下生成的"Amazon Cognito Starter Code"页面中的信息修改Constants文件Cognito入门文档.
对于我的Cognito_AndroidAppUnauth_DefaultRole角色策略,我修改了默认的移动分析和同步服务权限,还包括对所有表的所有操作的访问权限,无论是否存在:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CognitoPolicy",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Effect": "Allow",
"Resource": [
"*"
]
},
{
"Sid": "DynamoDBPolicy",
"Effect": "Allow",
"Action": [
"dynamodb: *"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么在使用正确的区域并且Unauth策略应该允许表访问时它声称它没有权限?
编辑:在DynamoDB资源(创建表)上调用方法时的Stacktrace,它是否有用
com.amazonaws.AmazonServiceException: …Run Code Online (Sandbox Code Playgroud) android amazon-web-services amazon-dynamodb amazon-iam amazon-cognito