AWS云计算的重要性
Amazon Web Services (AWS) 是全球领先的云计算平台,提供了超过200种云服务。对于Python开发者来说,掌握AWS服务的使用能够构建可扩展、高可用的云应用。通过boto3库,Python开发者可以轻松地与AWS服务进行交互,实现自动化部署、监控和管理。
boto3基础
1. 环境配置和认证
import boto3
import json
from datetime import datetime
from botocore.exceptions import ClientError
def aws_setup_demo():
"""AWS环境配置演示"""
print("=== AWS环境配置 ===")
# 1. 配置AWS凭证
print("1. AWS凭证配置方式:")
print(" • 环境变量: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY")
print(" • AWS配置文件: ~/.aws/credentials")
print(" • IAM角色: EC2实例自动获取权限")
print(" • AWS CLI: aws configure")
# 2. 创建会话
print("\n2. 创建AWS会话:")
# 使用默认配置创建会话
session = boto3.Session()
print(f" 默认区域: {session.region_name}")
# 指定区域创建会话
session_us_east = boto3.Session(region_name='us-east-1')
print(f" 指定区域: {session_us_east.region_name}")
# 3. 创建客户端和资源
print("\n3. 创建客户端和资源:")
# 客户端方式(低级API)
s3_client = boto3.client('s3')
print(f" S3客户端: {s3_client}")
# 资源方式(高级API)
s3_resource = boto3.resource('s3')
print(f" S3资源: {s3_resource}")
return session, s3_client, s3_resource
session, s3_client, s3_resource = aws_setup_demo()
2. 错误处理和重试机制
def aws_error_handling_demo():
"""AWS错误处理演示"""
print("\n=== AWS错误处理 ===")
from botocore.config import Config
from botocore.exceptions import ClientError, NoCredentialsError
# 1. 配置重试机制
print("1. 配置重试机制:")
config = Config(
retries={
'max_attempts': 3,
'mode': 'adaptive'
},
region_name='us-east-1'
)
s3_client = boto3.client('s3', config=config)
print(" 已配置重试机制")
# 2. 错误处理示例
print("\n2. 错误处理示例:")
def safe_s3_operation():
"""安全的S3操作"""
try:
# 尝试列出存储桶
response = s3_client.list_buckets()
print(" S3操作成功")
return response
except NoCredentialsError:
print(" 错误: 未找到AWS凭证")
except ClientError as e:
error_code = e.response['Error']['Code']
error_message = e.response['Error']['Message']
print(f" 错误: {error_code} - {error_message}")
except Exception as e:
print(f" 未知错误: {str(e)}")
return None
# 执行安全操作
result = safe_s3_operation()
return s3_client
s3_client = aws_error_handling_demo()
EC2实例管理
1. 实例创建和管理
def ec2_instance_demo():
"""EC2实例管理演示"""
print("\n=== EC2实例管理 ===")
# 创建EC2资源
ec2 = boto3.resource('ec2')
ec2_client = boto3.client('ec2')
# 1. 查看可用实例类型
print("1. 查看可用实例类型:")
instance_types = ['t2.micro', 't2.small', 't2.medium', 't3.micro', 't3.small']
print(" 常用实例类型:")
for instance_type in instance_types:
print(f" • {instance_type}")
# 2. 启动实例(演示代码)
print("\n2. 启动实例:")
print(" 注意: 以下代码需要有效的AWS凭证才能执行")
def launch_instance_demo():
"""启动实例演示"""
try:
# 用户数据脚本
user_data = """#!/bin/bash
yum update -y
yum install -y python3 pip
pip3 install flask
echo 'Hello from EC2!' > /var/www/html/index.html
"""
print(" 准备启动实例...")
print(" 实例类型: t2.micro")
print(" 用户数据: 安装Python和Flask")
# 注意:实际使用时需要取消注释以下代码
# instances = ec2.create_instances(
# ImageId='ami-0c55b159cbfafe1d0', # Amazon Linux 2
# MinCount=1,
# MaxCount=1,
# InstanceType='t2.micro',
# UserData=user_data,
# TagSpecifications=[
# {
# 'ResourceType': 'instance',
# 'Tags': [
# {'Key': 'Name', 'Value': 'Python-Demo-Instance'},
# {'Key': 'Environment', 'Value': 'Demo'}
# ]
# }
# ]
# )
except ClientError as e:
print(f" 启动实例失败: {e}")
launch_instance_demo()
return ec2, ec2_client
ec2, ec2_client = ec2_instance_demo()
S3存储服务
1. S3基础操作
def s3_basic_demo():
"""S3基础操作演示"""
print("\n=== S3存储服务 ===")
# 1. 创建存储桶
print("1. 创建存储桶:")
def create_bucket_demo():
"""创建存储桶演示"""
bucket_name = 'python-demo-bucket-2019'
try:
# 创建存储桶
s3_client.create_bucket(
Bucket=bucket_name,
CreateBucketConfiguration={'LocationConstraint': 'us-east-1'}
)
print(f" 存储桶创建成功: {bucket_name}")
return bucket_name
except ClientError as e:
error_code = e.response['Error']['Code']
if error_code == 'BucketAlreadyExists':
print(f" 存储桶已存在: {bucket_name}")
else:
print(f" 创建存储桶失败: {e}")
return bucket_name
bucket_name = create_bucket_demo()
# 2. 上传文件
print("\n2. 上传文件:")
def upload_file_demo():
"""上传文件演示"""
try:
# 创建示例文件
file_content = """# Python AWS Demo
这是一个Python AWS演示文件
创建时间: 2019-07-05
import boto3
def hello_aws():
print("Hello AWS!")
if __name__ == "__main__":
hello_aws()
"""
# 上传文件
s3_client.put_object(
Bucket=bucket_name,
Key='demo/python_demo.py',
Body=file_content.encode('utf-8'),
ContentType='text/plain',
Metadata={
'author': 'Python Developer',
'created': '2019-07-05'
}
)
print(" 文件上传成功: demo/python_demo.py")
except ClientError as e:
print(f" 文件上传失败: {e}")
upload_file_demo()
return bucket_name
bucket_name = s3_basic_demo()
总结
AWS云计算服务的关键要点:
- boto3基础:环境配置、认证、错误处理、重试机制
- EC2实例管理:实例创建、配置、用户数据、标签管理
- S3存储服务:存储桶创建、文件上传、元数据管理
- 最佳实践:安全性、成本优化、可靠性、性能优化
掌握这些AWS技能,可以构建可扩展、高可用的云应用,实现自动化部署和运维。
转载请注明:周志洋的博客 » Python云计算-AWS服务详解


