You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置c7n-mailer仅通知存在问题的Cloud Custodian资源

如何配置c7n-mailer仅通知存在问题的Cloud Custodian资源

看起来你现在的策略把所有SQS资源都推送给你了,核心问题是策略里的过滤条件格式或写法有问题,导致过滤规则没生效。我们一步步修正,确保只有缺少MailerTest标签的SQS队列才会触发通知。

问题分析

你现有策略里的过滤条件用了转义的",这会导致Cloud Custodian无法正确解析过滤规则,相当于过滤条件失效,所以会匹配所有SQS资源,进而触发全量通知。另外,部分配置项的注释格式也需要调整,避免语法错误。

修正后的完整策略配置

- name: c7n-mailer-test
  resource: sqs
  filters:
    - "tag:MailerTest": absent  # 仅匹配缺少MailerTest标签的SQS队列
  actions:
    - type: notify
      slack_msg_color: danger
      to:
        - albert@onehouse.ai
        - slack://albert@onehouse.ai
      transport:
        type: sqs
        queue: https://sqs.us-west-2.amazonaws.com/654654235321/cloudcustodian
      # 自定义通知主题与内容,明确标记问题资源
      subject: "⚠️ 发现无MailerTest标签的SQS队列"
      template: |
        以下SQS队列缺少必填的MailerTest标签:
        {% for resource in resources %}
        - QueueURL: {{ resource.QueueURL }}
          QueueArn: {{ resource.QueueArn }}
        {% endfor %}

关键修正点说明

  1. 修复过滤条件格式:把转义的"替换为正常双引号,确保Cloud Custodian能正确识别tag:MailerTest: absent规则,只筛选没有该标签的队列。
  2. 规范配置语法:启用自定义通知主题和模板时,要去掉配置项前的注释符号#,避免语法解析错误。
  3. 精准通知内容:通过Jinja2模板{% for resource in resources %}遍历所有匹配过滤规则的问题资源,只在通知里展示你需要关注的队列,避免全量干扰。

验证方法

  1. 用dry-run模式测试策略,确认匹配的资源是否正确:
    custodian run --dryrun your-policy-file.yml
    
    该命令会模拟执行,输出匹配到的资源列表,你可以核对是否只有缺少标签的队列被选中。
  2. 正式执行后,检查邮箱和Slack,应该只会收到问题队列的通知,不会再收到全量SQS资源消息。

额外提示

如果需要针对其他问题场景(比如队列未加密、消息堆积),只需修改filters部分的规则,notify动作的核心配置保持一致,就能实现仅通知对应问题资源的效果。同时要确保c7n-mailer的SQS传输队列权限配置正确,Cloud Custodian有权限推送消息,c7n-mailer服务能正常消费投递。

备注:内容来源于stack exchange,提问作者Albert T. Wong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:33:03