![](/img/trans.png)
[英]How to invoke AWS lambda from another lambda within SAM local?
[英]AWS Lambda - Invoke a method of another lambda function
我正在尝试从另一个 lambda 调用一个 lambda 的不同于默认处理程序方法的方法。 但不知道如何去做。 从文档中不清楚。 这是我的代码
Lambda 函数 1: my_function1
import json
import boto3
def lambda_handler(event, context):
lambda_inv = boto3.client("lambda", region_name="us-east-1")
payload = {"message":"Hi From my_function1"}
lambda_inv.invoke(FunctionName='arn:aws:lambda:us-east-1:1236547899871:function:my_function2',
InvocationType='Event', Payload=json.dumps(payload))
Lambda 函数 2: my_function2
import json
def lambda_handler(event, context):
# TODO implement
print("lambda_handler")
def say_hello(event, context):
print("From say_hello function")
print(str(event))
print("say_hello end")
我想从 lambda my_function1调用 lambda my_function2的say_hello方法。 我怎么做? 默认情况下,它会尝试调用默认的 lambda_handler 方法
每个 lambda 函数只能有 1 个处理程序。 您可以做的是在您的处理程序中使用一些 if 逻辑来根据事件调用同一 lambda 中的不同函数。
Lambda 函数始终通过处理函数输入。 它就像“主要方法”。 每个 Lambda 函数都是它自己的应用程序,拥有自己的资源,因此当您在它们之间进行协调时,您将始终通过 main(处理程序)进入该函数,然后您可以从那里转到其他任何地方。
请记住,每个 Lambda 在调用期间都会丢失其所有资源(内存和 CPU),因此它总是会在每次调用时从处理程序重新启动。
要使用 say_hello 函数,您需要在处理程序中使用一些 if 语句,如@jimmone 所述。 像这样:
def lambda_handler(event, context):
lambda_inv = boto3.client("lambda", region_name="us-east-1")
payload = {
"message":"Hi From my_function1",
"request": "say_hello"
}
lambda_inv.invoke(FunctionName='arn:aws:lambda:us-east- 1:1236547899871:function:my_function2',
InvocationType='Event', Payload=json.dumps(payload))
def lambda_handler(event, context):
# TODO implement
print("lambda_handler")
if event['request'] == 'say_hello':
return say_hello(event, context)
def say_hello(event, context):
print("From say_hello function")
print(str(event))
print("say_hello end")
如果您只想更改处理程序的名称,可以通过编辑 AWS Lambda 中的处理程序选项来完成。 在这种情况下 my_function2.say_hello
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.