消息发布到SQS时如何触发lambda?

时间:2019-03-26 14:21:55

标签: amazon-web-services aws-lambda aws-sam

我正在尝试实现将消息发布到SQS时将触发的lambda1。我能够将消息发送到SQS队列并接收消息。 我创建了SQS lambda模板,如下所示:

  GetPatientStatusSQS:
    Type: AWS::SQS::Queue
    Properties:
      MaximumMessageSize: 1024
      QueueName: !Sub "${EnvironmentName}-GetPatientStatusSQS"
      VisibilityTimeout: 30

我检查了aws文档,但找不到任何示例,该示例显示了当消息发布到SQS队列时如何触发lambda。

我找到了此链接Can an AWS Lambda function call another,但不确定是否有帮助。

如何更新上面的SQS模板,以便触发lambda1?

1 个答案:

答案 0 :(得分:3)

截至2018年6月28日,Lambda functions can be triggered by SQS events

您需要做的就是将Lambda函数订阅到所需的SQS队列。

转到SQS的控制台,单击您的队列->队列操作->为Lambda函数配置触发器

enter image description here

设置您要向其发送消息的Lambda的ARN,就是这样,您的功能现在将由SQS触发。

请记住,您的函数最多一次可处理多达10条消息。

如果您认为可能会遇到并发问题,则可以将函数的并发限制为1。

这是一个示例模板,可用于将SQS和Lambda连接在一起。

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Example of processing messages on an SQS queue with Lambda
Resources:
  MySQSQueueFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: node8.10
      Events:
        MySQSEvent:
          Type: SQS
          Properties:
            Queue: !GetAtt MySqsQueue.Arn
            BatchSize: 10
  MySqsQueue:
    Type: AWS::SQS::Queue

docs