2

我正在尝试实现将在消息发布到 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?

4

1 回答 1

5

根据 2018 年 6 月 28 日,Lambda 函数可以由 SQS 事件触发

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

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

在此处输入图像描述

设置您要向其发送消息的 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

文档

于 2019-03-26T15:02:34.780 回答