【问题标题】:Benthos: How to get variable from processor to input?Benthos:如何从处理器获取变量到输入?
【发布时间】:2022-08-18 18:34:55
【问题描述】:

我是benthos的新手,希望以下配置能够正常工作,我查看了benthos doc并尝试谷歌,但没有找到答案,非常感谢任何答案

实际上,符号将是计算值,但现在我卡在第一步,我无法将符号值成功分配给标题

input:
  processors:
   - bloblang: |
      meta sign = \"1233312312312312\"
      meta device_id = \"31231312312\"
  http_client:
    url: >-
      https://test/${!meta(\"device_id\")}
    verb: GET
    headers: 
      sign: ${!meta(\"sign\")}

在@Mihai Todor 帮助之后,现在我有了新问题。

下面的这个配置可以工作。

input:
  http_client:
    url: >-
      https://test/api
    verb: GET
    headers: 
      sign: \"signcode\"

但是这个返回了无效的签名错误

input:
  generate:
    count: 1
pipeline:
  processors:
    - http:
        url: >-
          https://test/api
        verb: GET
        headers:
          sign: \"signcode\"
output:
  stdout: {}

    标签: benthos


    【解决方案1】:

    输入处理器对输入返回的消息进行操作,因此您不能以这种方式设置元数据。此外,元数据与飞行中的消息相关联,并且不会在消息之间持续存在(如果需要,请使用内存中的cache)。

    一种解决方法是将generate 输入与http 处理器结合起来,如下所示:

    input:
      generate:
        mapping: root = {}
        interval: 0s
        count: 1
    
      processors:
        - mapping: |
            meta sign = "1233312312312312"
            meta device_id = "31231312312"
            
    pipeline:
      processors:
        - http:
            url: >-
              https://test/${!meta("device_id")}
            verb: GET
            headers:
              sign: ${!meta("sign")}
    
    output:
      stdout: {}
    

    请注意,mapping 处理器(soon-to-be deprecatedbloblang 的替代品)也可以驻留在pipeline.processors 下,如果您只需要设置这些元数据字段,您也可以在mapping 内进行generate 输入的字段(root = {} 是隐含的)。

    【讨论】:

    • 感谢您的回答,这让我明白了很多,但是当我使用上面的代码时,似乎登录标头不能用于 http 请求,即使我将符号字符串直接粘贴到标头-> 符号。有没有我忽略的细节?
    • 别客气!如果不能自己运行,很难说可能出了什么问题。我建议提高日志记录级别benthos.dev/docs/components/logger/about 以查看是否可以获得任何额外信息。如果没有,您始终可以使用带有类似message: ${! content() }log 处理器转储消息,并且可以使用message: ${! error() } 检查映射错误。最后,您可以尝试使用 tcpdump 之类的 smth 来检查 Benthos 进行的 http 调用。
    • 是的,如果无法执行配置文件,很难知道错误在哪里。我只是对代码感到困惑,第一个代码(更新的问题)可以成功执行,但第二个返回无效签名我会尝试跟踪日志,无论如何谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2014-05-19
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多