Ubuntu上用Boto3管理云服务器EC2生命周期教程
文章分类:行业新闻 /
创建时间:2026-01-28
Ubuntu上用Boto3管理云服务器EC2生命周期教程
一、前置环境准备
在开始操作前,先在Ubuntu系统完成Boto3(AWS SDK for Python,用于与亚马逊云服务交互的Python开发工具包)的安装与AWS凭证配置。
更新Ubuntu软件源,安装Python3及pip工具,执行以下命令:
sudo apt update && sudo apt install -y python3 python3-pip通过pip3安装最新版Boto3:
sudo pip3 install boto3配置AWS访问凭证时,在Ubuntu用户目录下创建凭证存储目录与文件:
mkdir -p ~/.aws && touch ~/.aws/credentials编辑文件并添加以下内容,替换为您的AWS密钥:
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY最后设置文件权限,避免凭证泄露:
chmod 600 ~/.aws/credentials二、创建云服务器EC2实例
EC2(弹性计算云,Elastic Compute Cloud,可弹性扩展的云服务器服务)实例的生命周期从创建开始,通过Boto3的run_instances方法即可完成操作。云服务器的创建参数需提前在AWS控制台准备,包括密钥对、安全组,以及对应区域的Ubuntu镜像AMI ID。
执行以下示例代码创建实例:
import boto3
# 初始化EC2客户端(指定目标区域)
ec2 = boto3.client('ec2', region_name='us-east-1')
# 定义实例创建核心参数
instance_params = {
'ImageId': 'ami-0c55b159cbfafe1f0', # Ubuntu 20.04 LTS AMI(需替换为对应区域的AMI ID)
'InstanceType': 't2.micro',
'KeyName': 'your-key-pair', # 提前在AWS控制台创建的密钥对名称
'MinCount': 1,
'MaxCount': 1,
'SecurityGroupIds': ['sg-xxxxxxxx'] # 已配置的安全组ID
}
# 执行实例创建操作
response = ec2.run_instances(**instance_params)
# 提取并返回实例ID
instance_id = response['Instances'][0]['InstanceId']
print(f"成功创建云服务器实例,ID:{instance_id}")三、查询云服务器EC2实例状态
创建完成后,可通过Boto3的describe_instances方法查询云服务器EC2实例的生命周期状态,精准掌握实例运行情况。
使用以下代码按状态过滤查询实例:
import boto3
ec2 = boto3.client('ec2', region_name='us-east-1')
# 按状态过滤查询实例
response = ec2.describe_instances(Filters=[
{'Name': 'instance-state-name', 'Values': ['running', 'stopped']}
])
# 解析并输出实例核心信息
for reservation in response['Reservations']:
for instance in reservation['Instances']:
print(f"实例ID:{instance['InstanceId']},状态:{instance['State']['Name']},公网IP:{instance.get('PublicIpAddress', '未分配')}")四、启停与重启云服务器EC2实例
云服务器EC2实例的生命周期中,状态切换是高频操作。Boto3提供对应API,可快速实现实例的启动、停止与重启。
1. 启动/停止实例
执行以下代码完成实例状态切换:
# 启动指定stopped状态的实例
ec2.start_instances(InstanceIds=[instance_id])
# 停止指定running状态的实例
ec2.stop_instances(InstanceIds=[instance_id])启动操作仅对stopped状态实例生效,停止操作仅对running状态实例生效。操作前查询实例状态,能有效避免报错。
2. 重启实例
# 重启运行中实例(保留磁盘数据)
ec2.reboot_instances(InstanceIds=[instance_id])重启操作适用于系统配置更新、临时故障恢复场景,无需销毁实例即可重置系统状态。
五、销毁云服务器EC2实例
当云服务器EC2实例生命周期结束时,使用terminate_instances方法销毁实例,注意该操作不可逆,需提前备份磁盘数据。
执行以下代码并处理异常:
import boto3
from botocore.exceptions import ClientError
ec2 = boto3.client('ec2', region_name='us-east-1')
try:
# 执行销毁操作
response = ec2.terminate_instances(InstanceIds=[instance_id])
# 确认销毁状态
for instance in response['TerminatingInstances']:
print(f"实例{instance['InstanceId']}已进入销毁状态,原状态:{instance['PreviousState']['Name']}")
except ClientError as e:
print(f"销毁失败:{e.response['Error']['Message']}")六、异常处理与最佳实践
代码中需捕获Boto3的ClientError异常,处理权限不足、实例不存在等常见问题。在Ubuntu上管理云服务器全生命周期,遵循以下最佳实践能提升效率与安全性。
使用IAM角色代替硬编码凭证,在Ubuntu上运行的应用可直接关联IAM角色,避免本地凭证泄露风险。
遵循最小权限原则,为IAM用户分配仅能管理EC2实例的权限,禁止过度授权。
批量操作时注重幂等性,通过过滤条件确保操作仅对目标实例生效,避免误操作影响正常业务。
定期清理超过生命周期的测试实例,降低云资源成本,优化资源利用率。
搭载CN2 GIA线路的抗投诉云服务器,适配Ubuntu系统稳定运行,能为您的云资源管理提供更可靠的基础支撑。
上一篇: 海外VPS科学上网:原理、风险及合法替代
工信部备案:苏ICP备2025168537号-1