我想在使用 AWS 命令行界面 (AWS CLI) 向 Amazon Simple Storage Service (Amazon S3) 上传大文件(1 GB 或更大)时优化性能。
简短描述
如果您要将大文件上传到 Amazon S3,则最佳做法是利用分段上传。如果您使用的是 AWS CLI,则当对象较大时,所有高级 aws s3 命令都会自动执行分段上传。这些高级命令包括 aws s3 cp 和 aws s3 sync。
要优化性能,请选择以下方法之一:
如果您需要进行大规模数据传输或处理复杂的工作负载,请在 AWS CLI 中使用基于 AWS CRT 的客户端。
**注意:**要使用此方法,您必须使用 AWS CLI 版本 2。如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。
解决方法
在 AWS CLI 中使用基于 CRT 的客户端
激活基于 CRT 的客户端
要激活基于 CRT 的客户端,请配置 AWS CLI。为此,请将配置添加到您的 AWS CLI 配置文件 (~/.aws/config) 中,或使用 AWS CLI 进行设置。
将 preferred_transfer_client 添加到您的 AWS CLI 配置文件中:
[default]
s3 =
preferred_transfer_client = crt
或者,在终端中输入以下命令:
aws configure set default.s3.preferred_transfer_client crt
配置 target_bandwidth 选项(可选)
此选项用于控制传输客户端在 S3 上传和下载中尝试达到的目标带宽。默认情况下,AWS CLI 会选择与系统最大网络带宽相匹配的目标带宽。
**注意:**配置 target_bandwidth 值时要小心。如果该值大于本地客户端资源的承载能力,则可能会使客户端不堪重负。最佳做法是将此选项保留为空。
激活基于 CRT 的客户端后,AWS CLI 会自动使用该客户端执行 Amazon S3 操作,包括文件上传。与标准 AWS CLI 相比,这可以提高性能和可靠性,尤其是对于大文件上传。
自定义上传配置
使用以下设置自定义 Amazon S3 的 AWS CLI 配置:
- max_concurrent_requests 此值用于设置可同时发送到 Amazon S3 的请求数量。默认值为 10。
**注意:**如果您运行更多线程,则您的计算机会消耗更多资源。确保您的计算机有足够的资源来支持所需的最大并发请求数。
- max_queue_size 此值用于设置队列中任务的最大数量。默认值为 1,000。
- multipart_threshold 此值用于设置触发单个文件分段上传的大小阈值。默认值为 8 MB。
- multipart_chunksize 此值用于设置 AWS CLI 在单个文件分段上传中上传的每个分段的大小。此设置允许您将较大的文件(例如 300 MB)拆分为较小的分段,以加快上传速度。默认值为 8 MB。
**注意:**分段上传要求单个文件在上传时的独立分段数少于 10,000 个。确保您所设置的区块大小能平衡分段文件大小与分段数量。
- max_bandwidth 此值用于设置将数据上传到 Amazon S3 时的最大带宽。此参数没有默认值。
激活 Amazon 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 复制操作。
相关信息
AWS CLI S3 Configuration(AWS CLI S3 配置)
什么是 AWS 命令行界面?