Spec-Zone.ru › AWS CLI v2

[ aws . темы ]

Настройка 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.24xlarge
      • p4de.24xlarge
      • p5.48xlarge
      • trn1n.32xlarge
      • trn1.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 значения конфигурации - Игнорируются эти значения конфигурации.

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API