【发布时间】:2015-04-13 07:13:20
【问题描述】:
我们正在使用 Unity 开发一款手机游戏,我们将使用 AWS 服务来存储所有用户数据和游戏内容。
我们已经构建了所有集成并存档以与 AWS SDK 集成以实现统一,DynamoDB 和 S3 正在按预期工作,但我们在使用 CognitoStore 时遇到了一些问题。
当我们调用 _ds.Synchronize() 或 _syncManager.RefreshDatasetMetadataAsync() 时,我们会收到 403 Forbidden Error。
WebException: 403 Forbidden Rethrow as AmazonServiceException: 403 禁止重新抛出为 DataStorageException:无法列出记录 数据集:帐户
简化政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": [
"*"
]
}
]
}
完整政策:http://goo.gl/dcUkPC
代码:
try {
CognitoSyncClientManager.init();
_syncManager = CognitoSyncClientManager.CognitoSyncManagerInstance;
} catch (Exception ex) {
Debug.LogException (ex);
return;
}
_dsAccount = _syncManager.OpenOrCreateDataset ("Account");
_dsAccount.Put ("test", "1");
_dsAccount.Synchronize ();
不确定我们是否遗漏了什么,但我花了 3 天时间搜索并尝试解决此问题。如果你们中的任何人能帮助解决这个问题,我将不胜感激。
你们中有人知道如何解决这个问题吗?
注意:我们在 Unity 3D 示例项目中遇到了同样的问题。
2015 年 12 月 2 日更新 将 SDK 更新到 1.0.1,但我收到错误 400 Bad request。仍在努力使其发挥作用。
谢谢!
【问题讨论】:
-
不确定是否有帮助,但源代码是:
try { CognitoSyncClientManager.init(); _syncManager = CognitoSyncClientManager.CognitoSyncManagerInstance; } catch (Exception ex) { Debug.LogException (ex); return; } dsAccount = _syncManager.OpenOrCreateDataset ("Account"); _dsAccount.Put ("test", "1"); _dsAccount.Synchronize (); -
一些可能对我们有所帮助的附加信息:1) 您使用的是经过身份验证的还是未经身份验证的访问? 2) 你确定你的 CognitoCredentials 工作正常吗? 3)您提到 S3 和 DynamoDB 正在工作,但不包括在上述政策中。你确定这是你使用的那个吗?
-
@BobKinney 感谢您的回复。 1) 未经身份验证,但展位可与其他服务一起使用。 2) 我可以看到我用来测试的所有身份,我还可以访问 DynamoDb 和 S3。 3) 我正在使用 IAM 来完全访问 S3 和 DynamoDB,我只是简化了测试,完整的策略是:Policy
标签: c# amazon-web-services unity3d amazon-cognito