【问题标题】:Serverless does not create SQS eventsServerless 不创建 SQS 事件
【发布时间】:2019-01-29 04:04:24
【问题描述】:

我正在尝试让无服务器创建一个触发器,以便在对象排队时触发。但它不会创建也不会触发任何错误。

我的 serverless.yml: 我按照文档做了 (https://serverless.com/framework/docs/providers/aws/events/sqs/)

service: lambda-messages

provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: us-east-1
  memorySize: 256
  iamRoleStatements:
   - Effect: "Allow"
     Action:
     - sqs:SendMessage
     - sqs:ReceiveMessage
     - sqs:DeleteMessage
     - sqs:GetQueueAttributes
     Resource: arn:aws:sqs:us-east-1:074601456889:messages

functions:
  addMessages:
    timeout: 10
    handler: handler.addMessages
    events:
     - http:
         path: v1/chat/addMessages
         method: post

  receiveMessage:
    timeout: 10
    handler: handler.receiveMessage
    reservedConcurrency: 10
    events:
     - sqs:
       arn: arn:aws:sqs:us-east-1:074601456889:messages
       batchSize: 2

但它不会创建

Image console lambda

【问题讨论】:

  • 账户中是否已经存在SQS队列?还是你想在这个项目中创建它?

标签: javascript amazon-web-services aws-lambda serverless-framework serverless


【解决方案1】:

您必须自己创建队列,如documentation 中所述。
因为无服务器不会为您创建 SQS,它只能将侦听器放在已经存在的队列上。
您可以找到操作方法here
Serverless 不会为您创建 SQS,因为有两种类型的队列可供您根据需要选择。由您选择队列类型,然后创建它,并且只有在此无服务器会找到您的队列并附加工作人员之后。

【讨论】:

  • 但我不想创建队列。我想添加通过无服务器触发 lambda 的事件。
  • @brindedsbrindeds2,根据您在serverless.yml 中的配置,您正在尝试监听 sqs 事件。如果您想按事件触发功能,请查看云观察事件。 serverless.com/framework/docs/providers/aws/events/…
  • @brindedsbrindeds2 或在events 部分查看此链接serverless.com/framework/docs/providers/aws/guide/…。有事件的例子,你可以通过触发lambda
  • Serverless 将创建 SQS 队列,如果您将其添加到 Resources 部分并在 eventsiamRoleStatements 属性中引用它。
【解决方案2】:

问题在于你的 YAML 文件中的缩进,只需在“arn”和“batchSize”前面添加两个空格

【讨论】:

    【解决方案3】:

    在 sqs 上添加 2 个空格。添加了一张图片以供参考!

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2020-09-07
      • 2021-10-04
      • 2022-10-02
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      相关资源
      最近更新 更多