我正在尝试将Message Hub主题设置为云功能的事件源,如下所示:
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主题发布消息时,不会调用该函数。
我还尝试显式设置触发器和规则,但这仅创建了custom类型的触发器,而不是类型message hub的触发器。自定义触发器似乎在这种情况下不起作用。
我想念什么?
正如James指出的,未创建触发器和规则的原因是由于缩进不正确这一事实。
在尝试部署该功能时,我仍然遇到找不到软件包的问题(请参阅我对James解决方案的回答),并且我发现了问题所在。
结果是,您还必须执行文档中未明确提及的两件事。
1)您必须手动创建服务凭证(文档假设您将其称为Credentials-1
,所以我也做同样的事情)
2)您必须在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
答案 0 :(得分:1)
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