1

我正在尝试使用webhook 在使用Cloud Custodian Datadog API时创建标记事件。Datadog

以下代码几乎可以正常工作,只是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]

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

只是为了重申这个问题,我如何将字符串文字与jmespath查询结合起来构建一个网络钩子主体custodian web hooks

4

1 回答 1

0

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

- 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])]
     }
于 2021-11-08T14:57:50.130 回答