我在我的 iOS 移动应用程序中使用用户池。
我想使用 sdk 访问我的 lambda 函数,但找不到有关如何提供必要身份验证的文档。如果我将 sdk 与用户池一起使用,也不清楚是否需要使用 API Gateway。
我正在使用这种方法来访问我的 lambda 函数:
private func invokeLambda(data: [String: Any]) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let pool = appDelegate.pool
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "MyIdentityPoolId", identityProviderManager:pool)
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
let lambdaInvoker = AWSLambdaInvoker.default()
let jsonObject: [String: Any] = data
lambdaInvoker.invokeFunction("myFunction", jsonObject: jsonObject).continueWith(block: {(task:AWSTask<AnyObject>) -> Any? in
if let error = task.error as NSError? {
if (error.domain == AWSLambdaInvokerErrorDomain) && (AWSLambdaInvokerErrorType.functionError == AWSLambdaInvokerErrorType(rawValue: error.code)) {
print("Function error: \(error.userInfo[AWSLambdaInvokerFunctionErrorKey])")
} else {
print("Error: \(error)")
}
return nil
}
// Handle response in task.result
if let JSONDictionary = task.result as? NSDictionary {
print("Result: \(JSONDictionary)")
print("resultKey: \(JSONDictionary["resultKey"])")
}
return nil
})
}
我收到以下错误:
"AccessDeniedException"
编辑#1
我得到的错误表明 unauth 角色被用于访问而不是 auth 角色。用户已正确登录并且令牌有效。不知道我哪里出错了。