【问题标题】:how do I combine strings with jmespath queries to build up a webhook body?如何将字符串与 jmespath 查询结合起来构建 webhook 主体?
【发布时间】:2021-11-04 15:22:24
【问题描述】:

我正在尝试使用Cloud Custodian webhooksDatadog 中使用Datadog API. 创建标记事件

以下代码几乎可以工作,除了account_id 没有在Datadog 中创建为标签。如果我捕获发送的正文,它包含"01234"(即一个字符串。)

- type: webhook
        url: https://api.datadoghq.eu/api/v1/events
        method: POST
        headers:
          DD-API-KEY: '`{{ dd_api_key }}`'
        body: |- 
          {
            "title": `nutkin news`, 
            "text": `squirrel found in account`, 
            "tags": [resource.Name, policy.name, account_id]
          }

如果我删除标签中的 jmespath 查询并仅发送字符串文字,例如

`01234`

,它不会作为标签出现在Datadog,但如果我发送

`aws_account_id:01234`

它将显示为一个标签。

理想情况下,对于所有标签,我想要一个字符串和jmespath 查询的结果的混合,因为它对Datadog 的用户更有用(例如下面包含的内容。)

"tags": [`resource_name:`resource.Name, `policy_name:`policy.name, `account_id:`account_id]

我已经为此花费了几天时间。我已经阅读了custodianjsonjmespath 上的所有文档,只是找不到括号、引号和反引号的正确语法。也许甚至不可能混合字符串文字和jmespath 查询。

重申一下这个问题,如何将字符串文字与jmespath 查询结合起来在custodian web hooks 中构建一个网络钩子主体?

【问题讨论】:

  • 只是想说这看起来不错作为第一个问题。我会尽快让您知道我注意到的“货物”和“改进”,因此您可以从这里获得指导。 商品:您的标题是一个实际问题,这一事实非常出色。你会惊讶于有多少人忽略了这条规则。此外,技术具有链接,因此我们无需花费 30 多分钟的时间来研究问题。
  • 改进: -- 应使用backtick 表示法让读者知道哪些术语是技术或对理解问题至关重要。 -- 在最后重复主要问题。有时上下文会揭示其他问题,使您不清楚您的主要问题是什么。如果这是我们在问题中读到的最后一件事,那么当我们回答时,它会在我们的脑海中浮现。 -- 最后,当您添加链接时,将其绑定到一个单词。这样它就不会打断周围的句子并分散读者的注意力。
  • 注意:这里的目的不是为了降低您提交的内容。你的问题很好,尤其是第一个问题。我只是在回顾第一个问题并向每个用户提供一些反馈。我希望得到的那种反馈。我将进行编辑以添加我提到的一些改进。请记住,这并不是说原版不好。也就是说,好的总是更好的。
  • @NateT - 应该使用反引号让读者知道哪些术语是技术或理解问题的核心。 - 实际上反引号应该只用于代码、错误和其他原始文本文字内容。见When should code formatting be used for non-code text?。使用粗体斜体强调。
  • 感谢您的详细反馈和编辑 Nate

标签: json webhooks datadog jmespath cloudcustodian


【解决方案1】:

解决了!每个标签都需要一个连接语句,例如:

- type: webhook
  url: https://api.datadoghq.eu/api/v1/events
  method: POST
  headers:
  DD-API-KEY: '`{{ dd_api_key }}`'
  body: |- 
     {
       "title": `nutkin news`, 
       "text": `squirrel found in account`, 
       "tags": [join(``, [`aws_resource:`, resource.Name]), join(``, [`custodian_policy:`, policy.name]), join(``, [`aws_account:`, account_id])]
     }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多