无法从侦听通用Kafka实例的openwhisk kafka Feed创建触发器

时间:2017-11-05 10:21:59

标签: openwhisk serverless

我在Ubuntu 16.04桌面上安装了openwhisk本地安装。操作,触发器,规则和警报触发器正在工作。

我克隆了git存储库https://github.com/apache/incubator-openwhisk-package-kafka并按顺序运行以下命令: installCatalog.sh,gradlew:distDocker,installKafka.sh

然后我尝试创建一个触发器:

bin/wsk trigger create MyKafkaTrigger -f /messaging/kafkaFeed -p brokers "
[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true -
-insecure

我正在关注自述文件的这一部分:“创建一个侦听通用Kafka实例的触发器”

我正在重新使用作为Openwhisk安装的一部分创建的Kafka实例,并创建了一个名为“test”的主题 - 我可以使用kafka命令行工具发布/使用该主题。

触发器创建失败(它删除触发器,说资源不存在)。

我观察到的一件事是在/ guest下创建了以下包:

bin/wsk package list /guest --insecurepackages
/guest/messagingWeb                                                    
                     private
/guest/messaging                      

我确实将Feed名称更改为/ guest / messaging / kafkFeed,只更改了kafkaFeed等,但结果略有不同:

bin/wsk trigger create MyKafkaTrigger -f /guest/messaging/kafkaFeed -p 
brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p 
isJSONData true --insecure

提供一个JSON输出,说“错误”:“请求的资源不存在。”

bin/wsk trigger create MyKafkaTrigger -f /messaging/kafkaFeed -p brokers "
[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true -
-insecure

GIVES

ok: deleted trigger MyKafkaTrigger
error: Unable to create trigger 'MyKafkaTrigger': Unable to invoke trigger 
'MyKafkaTrigger' feed action '/messaging/kafkaFeed'; feed is not configured: 
Unable to invoke action 'kafkaFeed': The supplied authentication is not 
authorized to access this resource. (code 186)

寻求任何帮助

1 个答案:

答案 0 :(得分:0)

我按照开发指南启动并运行:https://github.com/apache/incubator-openwhisk-package-kafka/blob/master/devGuide.md

以下是我成功创建Feed触发器的步骤:

  1. 通过运行

    记下身份验证密钥
    bin/wsk -i property get --auth
    
  2. 运行安装脚本

    ./installKafka.sh <authKey> <edgehost> <dburl> <dbprefix> <apihost>
    
  3. 请注意,authKey的值是从步骤1获得的值。有关其他参数的值,请参阅https://github.com/apache/incubator-openwhisk-package-kafka/blob/master/devGuide.md#install-actions

    1. 安装脚本成功完成后,请验证是否安装了正确的软件包。您应该看到messagingmessagingWeb个包。 e.g

      bin/wsk -i package list /guest
      
      packages
      /guest/messagingWeb                                                    private
      /guest/messaging                                                       shared
      
    2. 现在验证kafkaFeed操作是否存在

      bin/wsk -i package get --summary /guest/messaging
      
      package /guest/messaging: Returns a result based on parameter endpoint
         (parameters: *endpoint)
       action /guest/messaging/kafkaProduce: Produce a message to a Kafka cluster
         (parameters: base64DecodeKey, base64DecodeValue, brokers, key, topic, value)
       feed   /guest/messaging/kafkaFeed: Feed to listen to Kafka messages
         (parameters: brokers, endpoint, isBinaryKey, isBinaryValue, isJSONData, topic)
      
    3. 现在,您可以通过将命名空间作为完整包名称的一部分传入,或者从包名称中删除前导/来创建触发器

      bin/wsk -i trigger create MyKafkaTrigger -f /guest/messaging/kafkaFeed -p brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true
      
      OR
      
      bin/wsk -i trigger create MyKafkaTrigger -f messaging/kafkaFeed -p brokers "[\"localhost:9092\", \"localhost:9093\"]" -p topic test -p isJSONData true