Настройка AWS CLI S3
Команды передачи aws s3, включающие в себя команды cp, sync, mv и rm, имеют дополнительные значения конфигурации, которые вы можете использовать для управления передачами S3. В этом руководстве рассматриваются эти параметры, а также лучшие практики и рекомендации по настройке этих значений.
Прежде чем обсуждать конкретику этих значений, обратите внимание, что эти значения являются полностью необязательными. Вы должны иметь возможность использовать команды передачи aws s3 без необходимости настройки этих значений. Эти значения конфигурации предоставляются в том случае, если вам нужно изменить одно из этих значений, либо по причинам производительности, либо для учета конкретной среды, в которой выполняются команды aws s3.
Значения конфигурации
Это значения конфигурации, которые можно задать для набора команд aws s3:
-
max_concurrent_requests- Максимальное количество одновременных запросов. -
max_queue_size- Максимальное количество задач в очереди задач. -
multipart_threshold- Пороговое значение размера, используемое CLI для многочастотных передач отдельных файлов. -
multipart_chunksize- При использовании многочастотных передач, это размер фрагмента, используемый CLI для многочастотных передач отдельных файлов. -
max_bandwidth- Максимальная пропускная способность, которая будет использоваться для загрузки и скачивания данных в Amazon S3 и из него.
Для экспериментальных значений конфигурации s3 см. раздел Экспериментальные значения конфигурации.
Это значения конфигурации, которые можно задать как для aws s3, так и для aws s3api:
-
use_accelerate_endpoint- Использовать конечную точку Amazon S3 Accelerate для всех командs3иs3api. Необходимо предварительно включить S3 Accelerate для вашего ведра, прежде чем пытаться использовать эту конечную точку. Это взаимоисключающее свойство с опциейuse_dualstack_endpoint. -
use_dualstack_endpoint- Использовать конечную точку Amazon S3 с двойным IPv4/IPv6 для всех командs3иs3api. Это взаимоисключающее свойство с опциейuse_accelerate_endpoint. -
addressing_style- Указывает, какой стиль адресации использовать. Это управляет тем, находится ли имя ведра в имени хоста или является частью URL-адреса. Допустимые значения:path,virtualиauto. Значение по умолчанию -auto. -
payload_signing_enabled- Определяет, нужно ли подписывать payload sigv4 с помощью SHA256. По умолчанию это отключено для потоковой загрузки (UploadPart и PutObject) при использовании https.
Эти значения необходимо задать в ключе верхнего уровня s3 в файле конфигурации AWS, который имеет расположение по умолчанию ~/.aws/config. Ниже приведен пример конфигурации:
[profile development]
aws_access_key_id=foo
aws_secret_access_key=bar
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
multipart_threshold = 64MB
multipart_chunksize = 16MB
max_bandwidth = 50MB/s
use_accelerate_endpoint = true
addressing_style = path
Обратите внимание, что все значения конфигурации S3 отступом вложены под ключом верхнего уровня s3.
Вы также можете установить эти значения программно, используя команду aws configure set. Например, чтобы установить вышеперечисленные значения для профиля по умолчанию, вы можете вместо этого выполнить следующие команды:
$ aws configure set default.s3.max_concurrent_requests 20
$ aws configure set default.s3.max_queue_size 10000
$ aws configure set default.s3.multipart_threshold 64MB
$ aws configure set default.s3.multipart_chunksize 16MB
$ aws configure set default.s3.max_bandwidth 50MB/s
$ aws configure set default.s3.use_accelerate_endpoint true
$ aws configure set default.s3.addressing_style path
Чтобы программно установить эти значения для профиля, отличного от профиля по умолчанию, можно использовать флаг --profile. Например, чтобы установить конфигурацию для профиля с именем test-profile, можно выполнить следующую команду:
$ aws configure set s3.max_concurrent_requests 20 --profile test-profile
max_concurrent_requests
По умолчанию - 10
Команды передачи aws s3 многопоточные. В любой момент времени выполняются несколько запросов в Amazon S3. Например, если вы загружаете каталог через aws s3 cp localdir s3://bucket/ --recursive, AWS CLI может загружать локальные файлы localdir/file1, localdir/file2 и localdir/file3 параллельно. max_concurrent_requests задаёт максимальное количество команд передачи, разрешённых в любой момент времени.
Вам может потребоваться изменить это значение по нескольким причинам:
- Уменьшение значения - В некоторых средах значение по умолчанию в 10 одновременных запросов может перегружать систему. Это может привести к таймаутам соединений или замедлить отклик системы. Уменьшение этого значения сделает команды передачи S3 менее ресурсоёмкими. Компромисс заключается в том, что передачи S3 могут занимать больше времени. Уменьшение этого значения может быть необходимо, если используется инструмент, такой как
trickle, для ограничения пропускной способности. - Увеличение значения - В некоторых сценариях вы можете захотеть, чтобы передачи S3 завершились как можно быстрее, используя всю необходимую пропускную способность сети. В этом случае значения по умолчанию может быть недостаточно для использования всей доступной пропускной способности. Увеличение этого значения может улучшить время завершения передачи S3.
max_queue_size
По умолчанию - 1000
AWS CLI внутренне использует модель "производитель-потребитель", где мы помещаем в очередь задачи S3, которые затем выполняются потребителями, которые в данном случае используют ограниченный пул потоков, управляемый max_concurrent_requests. Задача обычно соответствует одной операции S3. Например, задача может быть PutObjectTask, GetObjectTask или UploadPartTask. Скорость помещения в очередь может быть намного выше, чем скорость выполнения задач потребителями. Для предотвращения неограниченного роста размер очереди задач ограничен определенным размером. Это значение конфигурации меняет значение этого максимального числа.
Обычно вам не нужно изменять это значение. Это значение также соответствует количеству задач, о которых мы знаем, которые нужно выполнить. Это означает, что по умолчанию мы можем видеть только 1000 задач впереди. Пока команда S3 не узнает общее количество выполненных задач, строка прогресса будет показывать общее значение .... Увеличение этого значения означает, что мы сможем быстрее узнать общее количество необходимых задач, предполагая, что скорость помещения в очередь выше, чем скорость потребления задач. Компромисс заключается в том, что больший размер очереди потребует больше памяти.
multipart_threshold
По умолчанию - 8MB
При загрузке, скачивании или копировании файла команды S3 переключаются на многочастотные операции, если файл достигает определённого порогового значения размера. multipart_threshold управляет этим значением. Вы можете указать это значение двумя способами:
- Размер файла в байтах. Например,
1048576. - Размер файла с суффиксом размера. Вы можете использовать
KB,MB,GB,TB. Например:10MB,1GB. Обратите внимание, что S3 накладывает ограничения на допустимые значения, которые могут использоваться для многочастотных операций.
multipart_chunksize
По умолчанию - 8MB
Минимальное значение для загрузки - 5MB
После того, как команды S3 решили использовать многочастотные операции, файл делится на фрагменты. Этот параметр конфигурации определяет размер фрагмента (также называемый размером части). Это значение можно указать с помощью тех же семантик, что и для multipart_threshold, то есть либо как число байтов в виде целого числа, либо с использованием суффикса размера. Если указанный размер фрагмента не соответствует установленным пределам для многочастотных загрузок S3, размер фрагмента будет автоматически скорректирован до допустимого значения.
max_bandwidth
По умолчанию - Нет
Это управляет максимальной пропускной способностью, которую команды S3 будут использовать при потоковой передаче данных в S3 и из S3. Таким образом, это значение применимо только для загрузки и скачивания. Оно не применяется к копированию и удалению, поскольку эти передачи данных выполняются на стороне сервера. Значение может быть указано как:
- Целое число в байтах в секунду. Например,
1048576установит максимальное использование пропускной способности до 1 МБ в секунду. - Суффикс скорости. Это может быть выражено в байтах в секунду (
B/s) или битах в секунду (b/s). Вы можете указать суффиксы скорости, используя:KB/s,MB/s,GB/s,Kb/s,Mb/s,Gb/sи т.д. Например:300KB/s,10MB/s,300Kb/s,10Mb/s.
В общем случае рекомендуется сначала использовать max_concurrent_requests, чтобы снизить передачи до желаемого потребления пропускной способности. Затем следует использовать max_bandwidth для дальнейшего ограничения пропускной способности, если использование max_concurrent_requests не позволяет снизить потребление пропускной способности до желаемой скорости. Это рекомендуется, поскольку max_concurrent_requests управляет количеством запущенных потоков. Поэтому, если задано высокое значение max_concurrent_requests и низкое значение max_bandwidth, это может привести к ненужному ожиданию потоков, что может привести к избыточному потреблению ресурсов и таймаутам соединений.
use_accelerate_endpoint
По умолчанию - false
Если установлено в true, все запросы Amazon S3 будут направлены на конечную точку S3 Accelerate: s3-accelerate.amazonaws.com. Для использования этой конечной точки ваше ведро должно быть включено для использования S3 Accelerate. Все запросы будут отправлены с использованием виртуального стиля адресации ведра: my-bucket.s3-accelerate.amazonaws.com. Запросы ListBuckets, CreateBucket и DeleteBucket не будут отправлены на конечную точку Accelerate, так как она не поддерживает эти операции. Это поведение также может быть установлено, если параметр --endpoint-url установлен в https://s3-accelerate.amazonaws.com или http://s3-accelerate.amazonaws.com для любой команды s3 или s3api. Эта опция взаимоисключающая с опцией use_dualstack_endpoint.
use_dualstack_endpoint
По умолчанию - false
Если установлено в true, все запросы Amazon S3 будут направлены на двойную IPv4/IPv6 конечную точку для настроенного региона. Эта опция взаимоисключающая с опцией use_accelerate_endpoint.
addressing_style
По умолчанию - auto
Существует два стиля построения конечной точки S3. Первый — с включённым в имя хоста именем ведра. Это соответствует стилю адресации virtual. Второй — с включённым в путь URI именем ведра, соответствующий стилю адресации path. Значение по умолчанию в CLI — использовать auto, который попытается использовать virtual, когда это возможно, но вернётся к стилю path при необходимости. Например, если имя вашего ведра не совместимо с DNS, имя ведра не может быть частью имени хоста и должно быть частью пути. С помощью auto CLI обнаружит это условие и автоматически переключится на стиль path за вас. Если вы установите стиль адресации в path, вы должны убедиться, что AWS регион, который вы настроили в AWS CLI, соответствует тому же региону вашего ведра.
payload_signing_enabled
Если установлено в значение true, пакеты s3 получат дополнительную проверку содержимого в виде контрольной суммы SHA256, которая будет рассчитана и включена в подпись запроса. Если установлено в значение false, контрольная сумма не будет рассчитана. Отключение этого может быть полезным для экономии производительности, которую иначе потребовало бы вычисление контрольной суммы.
По умолчанию это отключено для потоковых загрузок (UploadPart и PutObject), но только если присутствует ContentMD5 (он генерируется по умолчанию) и используется конечная точка HTTPS.
preferred_transfer_client
По умолчанию - auto
Определяет базовый клиент передачи Amazon S3 для передачи файлов в S3 и из S3. Допустимые значения:
-
auto- Автоматически выбирает клиент передачи Amazon S3. В настоящее время он выбираетcrt, когда выполняются все следующие условия:- Используемая команда
s3не является передачей копирования S3 в S3. Клиент передачиcrtв настоящее время поддерживает только загрузки в S3, загрузки из S3 и удаление объектов S3. - Хост, на котором выполняется AWS CLI, оптимизирован для клиента передачи
crt. В настоящее время клиент передачиcrtоптимизирован для экземпляров Amazon EC2, работающих под Linux, и любого из этих типов экземпляров:p4d.24xlargep4de.24xlargep5.48xlargetrn1n.32xlargetrn1.32xlarge
- Нет других запущенных процессов AWS CLI, использующих клиент передачи CRT S3. Чтобы принудительно заставить несколько одновременно работающих процессов AWS CLI использовать клиент передачи CRT S3, установите переменную конфигурации
preferred_transfer_clientв значениеcrt.
В противном случае он выбирает
classic. Критерии автоматического выбора могут меняться между версиями AWS CLI. Чтобы гарантировать использование определенного клиента передачи, установите переменную конфигурацииpreferred_transfer_clientв соответствующее значение, указанное ниже. - Используемая команда
-
classic- Используйте встроенный клиент передачи, основанный на Python, который поддерживает все командыs3, параметры и большинство значений конфигурации. -
crt- Используйте клиент передачи AWS Common Runtime (CRT), когда это возможно. Это клиент передачи S3 на основе C, который может улучшить пропускную способность передачи. В настоящее время клиент передачи CRT не поддерживает все функции, доступные в клиенте передачиclassic. Ниже приведен список функций, которые в настоящее время не поддерживаются вариантом клиента передачиcrt, и соответствующее поведение AWS CLI, если он настроен на использование клиента передачиcrt:- Копирование S3 в S3 - Возвращается к использованию клиента передачи
classic - Перенаправления регионов - Передачи завершаются неудачно для запросов, отправленных в регион, не совпадающий с регионом целевого хранилища S3.
-
max_concurrent_requests,max_queue_size,multipart_threshold, иmax_bandwidthзначения конфигурации - Игнорируются эти значения конфигурации.
- Копирование S3 в S3 - Возвращается к использованию клиента передачи
target_bandwidth
Примечание
Этот параметр конфигурации поддерживается только при установке или разрешении значения конфигурацииpreferred_transfer_client в crt. Клиент передачи classic не поддерживает этот параметр конфигурации.По умолчанию - Автоматически определено на основе системы
Управляет целевой пропускной способностью, которую клиент передачи будет пытаться достичь для загрузки и выгрузки из S3. По умолчанию AWS CLI автоматически попытается выбрать целевую пропускную способность, соответствующую максимальной пропускной способности системы. В настоящее время, если AWS CLI не может определить максимальную пропускную способность сети, AWS CLI возвращается к целевой пропускной способности в десять гигабит в секунду (т.е. эквивалентно установке параметра конфигурации target_bandwidth в значение 10000000000b/s). Чтобы установить определенную целевую пропускную способность, явно настройте параметр конфигурации target_bandwidth. Его значение может быть указано как:
- Целое число в байтах в секунду. Например,
1073741824установит целевую пропускную способность в 1 гигабайт в секунду. - Приставка скорости. Это можно выразить в байтах в секунду (
B/s) или битах в секунду (b/s). Вы можете указать приставки скорости, используя:KB/s,MB/s,GB/s,Kb/s,Mb/s,Gb/sи т.д. Например:200MB/s,10GB/s,200Mb/s,10Gb/s. При указании приставок скорости значения расширяются с помощью степеней 2, а не 10. Например, указание1KB/sэквивалентно указанию1024B/sвместо1000B/s.
Разница между target_bandwidth и max_bandwidth заключается в том, что max_bandwidth предназначена только для ограничения скорости и не вносит никаких корректировок для увеличения пропускной способности. Конфигурация target_bandwidth может вносить корректировки во время команды передачи для увеличения пропускной способности и достижения запрошенной пропускной способности.
Экспериментальные значения конфигурации
Предупреждение
Все значения конфигурации, указанные в этом разделе, считаются экспериментальными и не рекомендуются для использования в рабочей среде. Кроме того, обратная совместимость или даже существование каждого значения конфигурации не гарантируется между версиями AWS CLI.В настоящее время экспериментальных значений конфигурации нет.
© Copyright 2025, Amazon Web Services. Created using Sphinx.