我想在使用 AWS 命令行界面 (AWS CLI) 向 Amazon Simple Storage Service (Amazon S3) 上传大文件(1GB 或更大)时优化性能。
简短描述
如果您要将大文件上传到 Amazon S3,则最佳做法是使用分段上传。此外,为分段上传配置对象大小阈值。当您使用 AWS CLI 上传文件时,若对象大小超过阈值,所有高级 aws s3 命令都会自动执行分段上传。这些高级命令包括 aws s3 cp 和 aws s3 sync。
要优化性能,请选择以下方法之一:
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
选项 1: 在 AWS CLI 中使用基于 CRT 的客户端
要使用基于 CRT 的客户端,请完成以下步骤:
-
将 preferred_transfer_client 添加到您的 AWS CLI 配置文件中:
[default]s3 =
preferred_transfer_client = crt
或者,运行 configure 命令:
aws configure set default.s3.preferred_transfer_client crt
-
运行 cp 命令以验证 CRT 客户端是否处于活动状态:
aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt
CRT 客户端处于活动状态时的输出示例:
aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt
\[DEBUG\] \[2025-12-01T07:58:46Z\] \[00007fe20f9b9340\] \[tls-handler\] - Set security policy to AWS-CRT-SDK-TLSv1.0-2025-PQ (minimum\_tls\_version: 128; cipher\_pref: 0)
2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Recommended CRT throughput target in gbps: None
2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Using CRT throughput target in gbps: 10.0
-
(可选)设置 target_bandwidth 以控制最大吞吐量。将 target_bandwidth 值添加到您的 AWS CLI 配置文件中:
\[default\]
s3 =
preferred\_transfer\_client = crt
target\_bandwidth = 1Gb/s
或者,运行 configure 命令:
aws configure set default.s3.target_bandwidth 1Gb/s
**注意:**仅当您有特定带宽需求时进行此配置。AWS CLI 会根据您的系统能力自动优化带宽。此值的错误配置可能会使您的网络或系统资源不堪重负。最佳做法是将此选项保留为空。
激活基于 CRT 的客户端后,AWS CLI 会自动使用该客户端进行文件上传。与标准 AWS CLI 相比,这可以提高性能和可靠性,尤其是对于大文件上传。
使用以下参数自定义分段上传:
| 参数 | 描述 | 默认值 | 建议 |
|---|
| max_bandwidth | 上传数据到 Amazon S3 的最大带宽 | 无(无限制) | 设置以防止网络饱和。 |
| max_concurrent_requests | 向 Amazon S3 发出的同步请求数 | 10 | 对于具有足够系统资源的高带宽连接,可增加到 20-50。 |
| max_queue_size | 传输队列中的最大任务数 | 1,000 | 对于包含大量文件的批量操作,可增加此值。 |
| multipart_chunksize | 每个上传分段的大小 | 8MB | 对于大于 1GB、分块数少于 10,000 的文件,可增加到 16-64MB。 |
| multipart_threshold | 触发分段上传的文件大小 | 8MB | 对于大多数 [?] 使用案例,保留默认值。 |
**注意:**检查您的计算机是否有足够的资源来支持所需的最大并发请求数。
选项 2: 启用 S3 Transfer Acceleration
Amazon S3 Transfer Acceleration 可在您的客户端与 Amazon S3 之间实现快速、安全的长距离传输。Transfer Acceleration 利用 Amazon CloudFront 的全球分布式边缘站点。
Transfer Acceleration 会产生额外费用,因此请务必查看定价。要确定 Transfer Acceleration 是否会提高您的使用案例的传输速度,请查看 Amazon S3 Transfer Acceleration Speed Comparison 工具。
**注意:**Transfer Acceleration 不支持跨 AWS 区域的 CopyObject 复制操作。
要启用 Amazon S3 Transfer Acceleration,请完成以下步骤:
-
为您的存储桶启用 S3 Transfer Acceleration。
-
为单个文件传输指定加速终端节点:
aws s3 cp large-file.zip s3://your-bucket-name/ --endpoint-url https://s3-accelerate.amazonaws.com
或者,在 CLI 配置文件中配置端点以应用于所有文件传输:
\[default\]
s3 =
use\_accelerate\_endpoint = true
相关信息
AWS CLI S3 配置
什么是 AWS 命令行界面?