Ссылки на дистрибутивы AWS CLI и документация доступны по данной ссылке.
- Запустите настройку конфигурации AWS: aws configure .
- Задайте следующие параметры:
- AWS Access Key ID [None] - Access Key, выданный при заведении тенанта
- AWS Secret Access Key [None] - Secret Key, выданный при заведении тенанта
- Default region name [None] - оставьте пустым.
- Default output format [None] - оставьте пустым.
При работе с AWS CLI необходимо:
- либо каждый раз указывать endpoint-url, что делает команды наглядными и позволяет проще переключаться между сервисами и минимизирует вероятность отправки команд "не в то окно"
- либо сохранить в конфигурации endpoint-url, что удобно для сокращения длины команд (далее мы будем приводить примеры команд с учётом для этого варианта использования)
Далее в статье ключ_объекта - имя объекта и путь к нему, включающий все каталоги.
Сохранение endpoint-url в конфигурации
aws configure set endpoint_url https://r1g1z1.p20s3.linx.ru/
Просмотр корневого каталога
aws s3 ls
Работа с бакетами и каталогами
Создание бакета
aws s3api create-bucket --bucket имя_бакета
Важно: имя бакета должно соответствовать правилам наименования.
Создание каталога в существующем бакете
aws s3api put-object --bucket имя_бакета --key имя_каталога
Удаление каталога со всеми вложенными объектами и подкаталогами
aws s3 rm s3://имя_бакета/имя_каталога --recursive
Просмотр списка и размера объектов в бакете или каталоге
aws s3 ls s3://имя_бакета/имя_каталога --recursive --human-readable --summarize
Важно: при большом количестве объектов в бакете или каталоге, выполнение команды может занимать продолжительное время.
Работа с объектами
Скачивание объекта
aws s3api get-object --bucket имя_бакета --key ключ_объекта присваиваемое_имя
aws s3 cp s3://имя_бакета/ключ_объекта присваиваемое_имяgreater-than
Загрузка объекта
aws s3api put-object --bucket имя_бакета --key ключ_объекта --body путь_к_файлу
aws s3 cp путь_к_файлу s3://имя_бакета
, где путь_к_файлу записывается в формате C:\#Temp\object
Удаление объекта
aws s3 rm s3://имя_бакета/ключ_объекта
Multipart
Удаление частично загруженного multipart объекта
aws s3api abort-multipart-upload --bucket имя_бакета --key ключ_объекта --upload-id идентификатор_загрузки
Чтобы узнать upload-id, найдите его в списке загрузок, который можно вызвать с помощью команды, приведённой ниже.
Отобразить сиписок multipart загрузок объектов
aws s3api list-multipart-uploads --bucket имя_бакета
Управление доступом через ACL
Прочитать ACL объекта
aws s3api get-object-acl --bucket имя_бакета --key ключ_объекта
Прочитать ACL бакета
aws s3api get-bucket-acl --bucket имя_бакета
Назначить ACL на бакет
aws s3api put-bucket-acl --bucket имя_бакета --acl уровень_доступа
, где уровень_доступа принимает одно из следующих значений:
- private - только владелец бакета получает FULL_CONTROL (запись, чтение, управление ACL), остальные пользователи никакого доступа не имеют;
- public-read - владелец бакета получает FULL_CONTROL, а группа AllUsers (другие пользователи tenant'а) получает READ (прочитать, скачать объект, прочитать список объектов в бакете)
- public-read-write - владелец бакета получает FULL_CONTROL, а группа AllUsers получает READ и WRITE (запись, чтение, удаление объекты);
- authenticated-read - владелец бакета получает FULL_CONTROL, а группа AuthenticatedUsers получает READ, анонимно объекты недоступны
Создать ссылку на объект для публичного доступа
aws s3 presign s3://имя_бакета/имя_объекта
Сгенерировать ограниченную по времени ссылку
aws s3 presign s3://имя_бакета/имя_объекта --expires-in время_в_секундах
Управление жизненным циклом объектов
Загрузка конфигурации в хранилище
aws s3api put-bucket lifecycle --bucket имя_бакета --lifecycle-configuration file://имя_файла_конфигурации.json
Запрос конфигурации
aws s3api get-bucket lifecycle –bucket имя_бакета
Удаление конфигурации
aws s3api delete-bucket lifecycle –bucket имя_бакета
Управление CORS-конфигурацией
Загрузка конфигурации в хранилище
aws s3api put-bucket-cors --bucket имя_бакета --cors-configuration file://имя_файла_конфигурации.xml
Запрос конфигурации
aws s3api get-bucket-cors --bucket имя_бакета
Удаление конфигурации
aws s3api delete-bucket-cors --bucket имя_бакета
Работа с Object Lock (WORM)
Создание нового бакета с включённой поддержкой Object Lock
aws s3api create-bucket --bucket имя_бакета --object-lock-enabled-for-bucket
Важно: команда активирует только возможность использования функции Object Lock на объектах без немедленного применения retention правил.
Проверка конфигурации Object lock на бакете
aws s3api get-object-lock-configuration --bucket имя_бакета
Применение retention правила на объект
aws s3api put-object-retention --bucket имя_бакета --key ключ_объекта --retention Mode=COMPLIANCE,RetainUntilDate=дата_завершения_блокировки
Применение retention правила на весь бакет
aws s3api put-object-lock-configuration --bucket имя_бакета --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": количество_дней }}}'
С полным списком команд вы можете ознакомится в документации вендора на официальном сайте (https://aws.amazon.com/ru/cli/), или введя в CLI команду
aws s3 help
Управление пользователями
Если Вы используете virtual-hosted-style, то Вам выдан root user, от имени которого есть возможность sub-user'ов с гранулярными правами.
Создание sub-user
Создать пользователя (sub-user)
aws --profile default --region default iam create-user --user-name 'имя_пользователя'
Создать пользователю реквизиты доступа (access key и secret key)
aws --profile default --region default iam create-access-key --user-name 'имя_пользователя'
Добавить пользователю права доступа в формате JSON, записанные в файле.
aws iam put-user-policy --user-name имя_пользователя --policy-name AllowAll --policy-document file://policy.json
Пример содержания файла с правами доступа к бакету (полный доступ к бакету "test").
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation",
"s3:GetObjectTagging"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObjectTagging",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::test",
"arn:aws:s3:::test/*"
]
}
]
}
Бесплатно проконсультируем по вашим вопросам