[英]How to call an AWS Python Lambda function from another Node.js Lambda function
[英]call method of lambda function from another lambda function - Python
我可以从另一个lambda函数调用lambda函数,但默认情况下它转到处理程序方法。 如何调用其中定义的其他方法?
假设有lambda函数master.py,它将具有可以被其他lambda函数使用的通用方法,这样我就不必在每个函数中一次又一次地编写它们。 现在,我想从其他lambda函数调用master.py的方法(比如说getTime(),authenticateUser()等)。
基本上,我想保留一个lambda函数,它将具有可以由其他lambda函数使用的通用方法。
任何帮助表示赞赏。
下面是我尝试从另一个调用一个lambda函数的代码(我从这个问题中获取了代码),但是转到了handler()方法:
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
import boto3
import json
lambda_client = boto3.client('lambda')
a=[1,2,3]
x = {"list" : a}
invoke_response = lambda_client.invoke(FunctionName="functionA",
InvocationType='RequestResponse',
Payload=json.dumps(x))
print (invoke_response['Payload'].read())
{
"params": [1, 2, 3, "abc"]
}
您可以在调用invoke时在事件参数内传递运行所需的lambda函数方法所需的数据。 如果您在lambda_handler的顶部将以下代码从lambda函数中包含您要调用的方法。
def lambda_handler(event, context):
"""
Intermediary method that is invoked by other lambda functions to run methods within this lambda
function and return the results.
Parameters
----------
event : dict
Dictionary specifying which method to run and the arguments to pass to it
{function: "nameOfTheMethodToExecute", arguments: {arg1: val1, ..., argn: valn}}
context : dict
Not used
Returns
-------
object : object
The return values from the executed function. If more than one object is returned then they
are contained within an array.
"""
if "function" in event:
return globals()[event["function"]](**event["arguments"])
else:
# your existing lambda_handler code...
然后,使用以下方法invoke
来调用该方法并从另一个lambda函数获取返回值。
import json
# returns the full name for a lambda function from AWS based on a given unique part
getFullName = lambda lambdaMethodName: [method["FunctionName"] for method in lambda_client.list_functions()["Functions"] if lambdaMethodName in method["FunctionName"]][0]
# execute a method in a different lambda function and return the results
def invoke(lambda_function, method_name, params):
# wrap up the method name to run and its parameters
payload = json.dumps({"function": method_name, "arguments": params})
# invoke the function and record the response
response = lambda_client.invoke(FunctionName=getFullName(lambda_function), InvocationType='RequestResponse', Payload=payload)
# parse the return values from the response
return json.loads(response["Payload"].read())
[rtn_val_1, rtn_val_2] = invoke("fromLambdaA", "desiredFunction", {arg1: val1, arg2: val2})
请注意,您附加到调用另一个lambda函数的函数的lambda策略将需要两个策略:“ lambda:ListFunctions”和“ lambda:InvokeFunction”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.