我在eu-west-1区域有一个DynamoDb表(arn:aws:dynamodb:eu-west-1:blah,blah:table / TestMyDynoApp)
我有一个凭据提供者:
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
MainActivity.this,
"eu-west-1:blah, blah", // Identity pool ID
Regions.EU_WEST_1 // Region
);
然后我得到一个clint实例并尝试获取表的实例:
AmazonDynamoDBClient dbClient = new AmazonDynamoDBClient(credentialsProvider);
Table dbTable = Table.loadTable(dbClient, "TestMyDynoApp");
但我不断收到此错误:
由以下原因造成:com.amazonaws.AmazonServiceException:用户:arn:aws:sts :: blah,blah:assumed-role / Cognito_DynamoDbDemoUnauth_Role / CognitoIdentityCredentials未经授权执行:dynamodb:DescribeTable on资源:arn:aws us-east-1:blah,blah:table / TestMyDynoApp(服务:AmazonDynamoDB;状态代码:400;错误代码:AccessDeniedException;请求ID:EE2BA50DQ063FUGP2RDHPFTOO7VV4KQNSO5AEMVJF66Q9ASUAAJG)
它引用了 us-east-1 中的表,该表不存在!而不是我存在的 eu-west-1 中的表!
为什么会这样?
感谢任何帮助。
谢谢
答案 0 :(得分:0)
在尝试获取表的实例之前,我应该调用:
dbClient.setRegion(Region.getRegion(Regions.EU_WEST_1));
对于Amazon而言确实是糟糕的文献资料。他们的示例显示了在CognitoCachingCredentialsProvider()中设置区域,没有提到必须单独设置区域!