Ссылки на дистрибутивы 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": количество_дней }}}'
Если Вы используете virtual-hosted-style, то Вам выдан 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
Опишите вашу задачу, и мы поможем вам ее решить