S3 与数据传输成本优化
应用 S3 Intelligent-Tiering、生命周期规则、S3 Select 和 CloudFront,显著降低存储和数据传输成本
S3 与数据传输成本优化 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
S3 存储成本基础
Amazon S3 存储成本会因存储类和访问模式而显著不同。S3 Standard 每月每 GB 的费用约为 0.023 美元——在 PB 级规模下,这笔费用会变得相当可观。好消息是,S3 提供了七种针对不同访问频率优化的存储类,价格范围从 0.023 美元/GB(Standard)到 0.00099 美元/GB(Glacier Deep Archive)。S3 成本优化的关键,是将数据匹配到合适的存储类,并通过生命周期策略自动执行转换。
# S3 storage class costs (us-east-1 approximate):
# S3 Standard: $0.023/GB/month
# S3 Intelligent-Tiering: $0.023/GB (frequent) + $0.0125 (infrequent)
# S3 Standard-IA: $0.0125/GB/month + retrieval fee
# S3 One Zone-IA: $0.01/GB/month (single AZ)
# S3 Glacier Instant: $0.004/GB/month + retrieval fee
# S3 Glacier Flexible: $0.0036/GB/month + retrieval time
# S3 Glacier Deep Archive: $0.00099/GB/month + retrieval timeS3 Intelligent-Tiering
S3 Intelligent-Tiering 会根据实际访问模式,在不同访问层之间自动移动对象——不会收取检索费用,频繁访问层也没有最低存储期限。它会在对象级别监控访问情况:连续 30 天未访问的对象会移至低频访问层(便宜 40%),90 天后会移至即时归档层(便宜 68%)。该功能会收取少量月度监控费用(每 1,000 个对象 0.0025 美元)。当您无法预测访问模式,或同一存储桶中同时包含冷热数据时,请使用 Intelligent-Tiering。
# Enable Intelligent-Tiering on objects
aws s3api put-object \
--bucket my-bucket \
--key data/report.parquet \
--body report.parquet \
--storage-class INTELLIGENT_TIERING
# Or set as default for entire bucket
aws s3api put-bucket-intelligent-tiering-configuration \
--bucket my-bucket \
--id whole-bucket-tiering \
--intelligent-tiering-configuration '{
"Id": "whole-bucket-tiering",
"Status": "Enabled",
"Tierings": [
{"AccessTier": "ARCHIVE_ACCESS", "Days": 90},
{"AccessTier": "DEEP_ARCHIVE_ACCESS", "Days": 180}
]
}'用于自动分层的 S3 生命周期规则
S3 生命周期规则会根据对象存续时间自动执行对象转换和过期处理。您可以按前缀或标签定义规则,然后指定在特定天数阈值时执行转换。典型的归档生命周期为:Standard → Standard-IA(30 天)→ Glacier Instant Retrieval(90 天)→ Deep Archive(365 天)→ Delete(2555 天)。随着时间推移,这可以将每 GB 的存储成本从 0.023 美元降至 0.00099 美元——对于归档数据,降幅达到 95%。对于 IA 和 Glacier,生命周期转换要求对象至少为 128KB(更小的对象不适合进行转换)。
# Lifecycle rule: transition logs to archive
aws s3api put-bucket-lifecycle-configuration \
--bucket app-logs-bucket \
--lifecycle-configuration '{
"Rules": [{
"ID": "log-archive",
"Filter": {"Prefix": "logs/"},
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER_IR"},
{"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 2555}
}]
}'S3 Select 和 Glacier Select
S3 Select 允许您使用 SQL 表达式,仅从 S3 对象中检索所需数据,而不必下载整个对象。对于一个 10 GB 的 CSV 文件,如果您只需要其中 100 行,S3 Select 可以只检索这些行,从而大幅降低数据传输成本和应用处理时间。Glacier Select 可对 Glacier 中的对象执行相同操作。S3 Select 支持 CSV、JSON 和 Parquet 格式。在数据分析管道中,许多查询只会访问每个数据文件的部分内容,因此这一功能尤其有价值。
# S3 Select: query a CSV object using SQL expression
aws s3api select-object-content \
--bucket analytics-data \
--key sales/2026-06.csv \
--expression-type SQL \
--expression "SELECT * FROM S3Object WHERE region = 'us-east'" \
--input-serialization 'CSV={FileHeaderInfo=USE}' \
--output-serialization 'CSV={}' \
output.csv
# Only the matching rows are returned
# Saves data transfer cost vs downloading entire fileS3 Multipart Upload 和 Transfer Acceleration
对于大型对象上传,S3 Multipart Upload 会将对象拆分为多个分段(每个分段至少 5 MB),并行上传,从而提高吞吐量并支持断点续传。上传失败的分段可以单独重试,而无需重新开始整个上传。请使用生命周期规则清理未完成的分段上传,以免因这些未完成的分段产生费用。S3 Transfer Acceleration 会通过 AWS CloudFront 边缘站点路由上传请求,从远距离位置上传时速度更快——这对于在全球范围上传大型文件的用户很有用,但会增加费用(额外收取 0.04–0.08 美元/GB)。仅在加速效果可以量化提升时使用此功能。
# Multipart upload example
aws s3api create-multipart-upload \
--bucket my-bucket --key large-file.zip
# Abort incomplete multipart uploads via lifecycle
aws s3api put-bucket-lifecycle-configuration \
--bucket my-bucket \
--lifecycle-configuration '{
"Rules": [{
"ID": "cleanup-incomplete-uploads",
"Status": "Enabled",
"AbortIncompleteMultipartUpload": {"DaysAfterInitiation": 7}
}]
}'了解数据传输成本
数据传输成本是 AWS 账单中最令人意外的部分之一。主要规则如下:入站数据传输(传入 AWS)免费。向互联网传出的数据传输费用约为 0.09 美元/GB(每月前 10 TB)。跨区域数据传输费用约为 0.02 美元/GB。跨 AZ 数据传输在同一区域内双向均为 0.01 美元/GB。同一 AZ 内的数据传输免费。请设计架构以尽量减少跨区域和发往互联网的数据传输——这正是区域化部署和 CloudFront 对于实现高性价比内容分发至关重要的原因。
# Data transfer cost examples (us-east-1):
# Internet (outbound): $0.09/GB (first 10 TB)
# CloudFront -> internet: $0.0085/GB (much cheaper!)
# Cross-region: $0.02/GB
# Cross-AZ (same region): $0.01/GB each direction
# Same AZ: $0.00/GB (free)
# S3 -> CloudFront: $0.00/GB (free!)
# Cost reduction tip:
# S3 -> CloudFront -> users
# vs
# EC2 -> internet -> users
# CloudFront is 10x cheaper for data egress使用 CloudFront 降低数据传输成本
通过 Amazon CloudFront 分发内容,可以通过两种方式大幅降低数据传输成本。首先,CloudFront 的出站费率低于 EC2 或直接从 S3 访问互联网的费率(约为 0.0085 美元/GB,而不是 0.09 美元/GB)。其次,CloudFront 会在边缘站点缓存内容,减少从源站提供数据的次数——同一内容可能只需从源站获取一次,之后便可从缓存中提供数百万次。S3 到 CloudFront 的数据传输也免费。因此,CloudFront 不仅是性能优化工具,也是成本优化工具。
# Cost comparison for 100 TB/month of outbound traffic:
# Direct from EC2/S3 to internet:
# 100,000 GB x $0.09/GB = $9,000/month
# Via CloudFront (assuming 80% cache hit rate):
# 20,000 GB origin pull: free (S3->CF) or $0.02 (EC2->CF)
# 100,000 GB CF->internet: 100,000 x $0.0085 = $850
# Total: ~$1,250 vs $9,000 = 86% savings
# Create CloudFront distribution with S3 origin
aws cloudfront create-distribution \
--distribution-config file://cf-config.json使用 VPC 终端节点避免 NAT Gateway 成本
当私有子网中的 EC2 实例频繁访问 S3 或 DynamoDB 时,NAT Gateway 的数据处理费用(0.045 美元/GB)可能会变得相当可观。您可以改用 S3 和 DynamoDB 的 VPC Gateway Endpoints——它们会通过 AWS 网络骨干网传输流量,完全免费,并且这些服务不需要 NAT Gateway。此外,针对其他 AWS 服务使用 VPC Interface Endpoints(PrivateLink)可以消除该服务流量产生的 NAT Gateway 处理费用,不过 Interface Endpoints 本身会产生少量小时费用。
# Create VPC Gateway Endpoint for S3 (free!)
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345 \
--service-name com.amazonaws.us-east-1.s3 \
--vpc-endpoint-type Gateway \
--route-table-ids rtb-private-AZ1 rtb-private-AZ2
# Traffic from EC2 in private subnet to S3:
# WITHOUT endpoint: EC2 -> NAT GW ($0.045/GB) -> S3
# WITH endpoint: EC2 -> S3 via VPC endpoint ($0.00/GB)
# For DynamoDB:
aws ec2 create-vpc-endpoint \
--service-name com.amazonaws.us-east-1.dynamodb \
--vpc-endpoint-type Gateway优化 S3 请求成本
S3 不仅按存储量收费,也会按 API 请求收费。PUT、COPY、POST、LIST 请求的费用为每 1,000 次 0.005 美元;GET、SELECT 请求的费用为每 1,000 次 0.0004 美元。对于每秒发出数百万次请求的应用,这些费用会不断累积。您可以通过以下方式进行优化:将小对象批量合并为较大的对象(减少请求次数);使用 CloudFront 提供缓存响应(减少发送到源站的 GET 请求);尽可能避免列表操作(LIST 成本较高);使用 S3 Batch Operations 执行批量操作,而不是发出数百万次单独的 API 调用。
# S3 Batch Operations: process millions of objects at once
aws s3control create-job \
--account-id 123456789012 \
--manifest '{
"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},
"Location":{"ObjectArn":"arn:aws:s3:::manifest-bucket/manifest.csv","ETag":"abc123"}
}' \
--operation '{
"S3CopyObject": {
"TargetResource": "arn:aws:s3:::destination-bucket",
"StorageClass": "GLACIER"
}
}' \
--report '{"Bucket":"arn:aws:s3:::report-bucket","Enabled":true}'用于数据传输的 AWS DataSync
对于本地环境与 AWS 之间,或 AWS 服务之间的大规模数据传输,AWS DataSync 比编写自定义传输代码更具成本效益。DataSync 使用专用协议,其吞吐量最高可达到开源工具的 10 倍,并且内置数据验证、计划和监控功能。通过 DataSync 传输到 S3、EFS 或 FSx 的数据会按 AWS 标准数据传输费率收费,但 DataSync 的高效率可以更快完成传输,从而减少大型迁移所需的 EC2 计算时间和成本。
# Create DataSync task to copy S3 bucket to another region
aws datasync create-task \
--source-location-arn arn:aws:datasync:us-east-1:123:location/loc-source \
--destination-location-arn arn:aws:datasync:us-west-2:123:location/loc-dest \
--name 'DR-replication' \
--options '{
"VerifyMode": "ONLY_FILES_TRANSFERRED",
"OverwriteMode": "ALWAYS",
"TransferMode": "CHANGED"
}'
# DataSync pricing: $0.0125/GB transferred用于 S3 可见性的 Storage Lens
Amazon S3 Storage Lens 可跨账户和区域提供整个组织范围内的 S3 存储使用情况和活动指标。它可以发现成本优化机会,例如找出没有生命周期规则的存储桶、包含未完成分段上传的存储桶,或了解存储类分布。S3 Storage Lens 默认控制面板免费;高级指标控制面板每百万个对象收费 0.20 美元,并增加按前缀深入分析和数据存续时间指标。开始任何 S3 成本优化工作时,都应先使用 Storage Lens,以确定影响最大的存储桶。
# Enable S3 Storage Lens dashboard
aws s3control put-storage-lens-configuration \
--account-id 123456789012 \
--config-id default \
--storage-lens-configuration '{
"Id": "default",
"IsEnabled": true,
"DataExport": {
"S3BucketDestination": {
"AccountId": "123456789012",
"Arn": "arn:aws:s3:::my-storage-lens-export",
"Format": "CSV",
"OutputSchemaVersion": "V_1"
}
}
}'快速检查
请测试您对本课 AWS Solutions Architect(SAA-C03)相关概念的理解。
课程回顾
在本课中,您学习了:S3 Intelligent-Tiering 和生命周期规则会自动将数据移至更便宜的存储类,从而降低存储成本;与直接从 S3 或 EC2 提供内容相比,CloudFront 可大幅降低数据传输成本;VPC Gateway Endpoints 可免除 S3 和 DynamoDB 流量产生的 NAT Gateway 费用。S3 Storage Lens 可帮助您了解优化机会。接下来,我们将探讨 KMS、ACM 和加密模式。
常见问题解答
「S3 与数据传输成本优化」课时是免费的吗?
是的 — 「S3 与数据传输成本优化」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「S3 与数据传输成本优化」这节课中我会学到什么?
应用 S3 Intelligent-Tiering、生命周期规则、S3 Select 和 CloudFront,显著降低存储和数据传输成本 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「S3 与数据传输成本优化」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。