Введение
Platformcraft предоставляет универсальное масштабируемое решение для хранения данных - Platformcraft S3 Object Storage. Решение подходит как для высоконагруженных сервисов, которым требуется надежный и быстрый доступ к данным, так и для проектов с невысокими требованиями к инфраструктуре хранения.
В терминах Object Storage файлы и папки — это объекты. Все объекты размещаются в бакетах. Структура хранения объектов в бакете плоская, но инструменты с графическим интерфейсом предлагают работать с Object Storage как с иерархической файловой системой.
Общие рекомендации по работе с S3
Эндпоинт | https://eu-s3.platformcraft.com |
Название бакета | В названии допускаются только символы Аа-Яя, Aa-Zz, 0-9, тире и точки (кроме Veeam: наименование должно быть на латинице, без прочерков, точек и т.д. Пример: examplegroup). |
Перед началом работы
- Перейдите в личный кабинет, затем авторизируйтесь.
- На главной странице выберете раздел Настройки, перейдите во вкладку Доступы S3 и нажмите кнопку Сгенерировать.
- На экране появятся следующие параметры:
endpoint
,AWS Access Key ID
иAWS Secret Access Key ID
. Параметры отображаются лишь единожды, создайте на рабочем столе файл creds.txt и перепишите туда их значения.
Инструменты
AWS CLI
Интерфейс командной строки для работы с сервисами AWS. Общий порядок вызова команд смотрите в официальной документации Amazon.
Установка
Для установки AWS CLI воспользуйтесь инструкцией на сайте производителя.
Настройка
Для настройки AWS CLI введите команду aws configure
. Команда запросит значения для следующих параметров:
- AWS Access Key ID — идентификатор статического ключа, сгенерированного в ЛК.
- AWS Secret Access Key — содержимое статического ключа, сгенерированного в ЛК.
- Default region name — регион
eu-central-2
. - Значения остальных параметров оставьте без изменений.
- Не закрывайте окно, чтобы не прерывать процесс.
Cyberduck
Графический клиент для работы с облачными хранилищами, в том числе совместимыми с Amazon S3 API. CyberDuck доступен для macOS и Windows, а также в виде консольного клиента для Linux.
Установка
Скачайте дистрибутив CyberDuck для вашей операционной системы и запустите его.
Настройка
- Запустите CyberDuck.
- Нажмите кнопку "+".
- Выберите тип подключения — Amazon S3.
- Укажите параметры подключения:
Server —eu-s3.platformcraft.com
.
Port —443
.
Access Key ID — идентификатор статического ключа, сгенерированный ранее в ЛК.
Secret Access Key — секретный ключ, сгенерированный ранее в ЛК. - Закройте окно.
Примечание
CyberDuck работает с Object Storage как с иерархической файловой системой. Это значит, что ключи объектов, загруженных через CyberDuck, будут иметь вид пути к файлу, например
prefix/subprefix/picture.jpg
.
- CloudBerry
- Veeam (сервис для бэкапирования виртуальных машин)
- Veritas (сервис для бэкапирования виртуальных машин)
Лимиты по умолчанию
- количество запросов - 70 rps (расширяемое значение)
- ограничение скорости загрузки на одного клиента - 120 Мбит/сек (расширяемое значение)
Начало работы
Platformcraft S3 Object Storage API частично совместим с API AWS S3 и вы можете использовать инструменты, предназначенные для работы с S3.
Терминология
Platformcraft S3 API содержит следующие термины:
Сущность | Описание |
---|---|
Bucket | Управляет бакетами |
Object | Управляет объектами |
Multipart upload | Управляет загрузкой больших объектов |
CORS | Управляет конфигурациями CORS для бакетов |
Lifecycles | Управляет конфигурациями жизненных циклов для объектов в бакетах |
ACL | Управляет списками управления доступом |
Bucket Policy | Управляет политиками доступа бакета |
Bucket
create-bucket
Метод для создания бакета
Пример запроса
aws s3api create-bucket --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Location": "/bucket"
}
Параметр | Описание |
---|---|
bucket | Имя бакета При создании нужно учитывать ограничения: - Название бакета должно быть уникально во всей системе. - В названии допускаются только символы Aa-Яя, Aa-Zz, 0-9 |
Ошибки
Invalid bucket name | В названии допускаются только символы Аа-Яя, Aa-Zz, 0-9 |
BucketAlreadyOwnedByYou | У вас уже создан бакет с таким названием |
BucketAlreadyExists | Бакет с таким названием уже заведён у другого пользователя системы |
get-bucket-encryption
Возвращает информацию о шифровании бакета
Пример запроса
aws s3api get-bucket-encryption --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"ServerSideEncryptionConfiguration": {}
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
Ошибки
NoSuchBucket | Бакета с таким именем не существует |
get-bucket-acl
Позволяет проверить:
- cуществует ли бакет
- достаточно ли у пользователя прав для доступа к бакету
Пример запроса
aws s3api get-bucket-acl --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Owner": {
"DisplayName": "5676becd4f60c8cc3145cc04",
"ID": "5676becd4f60c8cc3145cc04"
},
"Grants": [
{
"Grantee": {
"DisplayName": "5676becdd4f60c8cc3145cc04",
"ID": "5676becd4f6d0c8cc3145cc04",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
}
]
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
Ошибки
AccessDenied | Бакета с таким именем не существует |
list-buckets
Выводит список всех бакетов для аккаунта
Пример запроса
aws s3api list-buckets --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Buckets": [
{
"Name": "bucket1",
"CreationDate": "2021-06-08T10:50:35.265000+00:00"
},
{
"Name": "bucket2",
"CreationDate": "2021-06-30T10:39:55.187000+00:00"
}
],
"Owner": {
"DisplayName": "demo",
"ID": "5676becd4f60cd8cc3145cc04"
}
}
delete-bucket
Удаляет пустой бакет
Если бакет не пустой, то сначала нужно удалить все находящиеся в нём объекты
Пример запроса
aws s3api delete-bucket --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Параметр | Описание |
---|---|
bucket | Имя бакета |
Ошибки
NoSuchBucket | Бакета с таким названием не существует |
AccessDenied | У вас нет доступа к бакету с указанным названием |
BucketNotEmpty | Бакет не пустой. Удалять можно только пустые бакеты |
delete-bucket-encryption
Метод убирает шифрование бакета
Пример запроса
aws s3api delete-bucket-encryption --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Параметр | Описание |
---|---|
bucket | Имя бакета |
Ошибки
NoSuchBucket | Бакета с таким названием не существует |
AccessDenied | У вас нет доступа к бакету с указанным названием |
put-bucket-versioning
Включает или приостанавливает версионирование бакета
Версионирование можно установить в одно из двух состояний:
- Enabled — включить управление версиями для объектов в бакете. Все новые объекты, добавляемые в бакет, будут получать уникальный идентификатор версии.
- Suspended — приостанавливает управление версиями для объектов в бакете. Все новые объекты, добавляемые в бакет, будут получать идентификатор версии = null.
Пример запроса
aws s3api put-bucket-versioning --bucket bucket --versioning-configuration status=enabled --endpoint-url=https://eu-s3.platformcraft.com
Параметр | Описание |
---|---|
bucket | Имя бакета |
versioning-configuration status | - Enabled (включено) - Suspended (приостановлено) |
Ошибки
NoSuchBucket | Бакета с таким названием не существует |
AccessDenied | У вас нет доступа к бакету с указанным названием |
get-bucket-versioning
Возвращает состояние опции версионирования
Пример запроса
aws s3api get-bucket-versioning --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Status": "Enabled"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
Ошибки
AccessDenied | У вас нет доступа к бакету с указанным названием |
head-bucket
Помогает определить, существует ли бакет с данным названием и есть ли у вас к нему доступ. Вызов возвращает 200 OK, если бакет существует и у вас есть разрешение на доступ к нему.
Если бакет не существует или у вас доступа к нему, запрос HEAD возвращает общий код 403 Forbidden. Тело сообщения не включается, поэтому вы не можете определить исключение, кроме этих кодов ответа HTTP.
Пример запроса
aws s3api head-bucket --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Параметр | Описание |
---|---|
bucket | Имя бакета |
Ошибки
AccessDenied | У вас нет доступа к бакету с указанным названием |
403 | Бакета с таким названием не существует |
put-bucket-acl
Устанавливает разрешения для существующего бакета с помощью списков управления доступом (ACL).
Пример запроса
aws s3api put-bucket-acl --acl private --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Параметр | Описание |
---|---|
bucket | Имя бакета |
acl | - private - public-read - public-read-write - authenticated-read |
Ошибки
AccessDenied | Бакета с таким названием не существует |
put-bucket-cors
Устанавливает конфигурацию CORS для вашего сегмента.
Пример запроса
aws s3api put-bucket-cors --bucket bucket --cors-configuration file:///Users/user/path/cors.json --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"CORSRules": [
{
"ID": "string",
"AllowedHeaders": ["string", ...],
"AllowedMethods": ["string", ...],
"AllowedOrigins": ["string", ...],
"ExposeHeaders": ["string", ...],
"MaxAgeSeconds": integer
}
...
]
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
cors-configuration –file:// | Путь до JSON-файла |
Ошибки
Invalid JSON | Некорректно составлен JSON |
AccessDenied | У вас нет доступа к бакету с указанным названием |
Object
put-object
Метод для загрузки объекта и его метаданных в Object Storage.
Пример запроса
aws s3api put-object --bucket bucket --key image1 --body /Users/psyweb/Downloads/6889241123.webp --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"ETag": "\"e3e22b84acfc081c7dff7321ba911354\""
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект будет сохранен в Object Storage |
Ошибки
Error parsing parameter '--body': Blob values must be a path to a file. | Некорректное название файла в пути |
Некорректное имя бакета | |
Некорректный эндпоинт |
get-object
Метод для возврата объекта из Object Storage.
Пример запроса
aws s3api get-object --bucket bucket --key image1.webp --endpoint-url=https://eu-s3.platformcraft.com /Users/psyweb/Downloads/downloaded_image1.webp
Успешный ответ
{
"AcceptRanges": "bytes",
"LastModified": "2024-06-03T11:58:15+00:00",
"ContentLength": 36364,
"ETag": "\"e3e22b84acfc081c7dff7321ba911354\"",
"CacheControl": "no-store",
"ContentType": "image/webp",
"Metadata": {},
"StorageClass": "STANDARD"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
Ошибки
An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist. | Указано неверное название файла (ключ объекта) |
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/nikitos/image1.webp" | Некорректный эндпоинт |
Некорректное название баκета |
presign
Метод возвращает предподписанную ссылку на объект из Object Storage.
Пример запроса
aws s3 presign s3://bucket/image1.webp --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
https://eu-s3.platformcraft.com/bucket/image1.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=46a0fefd-8db7-4bae-9d30-9e462dfe9062%2F20240603%2Feu-central-2%2Fs3%2Faws4_request&X-Amz-Date=20240603T120230Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3b768329a2c8283eee9ab2cae97015ebe03d7865d61acfd9447540c63d7af5d6
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
--expires-in | Срок жизни ссылки. По умолчанию 3600 секунд (1 час), можно задать на 86400 секунд (24 часа) и т.д. |
put-object-acl
Метод загружает список управления доступом для объекта.
Пример запроса
aws s3api put-object-acl --bucket bucket --key image1.webp --acl public-read --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
Параметр | Описание |
---|---|
bucket | Имя бакета |
acl | - private (объект будет доступен только владельцу (значение по умолчанию)) - public-read (объект будет доступен для чтения всеми пользователями) - public-read-write (объект будет доступен для чтения и записи всеми пользователями) - authenticated-read (объект будет доступен для чтения только аутентифицированными пользователями) |
get-object-acl
Метод возвращает список управления доступом для объекта.
Пример запроса
aws s3api get-object-acl --bucket bucket --key image1.webp --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Owner": {
"DisplayName": "nikitos",
"ID": "63cbb5ac0e47cf0af5750261"
},
"Grants": [
{
"Grantee": {
"DisplayName": "nikitos",
"ID": "63cbb5ac0e47cf0af5750261",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
},
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AllUsers"
},
"Permission": "READ"
}
]
}
{
"Owner": {
"DisplayName": "nikitos",
"ID": "63cbb5ac0e47cf0af5750261"
},
"Grants": [
{
"Grantee": {
"DisplayName": "nikitos",
"ID": "63cbb5ac0e47cf0af5750261",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
},
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AllUsers"
},
"Permission": "READ"
}
]
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
acl | - private (объект будет доступен только владельцу (значение по умолчанию)) - public-read (объект будет доступен для чтения всеми пользователями) - public-read-write (объект будет доступен для чтения и записи всеми пользователями) - authenticated-read (объект будет доступен для чтения только аутентифицированными пользователями) |
copy-object
Метод копирует объект, хранящийся в Object Storage.
Пример запроса
aws s3api copy-object --bucket bucket --key copied_image1.webp --copy-source bucket/image1.webp --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"CopyObjectResult": {
"ETag": "\"e3e22b84acfc081c7dff7321ba911354\"",
"LastModified": "2024-06-03T12:13:56.449000+00:00"
}
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
Ошибки
An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist. | Указано неверное название файла (ключ объекта) |
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/bucket/copied_image1.webp" | Некорректный эндпоинт |
An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied. | Некорректное название бакета |
list-objects
Метод для листинга объектов в Object Storage.
При выдаче используется пагинация, за один запрос можно получить список не длиннее 10000 объектов. Если объектов больше, то необходимо выполнить несколько запросов подряд.
Пример запроса
aws s3api list-objects --bucket bucket --max-items 5 --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Contents": [
{
"Key": "101_Essays_That_Will_Change_The_Way_You_Think_by_Brianna_Wiest.epub",
"LastModified": "2023-09-18T12:21:16.218000+00:00",
"ETag": "\"09a5ad873ac0ce78590275bc00785dc0\"",
"Size": 371607,
"StorageClass": "STANDARD"
},
{
"Key": "1st work.psd",
"LastModified": "2023-11-17T08:36:02.360000+00:00",
"ETag": "\"35dda6b6c0823da0157c827a7a737bd2-2\"",
"Size": 7924815,
"StorageClass": "STANDARD"
},
{
"Key": "2023-03-06 17.51.31.jpg",
"LastModified": "2024-02-19T09:51:01.669000+00:00",
"ETag": "\"8db87777cc30f7cbfd674a4b9e928054\"",
"Size": 122558,
"StorageClass": "STANDARD"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
--max-items | Количество объектов, выводимых при листинге |
Ошибки
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/bucket/copied_image1.webp | Некорректный эндпоинт |
An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied. | Некорректное название бакета |
list-objects-v2
Метод для листинга объектов второй версии в Object Storage.
Пример запроса
aws s3api list-objects-v2 --bucket bucket --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"Contents": [
{
"Key": "101_Essays_That_Will_Change_The_Way_You_Think_by_Brianna_Wiest.epub",
"LastModified": "2023-09-18T12:21:16.218000+00:00",
"ETag": "\"09a5ad873ac0ce78590275bc00785dc0\"",
"Size": 371607,
"StorageClass": "STANDARD"
},
{
"Key": "1st work.psd",
"LastModified": "2023-11-17T08:36:02.360000+00:00",
"ETag": "\"35dda6b6c0823da0157c827a7a737bd2-2\"",
"Size": 7924815,
"StorageClass": "STANDARD"
},
{
"Key": "2023-03-06 17.51.31.jpg",
"LastModified": "2024-02-19T09:51:01.669000+00:00",
"ETag": "\"8db87777cc30f7cbfd674a4b9e928054\"",
"Size": 122558,
"StorageClass": "STANDARD"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
--max-items | Количество объектов, выводимых при листинге |
Ошибки
An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist. | Указано неверное название файла (ключ объекта) |
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/bucket/copied_image1.webp" | Некорректный эндпоинт |
An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied. | Некорректное название бакета |
head-object
Метод возвращающий метаданные объекта из Object Storage.
Пример запроса
aws s3api head-object --bucket bucket --key image1.webp --endpoint-url=https://eu-s3.platformcraft.com
Успешный ответ
{
"AcceptRanges": "bytes",
"LastModified": "2024-06-04T11:45:52+00:00",
"ContentLength": 36364,
"ETag": "\"e3e22b84acfc081c7dff7321ba911354\"",
"CacheControl": "no-store",
"ContentType": "image/webp",
"Metadata": {},
"StorageClass": "STANDARD"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
Ошибки
An error occurred (404) when calling the HeadObject operation: Not Found | Указано неверное название файла (ключ объекта) или бакета |
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/bucket/copied_image1.webp" | Некорректный эндпоинт |
delete-object
Метод удаляет объект из Object Storage.
Пример запроса
aws s3api delete-object --bucket bucket --key image1.webp --endpoint-url=https://eu-s3.platformcraft.com
Параметр "DeleteMarker": false
указывает, что версия объекта, которую удалили, не была версионной (версионный маркер удаления не установлен).
Успешный ответ
{
"DeleteMarker": false
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
Ошибки
An error occurred (404) when calling the HeadObject operation: Not Found | Указано неверное название файла (ключ объекта) или бакета |
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/bucket/copied_image1.webp" | Некорректный эндпоинт |
delete-objects
Метод удаляет объекты по списку ключей, переданному в запросе. Выполняется быстрее, чем удаление тех же объектов по одному отдельными запросами. Список на удаление может содержать не более 1000 ключей. Если объекта не существует, то Object Storage в ответе отметит его как удаленный.
Пример запроса
aws s3api delete-objects --bucket bucket --delete '{"Objects": [{"Key": "image1.webp"}, {"Key": "copied_image1.webp"}]}' --endpoint-url=https://eu-s3.platformcraft.com
Параметр "DeleteMarker": false
указывает, что версия объекта, которую удалили, не была версионной (версионный маркер удаления не установлен).
Успешный ответ
{
"Deleted": [
{
"Key": "image1.webp"
},
{
"Key": "copied_image1.webp"
}
]
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ объекта. Идентификатор, под которым объект сохранен в Object Storage |
Ошибки
An error occurred (404) when calling the HeadObject operation: Not Found | Указано неверное название файла (ключ объекта) или бакета |
Could not connect to the endpoint URL: "https://eu-s3.platformcraft.ru/bucket/copied_image1.webp" | Некорректный эндпоинт |
Multipart Upload
Общий порядок работы с multipart загрузками
Multipart upload позволяет сохранять объекты в S3-хранилище по частям. Чаще всего используется при загрузке объектов большого размера. Рекомендуем использовать при размере объекта от 100МБ.
Информацию о максимальном размере объекта для загрузки смотрите в разделе Квоты и лимиты S3-хранилища
Составная загрузка состоит из следующих шагов:
-
Инициализация загрузки
Пользователь отправляет запрос для начала multipart ulpload, а S3-хранилище возвращает идентификатор, который следует использовать для дальнейших операций с этой загрузкой.
Метаданные объекта следует передавать на этом этапе загрузки. -
Загрузка объекта по частям
Каждая часть объекта отправляется отдельно, в своем запросе и должна иметь порядковый номер, который используется для сборки объекта на стороне S3-хранилища.
-
Если S3-хранилище получит две части объекта с одинаковыми номерами, то сохранит последнюю загруженную часть.
-
Для каждой успешно загруженной части Object Storage возвращает заголовок ETag в ответе. Пользователю нужно сохранить и номера и соответствующие им ETag для всех загруженных частей загружаемого этим методом файла. Это необходимо для операции завершения загрузки.
-
В процессе загрузки можно получить от S3-хранилища список уже загруженных частей объекта.
-
-
Завершение загрузки
При получении запроса на завершение загрузки S3-хранилище собирает все загруженные части в единый объект и сохраняет метаданные, которые были переданы при инициализации multipart upload.
Пока загрузка не завершена, части объекта сохраняются по отдельности и занимают место, при этом их нельзя получить из S3-хранилища.
Незавершенные загрузки учитываются при расчете занятого места.
Помимо запроса на завершение загрузки пользователь может отправить запрос о прерывании загрузки. В этом случае S3-хранилище удалит все полученные части объекта для заданной загрузки и удалит саму загрузку.
После завершения или прерывания загрузки пользователь не сможет более использовать идентификатор загрузки в запросах.
Пользователь может одновременно запустить несколько составных загрузок с разными идентификаторами.
Можно получить список незавершенных загрузок.
create-multipart-upload
Метод инициализирует начало multipart загрузки в Object Storage.
Пример запроса
aws s3api create-multipart-upload --bucket bucket --key test --endpoint-url http://eu-s3.platformcraft.com
Успешный ответ
{
"Bucket": "bucket",
"Key": "test",
"UploadId": "ec158b91c70b78e9e0808c775ec77704c180e9490fe488d5"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ загрузки. Идентификатор, который нужно сохранить и использовать для дальнейших операций над данной загрузкой |
Ошибки
error: the following arguments are required: --key | Пропущен или не задан аргумент –key (ключ загрузки) |
error: argument --key: expected one argument | Для аргумента –key значение не задано, или задано более 1 значения, возможно синтаксическая ошибка |
An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied. | 1. Неверные данные для авторизации 2. Некорректно указано название бакета 3. Для данного бакета нет необходимых прав |
upload-part
Метод загружает часть составного объекта в Object Storage.
Пример запроса
aws s3api upload-part --bucket bucket --key test --endpoint-url http://eu-s3.platformcraft.com --part-number 1 --upload-id ec158b91c70b78e9e0808c775ec77704c180e9490fe488d5
Успешный ответ
{
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\""
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ загрузки. Идентификатор, который нужно сохранить и использовать для дальнейших операций над данной загрузкой |
--part-number | Порядковый номер части составной загрузки |
--upload-id | Идентификатор загрузки, полученный в ходе ее инициализации |
Ошибки
An error occurred (NoSuchUpload) when calling the UploadPart operation: The specified multipart upload does not exist. | Multipart загрузки с данным идентификатором не найдено, или она была завершена. |
list-parts
Метод возвращает список частей для имеющейся multipart загрузки в Object Storage.
Пример запроса
aws s3api list-parts --bucket bucket --key test --endpoint-url http://eu-s3.platformcraft.com --upload-id ec158b91c70b78e9e0808c775ec77704c180e9490fe488d5
Успешный ответ
"Parts": [
{
"PartNumber": 1,
"LastModified": "2024-06-03T11:40:42.359000+00:00",
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"Size": 0
}
],
"ChecksumAlgorithm": null,
"Initiator": {
"ID": "65cb21c80e47cf1e36bcfecc",
"DisplayName": "65cb21c80e47cf1e36bcfecc"
},
"Owner": {
"DisplayName": "65cb21c80e47cf1e36bcfecc",
"ID": "65cb21c80e47cf1e36bcfecc"
},
"StorageClass": "STANDARD"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ загрузки |
--upload-id | Идентификатор загрузки, полученный в ходе ее инициализации |
Ошибки
An error occurred (NoSuchUpload) when calling the UploadPart operation: The specified multipart upload does not exist. | Multipart загрузки с данным идентификатором не найдено, или она была завершена. |
complete-multipart-upload
Метод завершает ранее начатую multipart загрузку в Object Storage.
Пример запроса
aws s3api complete-multipart-upload --bucket bucket --key test --multipart-upload file:///Users/shzk/up.xml --upload-id df0cbaff4a6535a43e85dfbf9c300223bfe02b85c15ed116 --endpoint-url=http://eu-s3.platformcraft.com
Содержимое up.xml
{
"Parts": [
{
"ETag": "\"6c357ea83a0096d751dc6e0dd15c1022\"",
"PartNumber": 1
}
]
}
Успешный ответ
{
"Location": "/bucket/user-test",
"Bucket": "bucket",
"Key": "user-test",
"ETag": "41eb9ba73f7841cc485b501801c27e62-1"
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ загрузки |
--multipart-upload | Файл с перечислением частей составной загрузки |
--upload-id | Идентификатор загрузки, полученный в ходе ее инициализации |
Ошибки
An error occurred (NoSuchUpload) when calling the UploadPart operation: The specified multipart upload does not exist. | Multipart загрузки с данным идентификатором не найдено, или она была завершена. |
list-multipart-uploads
Метод выводит список существующих multipart загрузок.
При указании ключа - выводит только загрузку с соответствующим ключом.
Пример запроса
aws s3api list-multipart-uploads --bucket bucket --endpoint-url http://eu-s3.platformcraft.com
Успешный ответ
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ загрузки |
--upload-id | Идентификатор загрузки, полученный в ходе ее инициализации |
Ошибки
An error occurred (NoSuchUpload) when calling the UploadPart operation: The specified multipart upload does not exist. | Multipart загрузки с данным идентификатором не найдено, или она была завершена. |
abort-multipart-upload
Метод прерывает составную загрузку в Object Storage.
Пример запроса
aws s3api abort-multipart-upload --bucket bucket --key test --endpoint-url http://eu-s3.platformcraft.com --upload-id ec158b91c70b78e9e0808c775ec77704c180e9490fe488d5
Успешный ответ
{
"Uploads": [
{
"UploadId": "5b046dc5410d02829e048d29451ded99f404853215d849b9",
"Key": "test",
"Initiated": "2024-06-03T11:34:20.104000+00:00",
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "65cb21c80e47cf1e36bcfecc",
"ID": "65cb21c80e47cf1e36bcfecc"
},
"Initiator": {
"ID": "65cb21c80e47cf1e36bcfecc",
"DisplayName": "65cb21c80e47cf1e36bcfecc"
}
}
],
"RequestCharged": null
}
В случае отсутствия активных multipart загрузок будет отдан json с таким содержимым:
{
"RequestCharged": null
}
Параметр | Описание |
---|---|
bucket | Имя бакета |
key | Ключ загрузки |
--upload-id | Идентификатор загрузки, полученный в ходе ее инициализации |
Ошибки
An error occurred (NoSuchUpload) when calling the UploadPart operation: The specified multipart upload does not exist. | Multipart загрузки с данным идентификатором не найдено, или она была завершена. |