Amazon web services 当消息发布到SQS时,如何触发lambda?

Amazon web services 当消息发布到SQS时,如何触发lambda?,amazon-web-services,aws-lambda,aws-sam,Amazon Web Services,Aws Lambda,Aws Sam,我正在尝试实现lambda1,当消息发布到SQS时会触发它。我能够向SQS队列发送消息并接收消息。 我创建了SQS lambda模板,如下所示: GetPatientStatusSQS: Type: AWS::SQS::Queue Properties: MaximumMessageSize: 1024 QueueName: !Sub "${EnvironmentName}-GetPatientStatusSQS" VisibilityTi

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

  GetPatientStatusSQS:
    Type: AWS::SQS::Queue
    Properties:
      MaximumMessageSize: 1024
      QueueName: !Sub "${EnvironmentName}-GetPatientStatusSQS"
      VisibilityTimeout: 30
我查看了aws文档,但找不到任何示例显示当消息发布到SQS队列时如何触发lambda

我找到了这个链接,但不确定是否有用

如何更新上面的SQS模板,使其触发lambda1?

根据2018年6月28日

您只需将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

感谢您的链接,有时很难跟上!不客气。现在想象一下,对于我们这些不在AWS工作的普通人来说,随着你们每年发布大量服务,跟上步伐是多么困难。请放慢脚步:p@ThalesMinussi谢谢,但我知道如何从aws控制台触发lambda。我想问的是如何更新SQS模板yaml以触发另一个lambda。请您再解释一下yaml中的一些部分好吗?假设我们用SQS的Arn替换“mysqsqqueue.Arn”?“mysqsqqueue:”下面几行怎么样?这应该是SQS的名称吗?终于找到了错误!命名很繁琐!我在我的项目队列中使用了一个标准的CamelCase名称,但没有考虑它,只是出于某种原因,“DbfToEaLambdaQueue”不起作用,但“mysqsqqueue”很好。只是张贴的情况下,任何其他人都被困在这个!以下是自动生成的arn必须满足的正则表达式:arn:(aws[a-zA-Z0-9-]*:([a-zA-Z0-9\-])+:([a-z]{2}((-gov){iso(b?))?-[a-z]+-\d{1}:(\d{12}):(*)再次感谢Thales