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

时间:2016-03-07 18:07:51

标签: amazon-web-services xamarin amazon-dynamodb amazon-cognito

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

  • 我在dynamodb中创建了一个名为" dynamotest"
  • 的表
  • IAM显示我定义了以下角色(policygen-Cognito_awst1Unauth_Role-201603071632):

{     "版本":" 2012-10-17",     "陈述":[         {             " Sid":" Stmt1457368244000",             "效果":"允许",             "行动":[                 " dynamodb:*"             ]             "资源":[                 " ARN:AWS:dynamodb:EU-西-1:579313493028:表/ 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);

&#34;凭证&#34;是使用Cognito标识池ID创建的未经身份验证的使用者的Cognito凭据。 Cognito-与这些凭证同步工作正常。

运行此代码时,表中没有数据。我也尝试使用具有相同结果的对象持久性模型。

我错过了哪些步骤?没有错误 - 如果表格中没有数据丢失,我甚至不知道出现了什么问题。

所以有两个问题: 1 /如何为未经身份验证的Cognito用户启用Dynamodb访问权限。我是否需要创建一些任意用户并附加角色/策略??? Regionpoint是否存在问题(我在欧洲)?

2 /如何使用AWS SDK for Xamarin检查错误/问题?

请帮助 - 谢谢!!

1 个答案:

答案 0 :(得分:1)

使用具有未经身份验证的Cogntio身份的dynamodb的一般流程是您创建一个身份池并将自动生成的unauth策略修改为允许访问您的dynamodb表的新策略。然后,您可以使用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