Message Hub 作为无服务器项目中的事件源不会创建任何触发器或规则

Message Hub as event source in Serverless project doesn't create any triggers or rules

我正在尝试将消息中心主题设置为云功能的事件源,如下所示:

custom:
  org: MyOrganization
  space: dev
  mhServiceName: my-kafka-service

functions:
  main:
    handler: src/handler.main
    events:
      - message_hub:
        package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
        topic: test_topic

当我部署服务时,没有创建触发器或规则。因此,当我向 Kafka 主题发布消息时,不会调用该函数。

我还尝试显式设置触发器和规则,但这只会创建自定义类型的触发器,而不是消息中心类型。自定义触发器似乎在这种情况下不起作用。

我错过了什么?

更新

正如 James 指出的那样,未创建触发器和规则的原因是缩进不正确。

在尝试部署该功能时,我仍然 运行 遇到找不到包的问题(请参阅我对 James 解决方案的回答),我发现了问题所在。

事实证明,您还必须做两件文档中未明确提及的事情。

1) 您必须手动创建服务凭据(文档假定您称它们为 Credentials-1,所以我也这样做了) 2) 您必须将 Kafka(消息中心,现在称为事件流)绑定到 serverless.yml

中的函数

生成的函数定义应如下所示:

functions:
  main:
    handler: src/handler.main
    bind:
      - service:
          name: messagehub
          instance: ${self:custom.mhServiceName}
    events:
      - message_hub:
          package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
          topic: test_topic

serverless.yml 中的 YAML 缩进不正确。这意味着事件属性在部署期间未由框架注册。

serverless.yml 文件更改为以下格式,它应该可以工作。

custom:
  org: MyOrganization
  space: dev
  mhServiceName: my-kafka-service

functions:
  main:
    handler: src/handler.main
    events:
      - message_hub:
          package: /${self:custom.org}_${self:custom.space}/Bluemix_${self:custom.mhServiceName}_Credentials-1
          topic: test_topic