Ссылки на дистрибутивы AWS CLI и документация доступны по данной ссылке.
При работе с AWS CLI необходимо:
- либо каждый раз указывать 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://имя_бакета/ключ_объекта присваиваемое_имя>
aws s3api put-object --bucket имя_бакета --key ключ_объекта --body путь_к_файлу
или
aws s3 cp путь_к_файлу s3://имя_бакета
aws s3 rm s3://имя_бакета/ключ_объекта
aws s3api abort-multipart-upload --bucket имя_бакета --key ключ_объекта --upload-id идентификатор_загрузки
Чтобы узнать upload-id, найдите его в списке загрузок, который можно вызвать с помощью команды, приведённой ниже.
aws s3api list-multipart-uploads --bucket имя_бакета
aws s3api get-object-acl --bucket имя_бакета --key ключ_объекта
aws s3api get-bucket-acl --bucket имя_бакета
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 create-bucket --bucket имя_бакета --object-lock-enabled-for-bucket
Важно: команда активирует только возможность использования функции Object Lock на объектах без немедленного применения retention правил.
aws s3api get-object-lock-configuration --bucket имя_бакета
aws s3api put-object-retention --bucket имя_бакета --key ключ_объекта --retention '{Mode=нужный_режим,RetainUntilDate=дата_завершения_блокировки}'
где
нужный_режим - COMPLIANCE или GOVERNANCE
дата_завершения_блокировки - пишется в формате год-месяц-деньTчас:минута:секунда, например, 2027-01-01T00:00:00
aws s3api put-object-lock-configuration --bucket имя_бакета --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": количество_дней }}}'
ВАЖНО:
Настройка object lock не удаляет автоматически обекты при завершении срока удержания (Retention). Автоматическое удаление объектов определяется правилами lifecycle.
Если Вы используете IAM аккаунт, то Вам выдан root 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/*"
]
}
]
}
Сгенерировать policy под вашу задачу можно с помощью специального инструмента от AWS, доступного по ссылке https://awspolicygen.s3.amazonaws.com/policygen.html
С полным списком команд вы можете ознакомится в документации вендора на официальном сайте https://aws.amazon.com/ru/cli/, или введя в CLI команду
aws s3 help