首页 > 解决方案 > AWS Serverless:未创建 SQS Lambda 触发器

问题描述

我正在使用无服务器框架并尝试为 lambda 函数创建 SQS 触发器。

SQS 队列已使用另一个无服务器模板创建。

当我执行 serverless deploy 命令时,没有错误,但也没有创建 SQS 触发器。

这是我的 serverless.yml 文件

service: cloudformation-demo

plugins:
  - serverless-pseudo-parameters

custom:
  CONNECT_DEVICE_SQS_ROLE_NAME: SqSConnectRole
  CONNECT_DEVICE_SQS_QUEUE_NAME: connectDeviceSQSDemo1


provider:
  name: aws
  runtime: go1.x
  stage: dev
  region: us-east-1


package:
 individually: true
 exclude:
   - ./**

functions:
   lambdaenvinfo:
    handler: bin/handlers/lambdaenvinfo
    timeout: 900
    package:
     exclude:
        - "**/**"
     include:
       - ./bin/handlers/lambdaenvinfo
     events:
      - sqs:
         arn: arn:aws:sqs:us-east-1:672851574246:connectDeviceSQSDemo
         batchSize: 1
         enabled: true

我还提到了这个线程,并尝试添加所需的空格。

Serverless 不创建 SQS 事件

这个问题有什么解决办法吗?令人惊讶的是,无服务器没有显示任何错误。

标签: amazon-web-servicesaws-lambdaserverless-framework

解决方案


我能够解决这个问题,现在正在创建 lambda SQS 触发器。

主要问题 -

  1. serverless.yml 文件的缩进需要正确(在这种情况下,serverless 不会给出任何错误)

(在下面的无服务器 yml 文件中观察 sqs、events、include、exclude 之前的空格)

  1. 在 SQ 的情况下为 Lambda 指定事件触发器的格式有点不同。

sqs: arn:aws:sqs:us-east-1:672851574246:connectDeviceSQSDemo

我已经修改了 serverless.yml 文件(它现在正在工作)

service: cloudformation-demo

plugins:
  - serverless-pseudo-parameters

custom:
  CONNECT_DEVICE_SQS_ROLE_NAME: SqSConnectRole
  CONNECT_DEVICE_SQS_QUEUE_NAME: connectDeviceSQSDemo1


provider:
  name: aws
  runtime: go1.x
  stage: dev
  region: us-east-1


package:
 individually: true
 exclude:
   - ./**

functions:
  lambdaenvinfo:
    handler: bin/handlers/lambdaenvinfo
    timeout: 30
    package:
      exclude:
        - "**/**"
      include:
       - ./bin/handlers/lambdaenvinfo
    events:
       - sqs: arn:aws:sqs:us-east-1:672851574246:connectDeviceSQSDemo

推荐阅读