Все команды S3 CLI высокого уровня, которые вам необходимо знать - для MacOS

AWS Simple Storage Service (S3)

S3 - это высокодоступный и надежный сервис хранения, предлагаемый AWS. Он полностью управляем и поддерживает различные варианты использования. Это плоская структура, а не иерархия вложенных папок, как файловая система.

Прежде чем познакомиться с командами S3, вам необходимо знать несколько важных терминов:

  • Bucket - папка S3 верхнего уровня, в которой хранятся объекты.
  • Объект - любые отдельные элементы, например файлы и изображения, которые хранятся в корзине S3.
  • Префикс - папка S3, вложенная в сегмент, разделенная разделителями.
  • Разделитель - приводит к тому, что операция списка объединяет все ключи с общим префиксом в один результат сводного списка. Обычно обозначается косой чертой ‘/’.
  • Папка - используется для группировки объектов для упрощения организации.
  • Тип аргумента пути. Для каждой команды должен быть указан хотя бы один аргумент пути. Есть два типа аргументов пути: LocalPath и S3Uri.
  • LocalPath - представляет собой путь к локальному файлу или каталогу. Его можно записать как абсолютный или относительный путь.
  • S3Uri - представляет расположение объекта, префикса или сегмента S3. Это должно быть записано в форме s3: // BucketName / KeyName, где BucketName - это сегмент S3, KeyName - это ключ S3. Для объекта с префиксом ключ S3 будет prefixname / objectname. Если этот объект находится в сегменте, его S3Uri будет иметь вид s3: // BucketName / PrefixName / ObjectName. Он поддерживает точки доступа S3. s3: // Команда ‹access-point-arn› / ‹key› может использоваться для указания точки доступа.
  • Порядок аргументов пути. Каждая команда может иметь одну из двух позиций в аргументах пути. Первый аргумент пути представляет источник, который является ссылкой на локальный объект / префикс / сегмент S3. Если есть второй аргумент пути, он представляет место назначения, которым является локальный объект / префикс / сегмент S3 , с которым выполняется работа. Команды с одним аргументом пути не имеют назначения, потому что операция выполняется только с источником.
  • Операции с одним локальным файлом и объектом S3. Некоторые команды могут работать только с отдельными файлами и объектами S3. Эти команды требуют, чтобы первый аргумент пути был локальным файлом или объектом S3. Второй аргумент пути может быть именем локального файла, локального каталога, объекта S3, префикса S3 или корзины S3. Это однофайловые команды (к нему не следует добавлять рекурсивный флаг) cp, mv, rm. Назначение указывается как локальный каталог, префикс S3 или сегмент S3, если он заканчивается прямой или обратной косой чертой. Использование косой черты зависит от типа аргумента пути: для LocalPath тип косой черты является разделителем, используемым операционной системой; для S3Uri всегда следует использовать косую черту. Если в конце места назначения стоит косая черта, конечный файл или объект примет имя исходного файла или объекта.
  • Операции с каталогом и префиксом S3. Некоторые команды работают со всем содержимым локального каталога или префикса / сегмента S3. Добавление или пропуск косой черты или обратной косой черты в конце любого аргумента пути не влияет на результаты операции. Команды всегда будут приводить к синхронизации операций с каталогом или префиксом / сегментом S3, mb, rb, ls.
  • Использование подстановочных знаков и фильтров - команды S3 могут поддерживать - исключать ‹value› и - включать параметры ‹value›. Поддерживаются следующие подстановочные знаки
  • Предписанный URL. Используя предварительно подписанный URL-адрес S3 для файла S3, любой, у кого есть этот URL-адрес, может получить файл S3 с помощью HTTP-запроса GET. Результатом команды является URL-адрес, который по умолчанию будет действителен в течение 3600 секунд (1 час).
*: Matches everything
?: Matches any single character
[sequence]: Matches any character in a sequence
[!sequence]: Matches any character not in sequence

Разница между префиксом и папкой -

префикс - это полный путь перед именем объекта, включая имя сегмента. Если объект хранится как BucketName / FolderName / ObjectName, используется префикс «BucketName / FolderName /». Если объект сохраняется в сегменте без указанного пути, значение префикса - «BucketName /».

папка - это значение между двумя символами «/». Если файл хранится как BucketName / FolderName / SubfolderName / ObjectName, оба «FolderName» и «SubfolderName» считаются папками. Если объект сохраняется в корзине без указанного пути, то для хранения файла не используются папки.

Синтаксис команды

Предпосылки

Убедитесь, что вы загрузили и настроили интерфейс командной строки AWS, прежде чем пытаться выполнить любую из следующих команд. Узнайте, как это сделать, в моем блоге Общие команды AWS CLI.

Команды высокого уровня

Команды высокого уровня используются для упрощения выполнения общих задач, таких как создание, обновление и удаление объектов и сегментов. Они включают cp, mb, mv, ls, rb, rm и sync.

  • Создайте ведро в регионе по умолчанию. Он возвращает имя сегмента в качестве вывода запроса.
$ aws s3 mb s3://madhu-cli-test-bucket
make_bucket: madhu-cli-test-bucket

  • Создайте ведро в определенном регионе. Он возвращает имя сегмента в качестве вывода запроса.
$ aws s3 mb s3://madhu-cli-test-bucket-region
> aws s3 mb s3://madhu-cli-test-bucket-region --region ap-south-1
make_bucket: madhu-cli-test-bucket-region
$ aws s3 mb s3://madhu-cli-test-bucket-region-2
> aws s3 mb s3://madhu-cli-test-bucket-region-2 --region eu-west-1
make_bucket: madhu-cli-test-bucket-region-2

  • Перечислите все свои ведра. Он возвращает все сегменты в вашем аккаунте AWS.
$ aws s3 ls

  • Перечислите объекты в определенной корзине и папке. Он возвращает все объекты вместе с их датой и временем создания, размером и именем. Префиксы (папки) представлены как «PRE» и не возвращают дату или время.
$ aws s3 ls
> aws s3 ls s3://madhue-portfolio.com
$ aws s3 ls
> aws s3 ls s3://madhue-portfolio.com/assets/

  • Рекурсивно перечислить все объекты во всех префиксах сегмента.
$ aws s3 ls s3://madhue-responsive-website-serverless-application
> aws s3 ls s3://madhue-responsive-website-serverless-application --recursive

  • Рекурсивно извлекать данные корзины в удобочитаемом формате. Он отображает все размеры файлов в удобочитаемом формате. Может быть получен рекурсивно и нерекурсивно.
$ aws s3 ls s3://madhue-responsive-website-serverless-application
> aws s3 ls s3://madhue-responsive-website-serverless-application --recursive --human-readable
$ aws s3 ls s3://madhue-responsive-website-serverless-application
> aws s3 ls s3://madhue-responsive-website-serverless-application --human-readable

  • Отобразите сводную информацию, включая количество объектов и общий размер.
$ aws s3 ls s3://madhue-responsive-website-serverless-application
> aws s3 ls s3://madhue-responsive-website-serverless-application --summarize

  • Запросить, чтобы запрашивающая сторона платила, если конкретная корзина настроена как запрашивающая платит.
$ aws s3 ls s3://madhu-cli-test-bucket --request-payer requester
> aws s3 ls s3://madhu-cli-test-bucket --request-payer requester

  • Скопируйте объекты из корзины или локального каталога.
$ aws s3 cp s3://madhue-responsive-website-serverless-application/index.html s3://madhu-cli-test-bucket
> aws s3 cp s3://madhue-responsive-website-serverless-application/index.html s3://madhu-cli-test-bucket
copy: s3://madhue-responsive-website-serverless-application/index.html to s3://madhu-cli-test-bucket/index.html

$ aws s3 cp aws-cli.txt s3://madhu-cli-test-bucket
> aws s3 cp aws-cli.txt s3://madhu-cli-test-bucket
upload: ./aws-cli.txt to s3://madhu-cli-test-bucket/aws-cli.txt

  • Загружайте объекты в корзинах в локальный каталог.
$ cd Desktop
$ aws s3 cp s3://madhu-cli-test-bucket/index.html test.html
> aws s3 cp s3://madhu-cli-test-bucket/index.html test.html

  • Рекурсивно перемещать все объекты из одного ведра в другое.
$ aws s3 mv s3://madhu-cli-test-bucket s3://madhu-cli-test-bucket-region
> aws s3 mv s3://madhu-cli-test-bucket s3://madhu-cli-test-bucket-region --recursive
move: s3://madhu-cli-test-bucket/AWS-S3-bucket-data-storage-categorization.png to s3://madhu-cli-test-bucket-region/AWS-S3-bucket-data-storage-categorization.png
move: s3://madhu-cli-test-bucket/AWS-S3-Bucket-Config-2.png to s3://madhu-cli-test-bucket-region/AWS-S3-Bucket-Config-2.png
move: s3://madhu-cli-test-bucket/AWS-S3-Bucket-Config-3.png to s3://madhu-cli-test-bucket-region/AWS-S3-Bucket-Config-3.png
move: s3://madhu-cli-test-bucket/AWS-S3-1.png to s3://madhu-cli-test-bucket-region/AWS-S3-1.png
move: s3://madhu-cli-test-bucket/AWS-S3-Bucket-Config-1.png to s3://madhu-cli-test-bucket-region/AWS-S3-Bucket-Config-1.png

  • Синхронизируйте содержимое корзины и (локального) каталога или содержимое двух корзин.
$ cd Desktop/<path-to-local-directory>
$ aws s3 sync . s3://madhu-cli-test-bucket
> aws s3 sync . s3://madhu-cli-test-bucket
upload: ./<filename>.<extension> to s3://madhu-cli-test-bucket/<filename>.<extension>

$ aws s3 sync s3://madhue-responsive-website-serverless-application s3://website-test-cli
> aws s3 sync s3://madhue-responsive-website-serverless-application s3://website-test-cli
copy: s3://madhue-responsive-website-serverless-application/css/font-awesome.min.css to s3://website-test-cli/css/font-awesome.min.css

  • Удалите один предмет из ведра.
$ aws s3 rm s3://madhu-cli-test-bucket/.DS_Store
> aws s3 rm s3://madhu-cli-test-bucket/.DS_Store
delete: s3://madhu-cli-test-bucket/.DS_Store

  • Рекурсивно удалить все объекты из ведра.
$ aws s3 rm s3://madhu-cli-test-bucket/
> aws s3 rm s3://madhu-cli-test-bucket/ --recursive
delete: s3://madhu-cli-test-bucket/1*QErkU0uuSG9yxuZDndvQhQ.png

  • Удалить ведро.
$ aws s3 rb s3://madhu-cli-test-bucket
> aws s3 rb s3://madhu-cli-test-bucket
remove_bucket: madhu-cli-test-bucket

  • Если корзина не пуста, ее нельзя удалить. В этом случае используйте параметр --force для опорожнения и удаления корзины.
$ aws s3 rb s3://madhu-cli-test-bucket-region
> aws s3 rb s3://madhu-cli-test-bucket-region --force
delete: s3://madhu-cli-test-bucket-region/AWS-S3-bucket-data-storage-categorization.png
remove_bucket: madhu-cli-test-bucket-region

  • Используйте корзину S3 для размещения статического веб-сайта. Файлы index.html и error.html должны быть добавлены в вашу корзину перед этой конфигурацией.
$ aws s3 website s3://website-test-cli/ --index-document index.html --error-document error.html
> aws s3 website s3://website-test-cli/ --index-document index.html --error-document error.html

  • Используйте заранее подписанный URL-адрес, чтобы предоставить доступ к объектам S3. Опция --expires-in подсчитывает время в минутах до истечения срока действия заранее подписанного URL.
$ aws s3 presign s3://website-test-cli/index.html
> aws s3 presign s3://website-test-cli/index.html
https://website-test-cli.s3.us-east-1.amazonaws.com/index.html?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAX453G6K6H5XWLIKA%2F20210729%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210729T173108Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=487f5511499c372cff8ebb8c2f8ec766c26917a9ea58d03f9e751f20f11d235e
$ aws s3 presign s3://website-test-cli/error.html
> aws s3 presign s3://website-test-cli/error.html --expires-in 100
https://website-test-cli.s3.us-east-1.amazonaws.com/error.html?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAX453G6K6H5XWLIKA%2F20210729%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210729T173119Z&X-Amz-Expires=100&X-Amz-SignedHeaders=host&X-Amz-Signature=52710ddc23e4dd3659b6bea3f728c6fb6e2abf3b82f7d4c12353daea818cf6f7

использованная литература

У AWS есть много документации по интерфейсу командной строки. Это те, за которыми я следил, когда писал этот блог.

  1. Справочник команд интерфейса командной строки AWS
  2. Команды высокого уровня S3

Сообщите мне, если вы используете какие-либо другие команды, которые я не включил; Я постараюсь добавить их сюда.

Удачного обучения!

Больше контента на plainenglish.io