AWS Android无法识别DynamoDb表

时间:2018-08-12 15:42:24

标签: android amazon-dynamodb amazon-cognito

我在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 中的表!

为什么会这样?

感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

在另一个Stackoverflow question

中找到了解决方案

在尝试获取表的实例之前,我应该调用:

 dbClient.setRegion(Region.getRegion(Regions.EU_WEST_1));

对于Amazon而言确实是糟糕的文献资料。他们的示例显示了在CognitoCachingCredentialsProvider()中设置区域,没有提到必须单独设置区域!