首页/新闻资讯/正文详情

Boto3 实战:使用 AWS SDK for Python 管理 Amazon EC2 安全组(Security Group)

发布时间:2026/9/24 23:05:41 来源:云帆数科 栏目:资讯中心
Boto3 实战:使用 AWS SDK for Python 管理 Amazon EC2 安全组(Security Group)
后端云原生【免费下载链接】boto3AWS SDK for Python (Boto3)项目地址https://gitcode.com/gh_mirrors/bo/boto3点击查看免费下载本指南基于 Boto3 官方指南 docs/source/guide/ec2-example-security-group.rst 展开系统讲解如何用 AWS SDK for PythonBoto3查询、创建、授权入站规则并删除 EC2 安全组。你将掌握describe_security_groups、create_security_group、authorize_security_group_ingress、delete_security_group四个 EC2 客户端方法的完整用法、参数语义与异常处理并结合仓库源码理解 Boto3 客户端与资源接口的底层组织方式。背景EC2 安全组是什么Amazon EC2 安全组Security Group本质上是一台虚拟防火墙负责控制一个或多个实例的出入站流量。你可以为每个安全组添加规则Rules决定允许哪些流量进入或离开其关联的实例规则可以随时修改修改后的新规则会自动应用到与该安全组关联的所有实例通常即时生效极小概率存在短暂的传播延迟。在本例场景中Python 代码通过 AWS SDK for Python 完成如下与安全组相关的 EC2 操作涉及 EC2 客户端Client类的以下四个方法方法作用describe_security_groups查询一个或多个安全组的详细信息create_security_group创建一个新的安全组authorize_security_group_ingress为安全组添加入站Ingress规则delete_security_group删除一个已存在的安全组说明原文中该段文字存在笔误manage IAM access keys实际管理对象为安全组本文按真实语义表述。前置条件在运行本文所有示例前你需要先完成两件事安装 Boto3使用pip install boto3建议在虚拟环境中安装详见 docs/source/guide/quickstart.rst。配置 AWS 凭证按 docs/source/guide/quickstart.rst 中的说明配置 AWS 凭证通常是通过aws configure或在~/.aws/credentials中写入访问密钥并在~/.aws/config中指定默认区域例如regionus-east-1。也可以直接在创建客户端时传入region_name。凭证配置完成之前所有 API 调用都会因身份认证失败而抛出ClientError。查询安全组describe_security_groups安全组既可以用于 EC2-Classic 平台的实例也可以用于特定 VPC 中的实例。调用describe_security_groups可以查询一个或多个安全组通过GroupIds参数按安全组 ID 精确查询。import boto3 from botocore.exceptions import ClientError ec2 boto3.client(ec2) try: response ec2.describe_security_groups(GroupIds[SECURITY_GROUP_ID]) print(response) except ClientError as e: print(e)要点说明SECURITY_GROUP_ID需要替换为形如sg-xxxxxxxx的真实安全组 ID。返回值response中SecurityGroups数组包含安全组详情例如GroupId、GroupName、Description、VpcId、IpPermissions入站规则、IpPermissionsEgress出站规则等。若未指定任何筛选条件describe_security_groups默认返回当前账号/区域内全部安全组自动分页可通过MaxResults/NextToken控制。GroupIds与Filters如{Name: group-name, Values: [...]}可组合使用。查询不存在的安全组 ID 时会抛出ClientError因此必须用try/except包裹。⚠️ EC2-Classic 已于 2022 年 8 月 15 日退役官方强烈建议将工作负载迁移到 VPC。新建安全组时务必指定VpcId不要再依赖 EC2-Classic 平台。创建安全组并添加入站规则创建安全组的完整流程分为两步先用create_security_group创建安全组再用authorize_security_group_ingress添加入站规则。规则变更会尽可能快地传播到组内实例但可能仍有少量延迟。import boto3 from botocore.exceptions import ClientError ec2 boto3.client(ec2) response ec2.describe_vpcs() vpc_id response.get(Vpcs, [{}])[0].get(VpcId, ) try: response ec2.create_security_group(GroupNameSECURITY_GROUP_NAME, DescriptionDESCRIPTION, VpcIdvpc_id) security_group_id response[GroupId] print(Security Group Created %s in vpc %s. % (security_group_id, vpc_id)) data ec2.authorize_security_group_ingress( GroupIdsecurity_group_id, IpPermissions[ {IpProtocol: tcp, FromPort: 80, ToPort: 80, IpRanges: [{CidrIp: 0.0.0.0/0}]}, {IpProtocol: tcp, FromPort: 22, ToPort: 22, IpRanges: [{CidrIp: 0.0.0.0/0}]} ]) print(Ingress Successfully Set %s % data) except ClientError as e: print(e)参数详解与实战建议create_security_group参数GroupName安全组名称在 VPC 内必须唯一。Description安全组描述必填参数建议写明用途例如Web server access。VpcId安全组所属 VPC 的 ID。示例中通过describe_vpcs自动获取第一个 VPC 的 ID若账号下没有 VPCresponse.get(Vpcs, [{}])[0].get(VpcId, )会返回空字符串此时创建可能失败或落入非预期平台生产代码中建议显式指定 VPC。返回值response[GroupId]是新创建安全组的 ID必须保存下来供后续授权规则和删除使用。authorize_security_group_ingress参数GroupId目标安全组 ID。IpPermissions入站规则列表每条规则包含IpProtocol协议例如tcp、udp、icmp或-1全部协议。FromPort/ToPort端口范围ICMP 场景下为类型/代码。IpRanges源 CIDR 列表{CidrIp: 0.0.0.0/0}表示允许所有来源 IP。还可用Ipv6Ranges、PrefixListIds、UserIdGroupPairs引用其他安全组等字段。⚠️ 安全提醒示例中同时开放 80HTTP与 22SSH到0.0.0.0/0意味着任何 IP 都能 SSH 登录你的实例仅适用于测试环境。生产环境应将CidrIp收紧为办公网段或跳板机 IP并考虑只开放必要的端口。关于端口复用与幂等性AWS 安全组规则是幂等的重复添加完全相同的规则不会报错Duplicate场景会被服务端去重但删除不存在的规则会失败。删除安全组delete_security_group删除安全组使用delete_security_group(GroupId...)。需要注意如果该安全组仍与某个实例关联或被另一个安全组引用删除操作会失败——在 EC2-Classic 中返回InvalidGroup.InUse在 EC2-VPC 中返回DependencyViolation。因此删除前必须确保先解除关联。import boto3 from botocore.exceptions import ClientError # Create EC2 client ec2 boto3.client(ec2) # Delete security group try: response ec2.delete_security_group(GroupIdSECURITY_GROUP_ID) print(Security Group Deleted) except ClientError as e: print(e)要点说明GroupId为必填也可以使用GroupName仅 EC2-Classic 支持按名称删除VPC 场景必须使用 ID。删除成功时返回值为空字典打印Security Group Deleted即可确认。若安全组仍在被使用ClientError的response[Error][Code]为DependencyViolation或InvalidGroup.InUse可通过判断该错误码给用户更友好的提示。结合仓库源码理解底层实现EC2 客户端方法的来源上述四个方法均来自 Boto3 的底层客户端ClientAPI。在 boto3/init.py 中boto3.client(ec2)经由 boto3/session.py 的Session.client()构造底层依赖 Botocore 加载 EC2 服务的service-2.json模型由botocore包提供从而生成EC2客户端。这意味着方法的参数校验、请求签名、重试逻辑均由该服务模型驱动。安全组的资源级封装除了客户端方法Boto3 还为 EC2 提供了资源Resource级接口。在 boto3/data/ec2/2016-11-15/resources-1.json 以及更早的2014-10-01、2015-03-01、2015-04-15、2015-10-01、2016-04-01、2016-09-15等版本的数据文件中均定义了SecurityGroup资源类型。从源码结构可以推断资源接口会把describe_security_groups等操作封装为高层的ec2.SecurityGroup(id)对象及其方法如sg.create_tags(...)、sg.load()等方便以面向对象方式操作而本文示例采用客户端风格更贴近底层 API 语义。测试与验证仓库的功能测试 tests/functional/test_ec2.py 展示了如何用botocore.stub.Stubber对 EC2 客户端/资源做离线桩测试先stubber.add_response(...)注入期望响应再断言调用结果这为安全组相关代码的单元测试提供了可复用的模式——即使不连真实 AWS也能验证请求参数是否按预期发送。完整运行流程小结配置凭证与区域aws configure或手工编辑~/.aws/credentials、~/.aws/config。用ec2.describe_security_groups()确认现有安全组。用ec2.describe_vpcs()获取 VPC ID再ec2.create_security_group(...)创建安全组。用ec2.authorize_security_group_ingress(...)添加入站规则。不再需要时先解除实例关联再ec2.delete_security_group(...)删除。每一步都应以try/except ClientError包裹并打印错误便于定位权限、参数或依赖问题。更多 EC2 相关示例实例管理、密钥对、区域可用区、弹性 IP见 docs/source/guide/ec2-examples.rst。赞分享后端云原生【免费下载链接】boto3AWS SDK for Python (Boto3)项目地址https://gitcode.com/gh_mirrors/bo/boto3点击查看免费下载相关推荐AWS SDK for Python (Boto3) 操作 Amazon Aurora 数据库实战指南AWS SDK for Python Boto3 操作 Amazon Aurora 数据库实战指南 概述 Amazon Aurora 是 AWS 提供的完全托管示例工程教程后端使用 AWS SDK for C 管理 Amazon EC2 Auto Scaling 组与实例完整场景示例详解使用 AWS SDK for C 管理 Amazon EC2 Auto Scaling 组与实例完整场景示例详解 导读 本文基于 AWS 官方文档示例仓库示例工程教程后端使用 AWS SDK for C 操作 Amazon EC2代码示例全指南使用 AWS SDK for C 操作 Amazon EC2代码示例全指南 导读 本文基于 aws doc sdk examples 仓库中的 cpp/e示例工程教程后端上一篇Diablo Edit2暗黑破坏神II终极角色编辑器完全指南下一篇Diablo Edit2暗黑破坏神II角色编辑器完全指南 - 打造完美游戏体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

银行客户认购预测实战:Python机器学习资源包与避坑指南
银行客户认购预测实战:Python机器学习资源包与避坑指南

简介:这份资源面向希望进入金融风控与客户行为预测领域的数据科学学习者,提供一套完整的银行客户认购产品预测实战方案。项目以Python为工具,围绕客户年龄、职业、收入、历史营销记录等特征,构建从数据清洗、类别编码、特征工程到… · 2026/9/24 23:05:27

Flask+Vue高校教材征订管理系统实战:从数据库设计到部署上线
Flask+Vue高校教材征订管理系统实战:从数据库设计到部署上线

高校教材征订管理系统,用 Flask 写后端、Vue 写前端、PyCharm 做开发,这套组合我完整跑过一轮,从需求梳理到部署上线大概花了三周。如果你也准备做类似的管理系统,或者正在纠结 Flask 和 Django 怎么选,这篇文章应该能… · 2026/9/24 23:05:27

MATLAB CNN图像分类实战:从数据准备到迁移学习与排错
MATLAB CNN图像分类实战:从数据准备到迁移学习与排错

简介:这份资源面向希望快速上手深度学习图像分类的MATLAB用户,尤其适合在校学生、算法入门者与需要课程设计或实验复现的开发者。它提供了一套可直接运行的卷积神经网络分类方案,涵盖数据读取、网络构建、训练与预测全流程,帮助读… · 2026/9/24 23:05:27

ESP32轻量级应用平台:模块化固件与动态启停实践
ESP32轻量级应用平台:模块化固件与动态启停实践

1. 整体设计和框架取舍1.1 为什么要给 ESP32 做一个“应用平台”如果你玩过几块 ESP32,大概率会经历这样一个阶段:先是照着教程点灯、连 WiFi、读传感器,然后开始折腾各种各样的外设模块。这个阶段最大的痛点我估计你也有——每换一个新功能&… · 2026/9/24 23:48:20

中文文本预处理与Word2Vec相似度计算:从CSV到词向量的实践指南
中文文本预处理与Word2Vec相似度计算:从CSV到词向量的实践指南

简介:面向中文自然语言处理初学者与开发者,这份资源完整演示了从文本预处理到Word2Vec词向量训练并计算文本相似度的流程。压缩包共3个文件,包含两个Python脚本和一份CSV中文语料数据集,整体大小仅1.19MB,结构紧凑、即… · 2026/9/24 23:48:20

Mbps与MB/s换算详解:从理论带宽到实际传输速率
Mbps与MB/s换算详解:从理论带宽到实际传输速率

1. 为什么实际传输速率总比理论值低一截1.1 先把“Mb”和“MB”的账算清我最早接触网络带宽这个概念的时候,也犯过一个很经典的错误:以为 100Mbps 的宽带,下载速度就是 100MB/s。直到下载工具里稳定跑出 11.5MB/s,我还去怪运营商缺… · 2026/9/24 23:48:20

千兆宽带速率为何跑不满?Mbps、吞吐量与以太网开销全解析
千兆宽带速率为何跑不满?Mbps、吞吐量与以太网开销全解析

把家里的宽带从百兆提到千兆之后,第一件事一定是测速。我身边不少朋友跑完测速软件都会发来同一个问题:为什么明明显示链路是1.0Gbps,下载文件最快也就一百一十几MB/s,说好的“1000MB/s”去哪儿了?这个误会的根源有两个… · 2026/9/24 23:48:20

把ESP32变成能安装应用的平台:基于MicroPython的脚本应用管理器
把ESP32变成能安装应用的平台:基于MicroPython的脚本应用管理器

去年深夜,我在折腾一块吃灰的ESP32开发板。刚用手机装完一个APP,脑子里突然冒出一个念头:这块板子能不能像手机一样“安装应用”?我当时把这句话发进交流群,立刻有人回“单片机只能烧固件,装什么应用&#… · 2026/9/24 23:48:20

制剂处方数据管理:从经验试错到数据驱动的研发资产
制剂处方数据管理:从经验试错到数据驱动的研发资产

1. 制剂研发的痛点:为什么很多项目“卡”在处方的重复劳动上先讲个我实际经历过的事。几年前我在做一款仿制药的处方前研究,API的溶解度、渗透性数据、稳定性数据都齐全,但我们的处方筛选还是从头开始做——粘度怎么调、崩解剂用哪个级别、pH… · 2026/9/24 23:48:07

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码