代码之家  ›  专栏  ›  技术社区  ›  Kaguei Nakueka

基于CloudWatch insight查询创建警报

  •  0
  • Kaguei Nakueka  · 技术社区  · 3 年前

    我的问题是:

    我想将每小时访问我的公共AWS API网关端点超过5次的IP列入黑名单。

    我提出的解决方案是:

    • 请求被记录到CloudWatch
    • 请求按IP进行计数和分组
    • 警报监控IP向SNS主题发送消息,以防达到阈值
    • Lambda由该消息触发,并将IP列入黑名单

    enter image description here

    我可以使用下面的Insight查询记录和统计IP:

    fields ip
      | stats count() as ipCount by ip
      | filter ispresent(ip)
      | sort ipCount desc
    

    enter image description here

    我正在努力实现的是基于此查询获取CloudWatch警报。

    我搜索了很多,但没有成功。有没有关于如何创建这样一个度量/警报的想法?

    0 回复  |  直到 3 年前
        1
  •  3
  •   Register Sole    3 年前

    我知道你计划做一个定制的Lambda,但是检查WAF是否已经满足了你的用例。例如,本文中的速率限制部分明确允许您定义给定IP的每5分钟速率:

    https://docs.aws.amazon.com/waf/latest/developerguide/classic-web-acl-rules-creating.html

    如果不做任何其他操作,则可能不需要自定义Lambda函数。

    编辑

    如果你想沿着CloudWatch警报的路径走下去,我认为你可以定义一个 公制滤波器 创建一个 CloudWatch公制 。然后您可以根据度量创建警报。

    https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html

        2
  •  0
  •   Hatim    3 年前

    最好的方法是使用与API完美集成的托管服务“AWS WAF”。

    定制解决方案的问题在于延迟、聚合日志的时间、计数和成本,因为每次lambda都会运行查询。。。。

    在API网关中,您可以直接连接WAF Web ACL,您可以指示每5分钟、每10分钟的速率。。。为了你的需要,这是WAF的工作。

    推荐文章