1.Создание S3-бакета
1 |
# aws s3 mb s3://mydemobuckets11 |
1 |
make_bucket: mydemobuckets11 |
2.Просмотр списка бакетов
1 |
# aws s3 ls |
1 2 |
2017-12-22 19:37:56 mydemobucket11 2017-12-22 19:38:02 mydemobucket12 |
3.Просмотр списка всех объектов(файлов) и каталогов(префиксов) в бакете
1 |
# aws s3 ls s3://mydemobucket11 |
1 2 3 |
PRE folder1/ PRE folder2/ 2017-12-22 19:43:38 153 filename.json |
Просмотр списка всех объектов(файлов) и каталогов(префиксов) в конкретном каталоге(префиксе) бакета
1 |
# aws s3 ls s3://mydemobucket11/folder1/ |
1 2 3 |
2017-12-22 19:40:39 0 2017-12-22 19:45:00 6 file1.txt 2017-12-22 19:45:26 6 file2.txt |
Рекурсивный просмотр содержания всего бакета
1 |
# aws s3 ls s3://mydemobucket11 --recursive |
1 2 3 4 5 |
2017-12-22 19:43:38 153 filename.json 2017-12-22 19:40:39 0 folder1/ 2017-12-22 19:45:00 6 folder1/file1.txt 2017-12-22 19:45:26 6 folder1/file2.txt 2017-12-22 19:40:45 0 folder2/ |
Просмотр значения размера, занимаемого бакетом
1 |
# aws s3 ls s3://mydemobucket11 --recursive --human-readable --summarize |
1 2 3 4 5 6 7 8 |
2017-12-22 19:43:38 153 Bytes filename.json 2017-12-22 19:40:39 0 Bytes folder1/ 2017-12-22 19:45:00 6 Bytes folder1/file1.txt 2017-12-22 19:45:26 6 Bytes folder1/file2.txt 2017-12-22 19:40:45 0 Bytes folder2/ Total Objects: 5 Total Size: 165 Bytes |
4.Работа с объектами(файлами) в S3
Команды aws s3 {cp,mv,sync} требуют определения двух аргументов – путей источника и назначения.
Как источником,так и назначением, могут выступать локальный каталог/файл, S3-бакет/S3-префикс(каталог в бакете)/S3-объект(файл в бакете/в каталоге бакета)
S3Uri может иметь вид:
1 2 3 |
S3://bucket - S3://mybucket S3:://bucket/prefix - S3://mybucket/mydirectory S3://buckrt/prefix/object - S3://mybucket/mydirectory/myfile |
Копировать локальный файл в S3-бакет
1 |
# aws s3 cp myfile3.txt s3://mydemobucket11/ |
1 |
upload: ./myfile3.txt to s3://mydemobucket11/myfile3.txt |
Копировать локальный файл в S3-бакет в каталог folder1
1 |
# aws s3 cp myfile3.jpg s3://mydemobucket11/folder1/ |
1 |
upload: ./myfile3.jpg to s3://mydemobucket11/folder1/myfile3.jpg |
Просмотр расположения скопированных файлов
1 |
# aws s3 ls s3://mydemobucket11 --recursive | grep myfile3 |
1 2 |
2017-12-22 20:35:19 0 folder1/myfile3.jpg 2017-12-22 20:34:58 0 myfile3.txt |
Удалить файл myfile3.jpg из каталога folder1 в бакете mydemobucket11
1 |
# aws s3 rm s3://mydemobucket11/folder1/myfile3.jpg |
1 |
delete: s3://mydemobucket11/folder1/myfile3.jpg |
Проверка фактического удаления
1 |
# aws s3 ls s3://mydemobucket11 --recursive | grep myfile3.jpg |
1 |
# |
Удаление каталога folder1/ и всего его содержимого(рекурсивное удаление) с бакета mydemobucket11
1 |
# aws s3 rm s3://mydemobucket11/folder1/ --recursive |
1 2 3 |
delete: s3://mydemobucket11/folder1/ delete: s3://mydemobucket11/folder1/file2.txt delete: s3://mydemobucket11/folder1/file1.txt |
Перемещение локального файла в S3-бакет в определенный каталог(префикс)
1 |
# aws s3 mv myfile4.pdf s3://mydemobucket11/folder4/ |
1 |
move: ./myfile4.pdf to s3://mydemobucket11/folder4/myfile4.pdf |
1 |
# aws s3 mv myfile5.json s3://mydemobucket11/folder5/ |
1 |
move: ./myfile5.json to s3://mydemobucket11/folder5/myfile5.json |
Просмотр содержимого бакета(рекурсивно)
1 |
# aws s3 ls s3://mydemobucket11 --recursive |
1 2 3 4 5 6 7 |
2017-12-22 19:43:38 153 filename.json 2017-12-22 20:47:30 0 folder1/folder4/ 2017-12-22 20:47:41 0 folder1/folder5/ 2017-12-22 20:49:02 0 folder4/myfile4.pdf 2017-12-22 20:49:14 0 folder5/myfile5.json 2017-12-22 20:45:57 0 myfile3.pdf 2017-12-22 20:34:58 0 myfile3.txt |
Копирование с S3-бакета на локальный ПК в каталог /tmp всех файлов с расширением .pdf и .json
1 |
# aws s3 cp s3://mydemobucket11 /tmp/ --recursive --exclude '*' --include '*.pdf' --include '*.json' |
1 2 3 4 |
download: s3://mydemobucket11/myfile3.pdf to ../tmp/myfile3.pdf download: s3://mydemobucket11/folder5/myfile5.json to ../tmp/folder5/myfile5.json download: s3://mydemobucket11/folder4/myfile4.pdf to ../tmp/folder4/myfile4.pdf download: s3://mydemobucket11/filename.json to ../tmp/filename.json |
Перемещение с S3-бакета на локальный ПК в каталог /tmp всех файлов с расширением .txt
1 |
# aws s3 mv s3://mydemobucket11 /tmp/ --recursive --exclude '*' --include '*.txt' |
1 |
move: s3://mydemobucket11/myfile3.txt to ../tmp/myfile3.txt |
Порядок параметров —exclude и —include важен.
Параметр, который указан последним имеет приоритет
Например
Будут исключены все файлы, кроме файлов с расширением .txt
1 |
--exclude '*' --include '*.txt' |
Будут исключены все файлы
1 |
--include '*.txt' --exclude '*' |
По умолчанию, если не указывать эти параметры, то включаются все файлы (это равносильно указанию последним параметра —include ‘*’ )
Поддерживаются следующие шаблоны символов:
1 2 3 4 |
*-любое кол-во любых символов ?-любой единичный символ [последовательность] - любой символ из последовательности [!последовательность] - любой символ не указанный в последовательности |
Опция —grant
Команды aws s3 {cp,mv,sync} поддерживают опцию —grant, которая позволяет предоставить разрешения на объекты определенным пользователям/группам
Синтаксис опции —grant
1 2 |
--grants Permission=Grantee_Type=Grantee_ID [Permission=Grantee_Type=Grantee_ID ...] |
Permission – определяет вид разрешения.
Может принимать значения
1 |
read, readacl, writeacl, или full |
Grantee_Type – определяет тип/способ идентификации получателя разрешения
Может принимать значение
1 |
uri, emailaddress, или id |
1 2 3 |
uri - URI группы Emailaddress – электронный адрес аккаунта Id – алиас идентификатора аккаунта |
Grantee_ID – определяет получателя на основании Grantee_Type
Например, скопироваь файл file1.txt в бакет и предоставим доступ к этому файлу
А) для всех только чтение
Б) для пользователя с адресом myemail@gmail.com – полный доступ
1 |
# aws s3 cp file1.txt s3://mydemobucket11/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=myemail@gmail.com |
1 |
upload: ./file1.txt to s3://mydemobucket11/file1.txt |
По умолчанию используется стандартный(Standart)класс хранения данных
Если необходимо использовать другие типа хранения (REDUCED_REDUNDANCY или STANDARD_IA),то используется опция —storage-class
Например
1 |
# aws s3 cp file1.txt s3://mydemobucket11 --storage-class REDUCED_REDUNDANCY |
Команда sync
Команда sync используется для синхронизации данных
Исходник-назначение при этом могут выступать
1 2 3 |
Локальная файловая система->Amazon S3 Amazon S3-> Локальная файловая система Amazon S3-> Amazon S3 |
Синтаксис команды sync
1 |
# aws s3 sync <source> <target> [--options] |
1 |
# tree demo/ |
1 2 3 4 5 6 7 |
demo/ ├── file7.txt └── folder7 ├── file77.txt └── folder8 2 directories, 2 files |
1 |
# aws s3 sync demo s3://mydemobucket11/folder6/ |
1 2 |
upload: demo/folder7/file77.txt to s3://mydemobucket11/folder6/folder7/file77.txt upload: demo/file7.txt to s3://mydemobucket11/folder6/file7.txt |
1 |
# aws s3 ls s3://mydemobucket11/folder6/ |
1 2 3 |
PRE folder7/ 2017-12-22 22:20:49 0 2017-12-22 22:20:58 0 file7.txt |
Обычно sync копирует только файлы, которые отсутствуют или изменились на принимающей стороне. Если необходимо удалять файлы на принимающей стороне, которые отсутствуют/были удалены на отправляющей стороне, то используем опцию —delete
Удалим файл с локальной файловой системы
1 |
# rm -f demo/file7.txt |
Синхронизируем S3-бакет с локальным каталогом demo
1 |
# aws s3 sync demo s3://mydemobucket11/folder6/ --delete |
1 |
delete: s3://mydemobucket11/folder6/file7.txt |
Аналогично,при удалении файла с S3-бакета для удаления его на локальной файловой систему используем опцию –delete
1 |
# aws s3 sync s3://mydemobucket11/folder6/ demo --delete |
Параметры —exclude —include используются и работают так же, как описано выше для команд cp,mv
Sync команда также,как и команды cp,mv, принимает параметр —acl, с помощью которого можно установить права доступа для файлов,загружаемых в S3
Опция —acl принимает значения
1 |
private, public-read, и public-read-write |
Например, создадим новый файл с публичным доступом на чтение в каталоге demo и выполним синхронизацию каталога demo с каталогом folder6 в S3-бакете mydemobucket11
1 |
# touch demo/file88.txt |
1 |
# aws s3 sync demo s3://mydemobucket11/folder6/ --acl public-read |
1 |
upload: demo/file88.txt to s3://mydemobucket11/folder6/file88.txt |
Теперь файл file88.txt в s3://mydemobucket11/folder6/ будет доступен для всех на чтение
5.Удаление бакета
1 |
# aws s3 ls |
1 2 |
2017-12-22 19:37:56 mydemobucket11 2017-12-22 19:38:02 mydemobucket12 |
Удаление пустого бакета
1 |
# aws s3 rb s3://mydemobucket12 |
1 |
remove_bucket: mydemobucket12 |
Удаление непустого бакета
1 |
# aws s3 rb s3://mydemobucket11 --force |
1 2 3 4 5 6 7 8 9 10 |
delete: s3://mydemobucket11/folder4/myfile4.pdf delete: s3://mydemobucket11/folder1/folder4/ delete: s3://mydemobucket11/folder1/folder5/ delete: s3://mydemobucket11/folder5/myfile5.json delete: s3://mydemobucket11/folder6/file88.txt delete: s3://mydemobucket11/folder6/ delete: s3://mydemobucket11/folder6/folder7/file77.txt delete: s3://mydemobucket11/filename.json delete: s3://mydemobucket11/myfile3.pdf remove_bucket: mydemobucket11 |
Источник: http://docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html