1

我正在使用带有 Cognito 的 AWS DynamoDB 来授权来自 Android 的访问(迄今为止未经授权的用户)。我的数据库在eu-central-1,我使用com.amazonaws:aws-android-sdk-ddb:2.2.8,作为:

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(context,
    "eu-central-1:XXX", 
    Regions.EU_CENTRAL_1
);
AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);
final DynamoDBMapper mapper = new DynamoDBMapper(ddbClient);

在日志中我看到:

AmazonWebServiceClient:在区域元数据中找不到 {cognito-identity, eu-central-1},尝试使用该区域的标准模式构造端点:“cognito-identity.eu-central-1.amazonaws.com”

但是,当我尝试获取数据时,我得到:

用户:arn:aws:sts::XXX:assumed-role/XXX/CognitoIdentityCredentials 无权执行:dynamodb:GetItem on resource:arn:aws:dynamodb:us-east-1:XXX:table/XXX

它似乎连接到 us-east-1 而不是指定的 EU 连接。角色可以访问适当的数据库资源(欧盟之一),并且美国东部没有 dynamoDB。我应该在哪里指定欧盟地区但我错过了它的任何想法?

4

1 回答 1

0

哦,正确的方法是:

ddbClient.setRegion(Region.getRegion(Regions.EU_CENTRAL_1));
于 2017-01-22T16:30:10.137 回答