AWS云服务:EC2、S3与Lambda实战
·
AWS云服务实战:EC2、S3与Lambda深度解析
一、EC2(弹性计算云)
核心功能:提供可扩展的虚拟服务器
实战场景:部署Web应用
# 创建安全组(开放HTTP/HTTPS)
aws ec2 create-security-group --group-name WebServerSG --description "Web Traffic"
# 启动Ubuntu实例(t2.micro)
aws ec2 run-instances --image-id ami-0abcdef1234567890 --count 1 --instance-type t2.micro \
--key-name MyKeyPair --security-groups WebServerSG
关键公式:
实例成本计算(按需定价):
$$ \text{月费用} = \text{实例单价} \times \text{运行小时数} \times 30 $$
例如:$0.0116/\text{小时} \times 24 \times 30 = 8.352\text{美元}$
二、S3(简单存储服务)
核心功能:对象存储服务(99.999999999%持久性)
实战场景:静态网站托管
import boto3
s3 = boto3.client('s3')
# 创建存储桶并启用静态网站
s3.create_bucket(Bucket='my-website-bucket')
s3.put_bucket_website(
Bucket='my-website-bucket',
WebsiteConfiguration={
'IndexDocument': {'Suffix': 'index.html'}
}
)
# 上传HTML文件
s3.upload_file('index.html', 'my-website-bucket', 'index.html')
存储成本模型:
$$ \text{月费用} = \frac{\text{存储量(GB)} \times \text{单价}}{1000} + \text{请求次数} \times \text{请求单价} $$
标准存储:$0.023/GB·月$
三、Lambda(无服务器计算)
核心功能:事件驱动型代码执行(无需管理服务器)
实战场景:图片缩略图生成
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const sharp = require('sharp');
exports.handler = async (event) => {
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;
// 下载原图
const image = await s3.getObject({ Bucket: bucket, Key: key }).promise();
// 生成缩略图
const thumbnail = await sharp(image.Body)
.resize(200, 200)
.toBuffer();
// 上传缩略图
await s3.putObject({
Bucket: bucket,
Key: `thumbnails/${key}`,
Body: thumbnail
}).promise();
};
成本优势:
$$ \text{费用} = \frac{\text{执行时间(ms)} \times \text{内存(GB)}}{1000} \times \text{单价} $$
每百万请求最低$0.20(128MB内存)
四、协同实战:自动化数据处理流水线
架构流程:
- S3触发:用户上传CSV文件至
raw-data桶 - Lambda处理:
- 数据清洗
- 格式转换
- 存储至
processed-data桶
- EC2调度:
- 每日启动分析实例
- 处理
processed-data数据 - 生成报告后自动终止
效益公式:
$$ \text{总成本} = \underbrace{\text{S3存储}}{\text{低频访问}} + \underbrace{\text{Lambda执行}}{\text{按次计费}} + \underbrace{\text{EC2运行}}_{\text{定时关闭}} $$
对比全天运行EC2:成本降低约$70%$
最佳实践:
- EC2用于长时间稳定负载
- Lambda处理突发/事件驱动任务
- S3作为数据中枢连接各服务
通过VPC对等连接确保组件间安全通信
更多推荐

所有评论(0)