0

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

4

1 回答 1

0

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

于 2018-11-03T11:05:39.660 回答