JBa*_*zuk 7 amazon-web-services swift aws-lambda
我找不到任何关于如何在Swift中调用Lambda函数的文档或示例,但我尝试使用Objective-C从文档中推断出我仍然遇到错误:
"Error in myFunction: ValidationException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes"
当我从swift调用lambda函数时,我似乎没有正确地将参数传递给函数,因为脚本试图写入DynamoDB但是其中一个参数是空的(当我在javascript /中调用它时,这个lambda脚本有效)节点).
let lambda = AWSLambda.defaultLambda()
let request = AWSLambdaInvocationRequest()
var context = [String: String]()
let jsonString = "{\"email\":\"example@example.com\",\"name\":\"example\"}"
let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
request.clientContext = jsonData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
request.functionName = "myFunction"
lambda.invoke(request).continueWithBlock( {
(currentTask: AWSTask!) -> AWSTask in
if (currentTask.error != nil) {
// failed to execute.
print("Error executing: ", currentTask.error)
task.setError(currentTask.error)
} else {
print("token: ", currentTask.result)
task.setResult(currentTask.result)
}
return currentTask
})
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要将payload参数设置为包含要传递的数据的映射.
let invocationRequest = AWSLambdaInvokerInvocationRequest()
invocationRequest.functionName = "myFunction"
invocationRequest.invocationType = AWSLambdaInvocationType.RequestResponse
invocationRequest.payload = ["email" : "example@example.com", "name" : "example"]
let lambdaInvoker = AWSLambdaInvoker.defaultLambdaInvoker()
let task = lambdaInvoker.invoke(invocationRequest).continueWithSuccessBlock() { (task) -> AWSTask! in
print("response: ", task.result)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4115 次 |
最近记录: |