AWS Lambda - 调用另一个 lambda 函数的方法
Posted
技术标签:
【中文标题】AWS Lambda - 调用另一个 lambda 函数的方法【英文标题】:AWS Lambda - Invoke a method of another lambda function 【发布时间】:2020-03-23 03:09:40 【问题描述】:我试图从另一个 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 方法
【问题讨论】:
这能回答你的问题吗? Nodejs - Invoke an AWS.Lambda function from within another lambda function @vaquarkhan 这有点帮助,但没有回答我的问题。但是 jimmone 和 Branson Smith 已经回答了我的问题。感谢您的宝贵时间。 这里的意图是一次又一次地避免同样的问题,只有一个答案会帮助大家,很高兴你找到了答案 【参考方案1】:每个 lambda 函数只能有 1 个处理程序。您可以做的是在您的处理程序中添加一些 if 逻辑,以根据事件在同一个 lambda 中调用不同的函数。
【讨论】:
谢谢 jimmone【参考方案2】:Lambda 函数始终通过处理函数输入。这就像“主要方法”。每个 Lambda Function 都是自己的应用程序,拥有自己的资源,因此当您在它们之间进行协调时,您总是会通过 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
【讨论】:
谢谢布兰森。以上是关于AWS Lambda - 调用另一个 lambda 函数的方法的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda 无法调用没有 VPC 的另一个 AWS Lambda - NodeJs
AWS lambda 函数调用另一个带参数的 lambda 函数
AWS CloudFormation:如何为 Lambda 代码指定来自另一个 AWS 账户的存储桶?