Top.Mail.Ru

Хранилище

S3. Управление хранилищем через AWS API напрямую

Вы можете подключаться к S3-хранилищу и управлять им, используя AWS API напрямую. Описанные ниже методы основаны на официальной документации AWS S3 API.

Обратите внимание. Все API-запросы должны быть подписаны с помощью AWS SignatureVersion 4. Это версия подписи для аутентификации и проверки подлинности запросов. Подробности описаны в официальной документации.

Для создания бакета используйте метод PUT согласно CreateBucket API.

http
PUT / HTTP/1.1
Host: test-bucket.s-dt2.cloud.edgecore.ru
Authorization: AWS4-HMAC-SHA256 Credential=1234/20231201/ru-central1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=calculated-signature
x-amz-date: 20231201T120000Z
Content-Length: 0

Где:

test-bucket — название создаваемого бакета

s-dt2.cloud.edgecore.ru — URL вашего хранилища

1234 — access key, который вы получили при создании хранилища

calculated-signature — подпись запроса, рассчитанная по алгоритму AWS Signature Version 4

Для настройки CORS используйте метод PUT согласно PutBucketCors API.

http
PUT /?cors HTTP/1.1
Host: test-bucket.s-dt2.cloud.edgecore.ru
Authorization: AWS4-HMAC-SHA256 Credential=1234/20231201/ru-central1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=calculated-signature
x-amz-date: 20231201T120000Z
Content-Type: text/xml

<CORSConfiguration>
  <CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
  </CORSRule>
</CORSConfiguration>

Где:

test-bucket — название вашего бакета

?cors — параметр запроса для операций с CORS

Для загрузки файла используйте метод PUT согласно PutObject API.

http
PUT /test-file.txt HTTP/1.1
Host: test-bucket.s-dt2.cloud.edgecore.ru
Authorization: AWS4-HMAC-SHA256 Credential=1234/20231201/ru-central1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=calculated-signature
x-amz-date: 20231201T120000Z
Content-Type: text/plain
Content-Length: 13

Hello, world!

Где:

test-file.txt — имя загружаемого файла

Hello, world! — содержимое файла

Content-Length — размер файла в байтах

Для получения списка объектов используйте метод GET согласно ListObjectsV2 API.

http
GET /?list-type=2 HTTP/1.1
Host: test-bucket.s-dt2.cloud.edgecore.ru
Authorization: AWS4-HMAC-SHA256 Credential=1234/20231201/ru-central1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature=calculated-signature
x-amz-date: 20231201T120000Z

Ответ сервера:

xml
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>test-bucket</Name>
    <KeyCount>2</KeyCount>
    <Contents>
        <Key>test-file.txt</Key>
        <LastModified>2023-12-01T12:00:00.000Z</LastModified>
        <Size>13</Size>
        <StorageClass>STANDARD</StorageClass>
    </Contents>
</ListBucketResult>

Где:

?list-type=2 — параметр для использования версии 2 API ListObjects

KeyCount — количество объектов в ответе

Size — размер файла в байтах

Мы используем cookie, чтобы сайт стал лучше для вас.