我正在使用带有iOS移动应用的用户池。
我想使用sdk访问我的lambda函数,但无法找到有关如何提供必要身份验证的文档。如果我使用带有用户池的sdk,还不清楚我是否需要使用API网关。
我正在使用此方法来访问我的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角色。用户已正确登录并且令牌有效。不知道我在哪里错了。
答案 0 :(得分:0)
尝试将AWSLambdaInvocation-DynamoDB附加到角色。