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

如何用Cloud Custodian策略筛选开放指定端口的AWS EC2实例

解决Cloud Custodian筛选开放特定端口EC2实例的问题

当然可以用单步策略实现你的需求!我来帮你排查下现有策略的问题,再给你修正后的方案:

你的原策略里,在security-group过滤器下直接写多个key和value的方式是错误的——Cloud Custodian会把这些当成独立的条件(逻辑或关系),而且没有正确关联安全组的入站规则,所以才会返回所有EC2实例。

修正后的策略(匹配包含80端口的入站规则)

如果要筛选所有绑定了开放80端口(包括范围包含80的规则,比如70-90)的EC2实例,用这个策略:

name: ec2-by-open-port-80
resource: ec2
filters:
  - type: security-group
    match-resource: true
    filters:
      - type: ingress
        key: FromPort
        op: le
        value: 80
      - type: ingress
        key: ToPort
        op: ge
        value: 80

策略逻辑解释

  • match-resource: true:确保我们只检查当前EC2实例绑定的安全组,而不是AWS账号下所有安全组
  • 嵌套的ingress过滤器:专门用来检查安全组的入站规则
    • 第一个规则判断入站规则的起始端口小于等于80
    • 第二个规则判断入站规则的结束端口大于等于80
      两者结合就能覆盖所有包含80端口的入站规则场景

精确匹配仅开放80端口的实例

如果你只想筛选那些安全组里**精确开放80端口(非范围)**的EC2实例,把操作符改成eq即可:

name: ec2-by-exact-port-80
resource: ec2
filters:
  - type: security-group
    match-resource: true
    filters:
      - type: ingress
        key: FromPort
        op: eq
        value: 80
      - type: ingress
        key: ToPort
        op: eq
        value: 80

额外:筛选公网开放的实例

如果需要进一步限定是公网开放(比如0.0.0.0/0)的80端口,只需在ingress过滤器里加一个CidrIp的条件:

- type: ingress
        key: CidrIp
        value: 0.0.0.0/0

内容的提问来源于stack exchange,提问作者isurikz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:27:39