4

我正在使用以下函数定义:

missing:
    handler: functions/eeegMissing.handler
    events:
      - sns: arn:aws:sns:us-west-2:xxx
        filterPolicy:
              type:
                - EPILOG_PAGE_DATA_RECEIVED

SNS 主题已存在。当我部署它时,会使用名称创建订阅

arn:aws:lambda:us-west-2:xxx:function:eeeg-dev-missing` 

但过滤器是空白的。我希望过滤器显示为:

{ "type":["EPILOG_PAGE_DATA_RECEIVED"]}

我错过了什么?

4

2 回答 2

2

你只是有一个小的语法错误。我有一个带有以下事件的无服务器函数,它可以工作:

events:
- sns: 
    arn: ${self:custom.devicesTopicArn}
    filterPolicy:
      operation:
      - INSERT

所以在你的情况下,它应该是:

missing:
  handler: functions/eeegMissing.handler
  events:
    - sns:
        arn: arn:aws:sns:us-west-2:xxx
        filterPolicy:
          type:
            - EPILOG_PAGE_DATA_RECEIVED
于 2018-12-13T03:29:18.653 回答
0

为了澄清前面的答案,根据Serverless 文档,当通过 arn(相对于名称)指定主题时,arn 值必须包含arn:关键字(除了arn:AWS 资源名称中包含的前缀)。

于 2020-02-12T18:47:58.847 回答