1

相比解析,AWS已经有点学习曲线:)的如何让未经认证的Cognito用户访问AWS上的Dynamobdb?

  • 我创建了dynamodb表名为 “dynamotest”
  • IAM表明,我已经定义了以下角色(policygen-Cognito_awst1Unauth_Role-201603071632) :

{ “版本”: “二〇一二年十月一十七日”, “声明”:[{ “SID”: “Stmt1457368244000”, “效果”: “允许”, “行动”:[ “dynamodb:*” ], “资源”:[ “ARN:AWS:dynamodb:EU-西-1:579313493028:表/ dynamotest” ] } ] }

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

//测试访问迪纳摩

 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的凭据以创建未经验证的useder Cognito身份池ID。 Cognito - 与这些凭据同步很好。

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

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

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

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

请帮助 - 谢谢!

回答

1

使用具有未经身份验证的Cogntio标识的dynamodb的一般流程是您创建标识池并将自动生成的非法策略修改为允许访问您的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

+0

什么样的政策你没有指定?这是我相信的主要问题 – batmaci

相关问题