与 Parse 相比,AWS 有一些学习曲线:)
- 我在 dynamodb 中创建了一个名为“dynamotest”的表
- IAM 显示我定义了以下角色 (policygen-Cognito_awst1Unauth_Role-201603071632):
{ "版本": "2012-10-17", “陈述”: [ { "Sid": "Stmt1457368244000", "效果": "允许", “行动”: [ “动态模块:*” ], “资源”:[ “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);
“凭据”是使用 Cognito 身份池 ID 创建的未经身份验证的用户的 Cognito 凭据。 Cognito-Synching 与这些凭据工作正常。
运行这段代码,表中没有数据。我也尝试使用对象持久化模型得到相同的结果。
我错过了什么步骤?没有错误 - 如果表中没有丢失数据,我什至不知道出了什么问题。
所以两个问题: 1/如何为未经身份验证的 Cognito 用户启用对 Dynamodb 的访问。我是否需要创建一些任意用户并附加角色/策略??? Regionpoint 有问题吗(因为我在欧洲)?
2/如何使用适用于 Xamarin 的 AWS 开发工具包检查错误/问题?
请帮忙 - 谢谢!!
最佳答案
使用具有未经身份验证的 Cogntio 身份的 dynamodb 的一般流程是您创建一个身份池并将自动生成的 unauth 策略修改为允许访问您的 dynamodb 表的新策略。然后,您可以将 Cogntio 凭据用于未经身份验证的身份,以对 dynamodb 执行操作。
如果您可以将“table.PutItemAsync(book)”更改为“await table.PutItemAsync(book)”,然后将该代码包装在 try/catch block 中,它将捕获服务异常,然后您可以记录和调试实际错误是什么。
以下是一些特定于您的用例的文档,用于将 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
关于amazon-web-services - 如何让未经身份验证的 Cognito 用户访问 AWS 上的 Dynamobdb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850806/