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

能否通过Lambda函数自动移除AWS Network ACL入站规则?

可以通过Lambda函数自动移除Network ACL中的入站规则

完全可以通过AWS Lambda结合EC2 API实现这个需求,核心是调用EC2的modify_network_acl_entries接口删除指定的入站规则。以下是可直接使用的Python示例代码,基于AWS SDK for Python(boto3)开发:

前提准备

  • 为Lambda函数配置执行角色,需包含ec2:ModifyNetworkAclEntries权限;若需要验证规则状态,可额外添加ec2:DescribeNetworkAcls权限
  • 确认目标Network ACL的ID,以及需要移除的入站规则的规则编号(Rule Number)

Lambda示例代码

import boto3

def lambda_handler(event, context):
    # 初始化EC2客户端
    ec2 = boto3.client('ec2')
    
    # 配置目标参数
    network_acl_id = 'acl-0123456789abcdef0'  # 替换为你的Network ACL ID
    rule_number_to_remove = 100  # 替换为要移除的入站规则编号
    
    try:
        # 移除指定入站规则
        response = ec2.modify_network_acl_entries(
            NetworkAclId=network_acl_id,
            Entries=[
                {
                    'RuleNumber': rule_number_to_remove,
                    'Egress': False,  # False代表入站规则,True代表出站
                    'Action': 'allow',  # 此处Action不影响删除,只需匹配规则编号和方向
                    'CidrBlock': '0.0.0.0/0',  # 此处CidrBlock不影响删除,只需匹配规则编号和方向
                    'Protocol': '-1'  # 此处Protocol不影响删除,只需匹配规则编号和方向
                }
            ],
            DryRun=False  # 设置为True可先执行测试,不会实际修改规则
        )
        
        print(f"成功移除入站规则{rule_number_to_remove},响应:{response}")
        return {
            'statusCode': 200,
            'body': f"入站规则{rule_number_to_remove}已成功移除"
        }
    
    except Exception as e:
        print(f"移除规则失败:{str(e)}")
        return {
            'statusCode': 500,
            'body': f"移除规则失败:{str(e)}"
        }

关键说明

  • 删除规则时,只需确保RuleNumber和Egress参数与目标入站规则完全匹配,其他参数(如CidrBlock、Protocol)可填写任意值,API会根据规则编号和方向定位并删除规则
  • 若需要批量移除多个入站规则,可在Entries列表中添加多个规则对象,每个对象对应一个要删除的规则编号
  • 执行前可将DryRun设为True,进行模拟操作,验证权限和参数是否正确,避免误修改

内容的提问来源于stack exchange,提问作者Eric Delos Santos Belgar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:29:56