Введение

Platformcraft предоставляет универсальное масштабируемое решение для хранения данных - Platformcraft S3 Object Storage. Решение подходит как для высоконагруженных сервисов, которым требуется надежный и быстрый доступ к данным, так и для проектов с невысокими требованиями к инфраструктуре хранения.

В терминах Object Storage файлы и папки — это объекты. Все объекты размещаются в бакетах. Структура хранения объектов в бакете плоская, но инструменты с графическим интерфейсом предлагают работать с Object Storage как с иерархической файловой системой.

Общие рекомендации по работе с S3

Эндпоинт https://eu-s3.platformcraft.com
Название бакета В названии допускаются только символы Аа-Яя, Aa-Zz, 0-9, тире и точки (кроме Veeam: наименование должно быть на латинице, без прочерков, точек и т.д. Пример: examplegroup).

Перед началом работы

  1. Перейдите в личный кабинет, затем авторизируйтесь.
  2. На главной странице выберете раздел Настройки, перейдите во вкладку Доступы S3 и нажмите кнопку Сгенерировать.
  3. На экране появятся следующие параметры: endpoint, AWS Access Key ID и AWS Secret Access Key ID. Параметры отображаются лишь единожды, создайте на рабочем столе файл creds.txt и перепишите туда их значения.

Инструменты

AWS CLI

Интерфейс командной строки для работы с сервисами AWS. Общий порядок вызова команд смотрите в официальной документации Amazon.

Установка

Для установки AWS CLI воспользуйтесь инструкцией на сайте производителя.

Настройка

Для настройки AWS CLI введите команду aws configure. Команда запросит значения для следующих параметров:

  1. AWS Access Key ID — идентификатор статического ключа, сгенерированного в ЛК.
  2. AWS Secret Access Key — содержимое статического ключа, сгенерированного в ЛК.
  3. Default region name — регион eu-central-2.
  4. Значения остальных параметров оставьте без изменений.
  5. Не закрывайте окно, чтобы не прерывать процесс. screenshot_aws.png

Cyberduck

Графический клиент для работы с облачными хранилищами, в том числе совместимыми с Amazon S3 API. CyberDuck доступен для macOS и Windows, а также в виде консольного клиента для Linux.

Установка

Скачайте дистрибутив CyberDuck для вашей операционной системы и запустите его.

Настройка

  1. Запустите CyberDuck.
  2. Нажмите кнопку "+".
  3. Выберите тип подключения — Amazon S3.
  4. Укажите параметры подключения:
    Servereu-s3.platformcraft.com.
    Port443.
    Access Key ID — идентификатор статического ключа, сгенерированный ранее в ЛК.
    Secret Access Key — секретный ключ, сгенерированный ранее в ЛК.
  5. Закройте окно.
    cyberduck-1.png

Примечание

CyberDuck работает с Object Storage как с иерархической файловой системой. Это значит, что ключи объектов, загруженных через CyberDuck, будут иметь вид пути к файлу, например prefix/subprefix/picture.jpg.

Лимиты по умолчанию

Начало работы

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

Позволяет проверить:

Пример запроса

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

Включает или приостанавливает версионирование бакета

Версионирование можно установить в одно из двух состояний:

Пример запроса

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-хранилища

Составная загрузка состоит из следующих шагов:

  1. Инициализация загрузки

    Пользователь отправляет запрос для начала multipart ulpload, а S3-хранилище возвращает идентификатор, который следует использовать для дальнейших операций с этой загрузкой.
    Метаданные объекта следует передавать на этом этапе загрузки.

  2. Загрузка объекта по частям

    Каждая часть объекта отправляется отдельно, в своем запросе и должна иметь порядковый номер, который используется для сборки объекта на стороне S3-хранилища.

    • Если S3-хранилище получит две части объекта с одинаковыми номерами, то сохранит последнюю загруженную часть.

    • Для каждой успешно загруженной части Object Storage возвращает заголовок ETag в ответе. Пользователю нужно сохранить и номера и соответствующие им ETag для всех загруженных частей загружаемого этим методом файла. Это необходимо для операции завершения загрузки.

    • В процессе загрузки можно получить от S3-хранилища список уже загруженных частей объекта.

  3. Завершение загрузки

    При получении запроса на завершение загрузки 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 загрузки с данным идентификатором не найдено, или она была завершена.