Amazon web services 有没有办法通过另一个lambda和SQS触发AWS lambda?
假设我有两个lambda:A和B。A正在听一个SQS 我希望流程如下所示:Amazon web services 有没有办法通过另一个lambda和SQS触发AWS lambda?,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,假设我有两个lambda:A和B。A正在听一个SQS 我希望流程如下所示: 一条消息传到了SQS Lambda A提取消息并开始处理它 lambda A启动后,lambda B还接收消息并执行其他操作。但是lambda B必须在A已经启动之后启动 我知道我可以使用lambda将消息放到另一个SQS上,然后lambda B将侦听新的SQS。 但是我想知道是否有更好的方法来一个接一个地运行lambdas 谢谢您可以使用这项服务。它将帮助您将不同的AWS服务(Lambda、SQS、DynamoDb等)
是将向您展示使用Step函数可以执行的所有操作的官方文档。您可以使用lambda SDK直接从lambda A调用lambda B 您可以同步(并等待响应)或异步调用函数。要异步调用函数,请将InvocationType设置为Event。例如:
import boto3
client = boto3.client('lambda')
response = client.invoke(
FunctionName='lambda-b',
InvocationType='Event',
LogType='Tail',
ClientContext='string',
Payload=file,
Qualifier='string'
)
Python SDK文档(boto3)您可以使用lambda SDK直接从lambda调用lambda B 您可以同步(并等待响应)或异步调用函数。要异步调用函数,请将InvocationType设置为Event。例如:
import boto3
client = boto3.client('lambda')
response = client.invoke(
FunctionName='lambda-b',
InvocationType='Event',
LogType='Tail',
ClientContext='string',
Payload=file,
Qualifier='string'
)
Python SDK文档(boto3)您可以直接从Lambda调用Lambda B 下面是python的代码
从boto3导入客户端作为boto3\u客户端
从日期时间导入日期时间
导入json
lambda_客户=boto3_客户('lambda',地区名称='eu-west-1')
def lambda_处理程序(事件、上下文):
response=lambda\u client.invoke(FunctionName=“lambda\u b”,
调用类型=“事件”,
有效负载=json.dumps(事件))
打印(答复)
请记住:您需要编辑您的角色以允许lambda调用:
{
"Sid": "St125642120",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "*"
}
您可以直接从Lambda调用Lambda B 下面是python的代码
从boto3导入客户端作为boto3\u客户端
从日期时间导入日期时间
导入json
lambda_客户=boto3_客户('lambda',地区名称='eu-west-1')
def lambda_处理程序(事件、上下文):
response=lambda\u client.invoke(FunctionName=“lambda\u b”,
调用类型=“事件”,
有效负载=json.dumps(事件))
打印(答复)
请记住:您需要编辑您的角色以允许lambda调用:
{
"Sid": "St125642120",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "*"
}
你可以让你的工作者lambda(即lambda A)调用lambda B。如果你想解耦,让你的lambda A发布到SNS主题并让lambda B订阅。你可以让你的工作者lambda(即lambda A)调用lambda B。如果你想解耦,将您的lambda发布到SNS主题,并让lambda B订阅它。这里唯一的问题是,您需要有一个由SQS触发的lambda来启动step函数。因此,需要再添加一个计算来实现这一点,但我同意lambda的任何编排都应该与step函数一起使用。这可以解决您的问题,这取决于您设计的无服务器体系结构。让我知道如果对你有效是的…要运行它,你需要一些计算实例(作为lambda触发器)。你不能从SQSOh启动一个步进函数作为触发器好了,我现在明白了,讨论了使用SQS触发阶跃函数的问题。这似乎不是直接可能的问题,这里唯一的问题是您需要一个由SQS触发的lambda来启动step函数的执行。因此,需要再添加一个计算来实现这一点,但我同意lambda的任何编排都应该与step函数一起使用。这可以解决您的问题,这取决于您设计的无服务器体系结构。让我知道如果对你有效是的…要运行它,你需要一些计算实例(作为lambda触发器)。你不能从SQSOh启动一个步进函数作为触发器好了,我现在明白了,讨论了使用SQS触发阶跃函数的问题。这似乎不是直接可能的