首页 > 解决方案 > 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中的表,它确实存在!

为什么会这样?

感谢任何帮助。

谢谢

标签: androidamazon-dynamodbamazon-cognito

解决方案


在另一个Stackoverflow 问题中找到了解决方案

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

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

亚马逊方面的文档真的很糟糕。他们的示例显示在 CognitoCachingCredentialsProvider() 中设置区域,并且没有提到必须单独设置它!


推荐阅读