android - AWS Android 无法识别 DynamoDb 表
问题描述
我在 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 resource:arn:aws:dynamodb:us-east -1:blah, blah:table/TestMyDynoApp(服务:AmazonDynamoDB;状态代码:400;错误代码:AccessDeniedException;请求 ID:EE2BA50DQ063FUGP2RDHPFTOO7VV4KQNSO5AEMVJF66Q9ASUAAJG)
它引用了us-east-1中不存在的表!而不是我在eu-west-1中的表,它确实存在!
为什么会这样?
感谢任何帮助。
谢谢
解决方案
在尝试获取表的实例之前,我应该调用:
dbClient.setRegion(Region.getRegion(Regions.EU_WEST_1));
亚马逊方面的文档真的很糟糕。他们的示例显示在 CognitoCachingCredentialsProvider() 中设置区域,并且没有提到必须单独设置它!
推荐阅读
- sql-server - 由于区分大小写,Tablediff 实用程序未创建文件
- phaser-framework - 调试对象未定义
- vba - 为什么我在一个表单上而不是另一个表单上收到运行时错误 2185?
- excel - 在excel选择中交换2个值
- visual-studio - 在 Visual Studio 中重定向生成输出
- python - 为什么我需要在 Python/Pytorch 中使用两次导入?
- python - 多行窗口和列表
- javascript - 锁定服务不适用于库脚本 App Script || AppendRow 覆盖数据,因此是 while 循环
- xml - Azure 数据工厂 HTTP 连接器不返回 XML 输出
- rust - SQL 表有主键但报错“Diesel 只支持有主键的表。表错误没有主键”