Spec-Zone.ru › AWS CLI v2

[ aws ]

s3

Описание

Этот раздел объясняет основные понятия и обозначения в наборе команд S3 высокого уровня.

Если вы ищете команды S3 низкого уровня для командной строки, пожалуйста, обратитесь к странице справки по команде s3api.

Тип аргумента пути

При использовании команды необходимо указать как минимум один аргумент пути. Существует два типа аргументов пути: LocalPath и S3Uri.

LocalPath: представляет путь к локальному файлу или каталогу. Он может быть указан как абсолютный, так и относительный путь.

S3Uri: представляет расположение объекта S3, префикса или ведра. Он должен быть записан в форме s3://amzn-s3-demo-bucket/mykey, где amzn-s3-demo-bucket — указанное ведро S3, а mykey — указанный ключ S3. Аргумент пути должен начинаться с s3://, чтобы указать, что он относится к объекту S3. Обратите внимание, что префиксы разделяются слешами. Например, если объект S3 myobject имел префикс myprefix, ключ S3 был бы myprefix/myobject, а если объект был в ведре amzn-s3-demo-bucket, то S3Uri был бы s3://amzn-s3-demo-bucket/myprefix/myobject.

S3Uri также поддерживает доступные точки S3. Для указания точки доступа это значение должно иметь вид s3://<access-point-arn>/<key>. Например, если используется точка доступа myaccesspoint с ARN: arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint, а доступный объект имеет ключ mykey, то используемый S3URI должен быть: s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/mykey. Аналогично именам ведер, вы также можете использовать префиксы с ARN точек доступа для S3Uri. Например: s3://arn:aws:s3:us-west-2:123456789012:accesspoint/myaccesspoint/myprefix/

Порядок аргументов пути

Каждая команда принимает один или два позиционных аргумента пути. Первый аргумент пути представляет источник, который является локальным файлом/каталогом или объектом/префиксом/ведром S3, на которые делается ссылка. Если есть второй аргумент пути, он представляет собой место назначения, которое является локальным файлом/каталогом или объектом/префиксом/ведром S3, над которым выполняется операция. Команды, имеющие только один аргумент пути, не имеют места назначения, так как операция выполняется только над источником.

Операции с одним локальным файлом и объектом S3

Некоторые команды выполняют операции только над отдельными файлами и объектами S3. Следующие команды являются операциями с одним файлом/объектом, если не указан флаг --recursive.

  • cp
  • mv
  • rm

Для этого типа операции первый аргумент пути, источник, должен существовать и быть локальным файлом или объектом S3. Второй аргумент пути, место назначения, может быть именем локального файла, локального каталога, объекта S3, префикса S3 или ведра S3.

Место назначения указывается как локальный каталог, префикс S3 или ведро S3, если он заканчивается слешем (или обратным слешем). Использование слеша зависит от типа аргумента пути. Если аргумент пути является LocalPath, тип слеша — это разделитель, используемый операционной системой. Если путь является S3Uri, всегда используется прямой слеш. Если слеш стоит в конце места назначения, имя файла или объекта назначения будет таким же, как у исходного файла или объекта. В противном случае, если слеша нет в конце, файл или объект будут сохранены под указанным именем. См. примеры в cp и mv для иллюстрации этого описания.

Операции с каталогами и префиксами S3

Некоторые команды выполняют операции только с содержимым локального каталога или префикса/ведра S3. Добавление или удаление слеша или обратного слеша в конце любого аргумента пути, в зависимости от его типа, не влияет на результаты операции. Следующие команды всегда будут результатом операции с каталогом или префиксом/ведром S3:

  • sync
  • mb
  • rb
  • ls

Использование фильтров исключения и включения

В настоящее время нет поддержки использования шаблонов UNIX в аргументах пути команды. Однако большинство команд имеют параметры --exclude "<value>" и --include "<value>", которые могут достичь желаемого результата. Эти параметры выполняют сопоставление с образцом, чтобы исключить или включить определенный файл или объект. Поддерживаются следующие символы шаблона.

  • *: Сопоставляет всё
  • ?: Сопоставляет любой одиночный символ
  • [sequence]: Сопоставляет любой символ в sequence
  • [!sequence]: Сопоставляет любой символ, не входящий в sequence

Любое количество этих параметров может быть передано в команду. Вы можете сделать это, передав аргумент --exclude или --include несколько раз, например, --include "*.txt" --include "*.png". Если есть несколько фильтров, то фильтры, появляющиеся позже в команде, имеют приоритет над фильтрами, появляющимися ранее в команде. Например, если параметры фильтра, переданные команде, были

--exclude "*" --include "*.txt"

Все файлы будут исключены из команды, за исключением файлов, оканчивающихся на .txt. Однако, если порядок параметров фильтра был изменён на

--include "*.txt" --exclude "*"

Все файлы будут исключены из команды.

Каждый фильтр оценивается относительно исходного каталога. Если исходное местоположение — файл, а не каталог, используется каталог, содержащий файл, как исходный каталог. Например, предположим, что у вас есть следующая структура каталогов:

/tmp/foo/
  .git/
  |---config
  |---description
  foo.txt
  bar.txt
  baz.jpg

В команде aws s3 sync /tmp/foo s3://bucket/ исходным каталогом является /tmp/foo. Любые фильтры включения/исключения будут оцениваться с добавлением исходного каталога в начало фильтра. Ниже приведены несколько примеров для демонстрации этого.

Учитывая структуру каталогов выше и команду aws s3 cp /tmp/foo s3://bucket/ --recursive --exclude ".git/*", файлы .git/config и .git/description будут исключены из файлов для загрузки, потому что фильтр исключения .git/* будет иметь исходный каталог в начале фильтра. Это означает, что:

/tmp/foo/.git/* -> /tmp/foo/.git/config       (matches, should exclude)
/tmp/foo/.git/* -> /tmp/foo/.git/description  (matches, should exclude)
/tmp/foo/.git/* -> /tmp/foo/foo.txt  (does not match, should include)
/tmp/foo/.git/* -> /tmp/foo/bar.txt  (does not match, should include)
/tmp/foo/.git/* -> /tmp/foo/baz.jpg  (does not match, should include)

Команда aws s3 cp /tmp/foo/ s3://bucket/ --recursive --exclude "ba*" исключит /tmp/foo/bar.txt и /tmp/foo/baz.jpg:

/tmp/foo/ba* -> /tmp/foo/.git/config      (does not match, should include)
/tmp/foo/ba* -> /tmp/foo/.git/description (does not match, should include)
/tmp/foo/ba* -> /tmp/foo/foo.txt          (does not match, should include)
/tmp/foo/ba* -> /tmp/foo/bar.txt  (matches, should exclude)
/tmp/foo/ba* -> /tmp/foo/baz.jpg  (matches, should exclude)

Обратите внимание, что по умолчанию все файлы включаются. Это означает, что предоставление только фильтра --include не изменит, какие файлы будут переданы. --include будет включать только файлы, которые были исключены из фильтра --exclude. Если вы хотите загружать только файлы с определённым расширением, вам нужно сначала исключить все файлы, а затем включить файлы с определённым расширением. Эта команда загрузит только файлы, оканчивающиеся на .jpg:

aws s3 cp /tmp/foo/ s3://bucket/ --recursive --exclude "*" --include "*.jpg"

Если вы хотели включить как файлы .jpg, так и файлы .txt, вы можете выполнить:

aws s3 cp /tmp/foo/ s3://bucket/ --recursive \
    --exclude "*" --include "*.jpg" --include "*.txt"

Синтаксис

aws s3 <Command> [<Arg> ...]

Параметры

Нет

Доступные команды

  • cp
  • ls
  • mb
  • mv
  • presign
  • rb
  • rm
  • sync
  • website

© Copyright 2025, Amazon Web Services. Created using Sphinx.

Spec-Zone.ru

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