0Pricing
Cloud & IT Cert Prep · 课时

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 time

S3 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 file

S3 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 调整资源规格与 Compute Optimizer
  2. 预留实例、Savings Plans 与 Spot
  3. Cost Explorer、预算与成本分配标签
  4. S3 与数据传输成本优化
← 返回 Cloud & IT Cert Prep