这是我得到的错误:
AWSiOSSDKv2 [错误] AWSMobileAnalyticsDefaultDeliveryClient.m 行:282 | -[AWSMobileAnalyticsDefaultDeliveryClient submitEvents:andUpdatePolicies:] | 无法成功地将事件传递到服务器。响应码:0。 错误信息: 错误域=com.amazonaws.AWSCognitoIdentityErrorDomain 代码=6 操作无法完成。
我在 IAM 中有 AuthRole 并具有以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": [
"*"
]
}
]
}
还有一个 Unauth 角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": [
"*"
]
}
]
}
条件下IAM 中提及的字符串cognito-identity.amazonaws.com:aud
与我的应用程序中声明的内容相匹配。
我不明白问题出在哪里。
编辑
设置代码 (Swift)。
private func _configureAWSServiceManager() {
let credentialsProvider = AWSCognitoCredentialsProvider(
regionType: Config().amazonRegionType,
identityPoolId: Config().amazonCognitoIdentityPool)
let configuration =
AWSServiceConfiguration(region: Config().amazonRegionType,
credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration =
configuration
}
private func _configureMobileAnalytics() {
let mobileAnalyticsConfiguration = AWSMobileAnalyticsConfiguration()
mobileAnalyticsConfiguration.transmitOnWAN = true;
let analytics = AWSMobileAnalytics(
forAppId: Config().amazonMobileAnalyticsAppId,
configuration: mobileAnalyticsConfiguration,
completionBlock: nil)
_analytics = analytics
}
application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)
两者都在函数中的 AppDelegate 中依次调用。
编辑/解决方案:经过另一次检查,创建 Cognito 身份池的一个步骤确实创建了一个角色,但这个角色没有分配给unauthenticated role
......愚蠢的事情,一如既往地在 AWS 上进行正确的管理。