Общие ограничения при создании бакета
При создании бакета обратите внимание, что:
- Имя бакета должно быть уникальным;
- Имя бакета не может быть отформатировано как IP-адрес;
- Имя может иметь длину от 3 до 63 символов;
- Имя не может содержать символы верхнего регистра или подчеркивания;
- Имя должно начинаться со строчной буквы или цифры;
- Имя бакета должно состоять из одного или нескольких сегментов. Соседние сегменты разделяются одной точкой (.). Имена сегментов могут содержать строчные буквы, цифры и дефисы.
List Buckets
Возвращает список бакетов, созданных пользователем сделавшим запрос
Запрос
GET / HTTP/1.1
Host: s3.inferit.cloud
Authorization: AWS {access-key}:{hash-of-header-and-secret}
Элементы ответа
| Имя | Тип | Описание |
|---|---|---|
| DisplayName | String | Отображаемое имя владельца бакета |
| ListAllMyBucketsResult | Container | Контейнер результата вывода |
| Buckets | Container | Контейнер для списка бакетов |
| Bucket | Container | Контейнер для информации о бакете |
| Owner | Container | Контейнер для владельца бакета (ID и DisplayName). |
| Name | String | Имя бакета |
| ID | String | Идентификатор владельца бакета |
| CreationDate | Date | Время UTC, когда был создан контейнер |
Пример вывода
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.inferit.cloud/doc/2006-03-01/">
<Owner>
<ID>testbucket</ID>
<DisplayName>testbucket</DisplayName>
</Owner>
<Buckets>
<Bucket>
<Name>test</Name>
<CreationDate>2024-10-25T14:12:14.816Z</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
Delete Bucket
Удаляет бакет. После удаления, имя бакета доступно для повторного использования.
Внимание! Перед удалением бакета необходимо удалить в нем все объекты!
Запрос
DELETE /{bucket} HTTP/1.1
Host: s3.inferit.cloud
Authorization: AWS {access-key}:{hash-of-header-and-secret}
Элементы ответа
| HTTP Статус | Код состояния | Описание |
|---|---|---|
| 204 | No Content | Бакет удален |
GET Bucket
Возвращает список объектов бакета.
Запрос
GET /{bucket}?max-keys=25 HTTP/1.1
Host: s3.inferit.cloud
Параметры:
| Имя | Тип | Описание |
|---|---|---|
| prefix | String | Возвращает только объекты, содержащие указанный префикс. |
| delimiter | String | Разделитель между префиксом и остальной частью имени объекта. |
| marker | String | Начальный индекс для списка возвращаемых объектов. |
| max-keys | Integer | Максимальное количество символов для возврата. По умолчанию – 1000. |
| allow-unordered | Boolean | Нестандартное расширение. Позволяет возвращать неупорядоченные результаты. Не может использоваться с разделителем. |
Коды ответа
| HTTP Status | Status Code | Описание |
|---|---|---|
| 200 | OK | Бакеты извлечены |
Элементы ответа
| Имя | Тип | Описание |
|---|---|---|
| ListBucketResult | Entity | Контейнер для списка объектов. |
| Name | String | Имя бакета содержимое которого будет возвращено. |
| Prefix | String | Префикс для ключей объекта. |
| Marker | String | Начальный индекс для возвращаемого списка объектов. |
| MaxKeys | Integer | Максимальное количество возвращаемых ключей. |
| Delimiter | String | Если этот параметр установлен, объекты с одинаковым префиксом будут отображаться в списке CommonPrefixes list. |
| IsTruncated | Boolean | если значение true, тогда возвращена только часть содержимого бакета. |
| CommonPrefixes | Container | Если несколько объектов содержат один и тот же префикс, они появятся в этом списке. |
Пример ответа
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.inferit.cloud/doc/2006-03-01/">
<Name>testbucket</Name>
<Prefix></Prefix>
<MaxKeys>1</MaxKeys>
<IsTruncated>true</IsTruncated>
<Contents>
<Key>test1</Key>
<LastModified>2024-10-30T16:52:40.385Z</LastModified>
<ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
<Size>0</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>testbucket2</ID>
<DisplayName>testbucket2</DisplayName>
</Owner>
<Type>Normal</Type>
</Contents>
<Marker></Marker>
<NextMarker>test1</NextMarker>
</ListBucketResult>
Get Bucket Location
Получает регион бакета. Для вызова этой функции пользователь должен быть владельцем бакета. Бакет можно ограничить регионом, указав LocationConstraint в запросе PUT.
Синтаксис
Добавьте ?location к запросу GET /{bucket} как показано ниже.
GET /{bucket}?location HTTP/1.1
Host: s3.inferit.cloud
Authorization: AWS {access-key}:{hash-of-header-and-secret}
Элементы ответа
| Имя | Тип | Описание |
|---|---|---|
| LocationConstraint | String | Регион в котором находится бакет |
Пример ответа
<?xml version="1.0" encoding="UTF-8"?>
<LocationConstraint xmlns="http://s3.inferit.cloud/doc/2006-03-01/">default</LocationConstraint>
Create Bucket
Создает новый бакет. Создать бакет может только авторизованный пользователь.
PUT /{bucket} HTTP/1.1
Host: s3.inferit.cloud
x-amz-acl: public-read-write
Authorization: AWS {access-key}:{hash-of-header-and-secret}
Если имя контейнера уникально, находится в пределах ограничений и не используется, операция будет выполнена успешно с кодом 200. Если имя контейнера уже используется, операция завершится неудачей и вернет код 409
Коды ответа
| HTTP Статус | Код состояния | Описание |
|---|---|---|
| 409 | BucketAlreadyExists | Бакет уже существует под владением другого пользователя. |
Get Bucket Info (HEAD)
Возвращает только заголовки, содержащие информацию о бакете.
Этот метод полезен для быстрой проверки существования бакета и получения информации о его состоянии и правах доступа без загрузки данных.
Запрос
HEAD /{bucket} HTTP/1.1
Host: s3.inferit.cloud
Authorization: AWS {access-key}:{hash-of-header-and-secret}
Заголовки ответа
| Имя | Описание |
|---|---|
| X-RGW-Object-Count | Количество объектов в бакете |
| X-RGW-Bytes-Used | Использованный объем в байтах |
| X-RGW-Quota-User-Size | Квота по объему для пользователя, выраженная в байтах |
| X-RGW-Quota-User-Objects | Максимально допустимое количество объектов для пользователя |
| X-RGW-Quota-Max-Buckets | Максимально допустимое количество бакетов для пользователя |
| X-RGW-Quota-Bucket-Size | Максимально допустимый размер бакета |
| X-RGW-Quota-Bucket-Objects | Максимально допустимое количество объектов в бакете |
| x-amz-request-id | Уникальный идентификатор запроса |
Get Usage Stats
Получает статистику использования для пользователя.
Запрос
GET /?usage HTTP/1.1
Host: s3.inferit.cloud
Authorization: AWS {access-key}:{hash-of-header-and-secret}
Элементы ответа
| Имя | Описание |
|---|---|
| Summary | Сводка общей статистики по пользователю. |
| QuotaMaxBytes | Максимальный объем данных, который пользователь может хранить (в байтах) |
| QuotaMaxBuckets | Максимально допустимое количество бакетов для пользователя |
| QuotaMaxObjCount | Максимальное количество объектов, которое пользователь может создать |
| QuotaMaxObjCountPerBucket | Максимальное количество объектов на один бакет |
| TotalBytes | Общий объем данных, хранящийся пользователем, в байтах |
| TotalBytesRounded | Округленный общий объем данных |
| TotalEntries | Общее количество объектов |
| CapacityUsed | Информация об использовании объема данных в каждом бакете |
| Bucket | Имя бакета |
| Bytes | Текущий объем данных, хранящийся в бакете, в байтах |
| Bytes_Rounded | Округленный объем данных в бакете. |
Пример ответа
<?xml version="1.0" encoding="UTF-8"?>
<Usage>
<Entries></Entries>
<Summary>
<QuotaMaxBytes>322122547200</QuotaMaxBytes>
<QuotaMaxBuckets>5</QuotaMaxBuckets>
<QuotaMaxObjCount>100000</QuotaMaxObjCount>
<QuotaMaxBytesPerBucket>100000</QuotaMaxBytesPerBucket>
<QuotaMaxObjCountPerBucket>322122547200</QuotaMaxObjCountPerBucket>
<TotalBytes>2334258305</TotalBytes>
<TotalBytesRounded>2343575552</TotalBytesRounded>
<TotalEntries>4138</TotalEntries>
</Summary>
<CapacityUsed>
<User>
<Buckets>
<Entry>
<Bucket>testbucket1</Bucket>
<Bytes>2334258305</Bytes>
<Bytes_Rounded>2343575552</Bytes_Rounded>
</Entry>
<Entry>
<Bucket>testbucket</Bucket>
<Bytes>0</Bytes>
<Bytes_Rounded>0</Bytes_Rounded>
</Entry>
</Buckets>
</User>
</CapacityUsed>
</Usage>