AWS Lambda swift SDK身份验证与用户池

时间:2018-03-16 23:04:05

标签: ios swift xcode aws-lambda aws-userpools

我正在使用带有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角色。用户已正确登录并且令牌有效。不知道我在哪里错了。

1 个答案:

答案 0 :(得分:0)

尝试将AWSLambdaInvocation-DynamoDB附加到角色。