Amazon web services 有没有办法通过另一个lambda和SQS触发AWS lambda?

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等)

假设我有两个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功能可以执行的所有操作的官方文档。

    您可以使用该服务。它将帮助您将不同的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触发阶跃函数的问题。这似乎不是直接可能的