如何让未经身份验证的 Cognito 用户访问 AWS 上的 Dynamobdb?

how do I let unauthenticated Cognito users access the Dynamobdb on AWS?

与 Parse 相比,AWS 有一些学习曲线:)

{ "Version": "2012-10-17", "Statement":[ { "Sid": "Stmt1457368244000", "Effect": "Allow", "Action": [ "dynamodb:*" ], "Resource": [ "arn:aws:dynamodb:eu-west-1:579313493028:table/dynamotest" ] } ] }

在 Xamarin 应用程序中,我有以下代码:

// 测试对 Dynamo 的访问

        var client = new AmazonDynamoDBClient(credentials, RegionEndpoint.EUWest1);

        Table table = Table.LoadTable(client, "dynamotest");

        var book = new Document();
        book["Id"] = 101;
        book["Title"] = "Book 101 Title";
        book["ISBN"] = "11-11-11-11";
        book["Authors"] = new List<string> { "Author 1", "Author 2" };
        book["InStock"] = new DynamoDBBool(true);
        book["QuantityOnHand"] = new DynamoDBNull();


        table.PutItemAsync(book);

"credentials" 是使用 Cognito 身份池 ID 创建的未经身份验证的用户的 Cognito 凭据。 Cognito 与这些凭据同步工作正常。

运行这段代码没有数据放table.I也试过使用对象持久化模型,结果一样。

我错过了什么步骤?没有错误 - 如果数据没有从 table 中丢失,我什至不知道出了什么问题。

所以两个问题: 1/ 如何为未经身份验证的 Cognito 用户启用对 Dynamodb 的访问。我需要创建一些任意用户并附加 role/policy 吗??? Regionpoint 有问题吗(因为我在欧洲)?

2/ 如何使用适用于 Xamarin 的 AWS 开发工具包检查 errors/problems?

请帮忙 - 谢谢!!

使用具有未经身份验证的 Cogntio 身份的 dynamodb 的一般流程是您创建一个身份池并将自动生成的 unauth 策略修改为允许访问您的 dynamodb table 的新策略。然后,您可以将 Cogntio 凭据用于未经身份验证的身份,以对 dynamodb 执行操作。

如果您可以将您的 'table.PutItemAsync(book) 更改为 'await table.PutItemAsync(book)' 然后将该代码包装在 try/catch 块中,它将捕获您可以记录的服务异常并调试实际错误是什么。

以下是一些特定于您的用例的文档,用于将 DynamoDb 与 Cogntio 结合使用

http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/dynamodb_om.html http://docs.aws.amazon.com/mobile/sdkforxamarin/developerguide/dynamodb-integration-docmodel.html