Хранилище
S3. Управление хранилищем через AWS API напрямую
Вы можете подключаться к S3-хранилищу и управлять им, используя AWS API напрямую. Описанные ниже методы основаны на официальной документации AWS S3 API.
Обратите внимание. Все API-запросы должны быть подписаны с помощью AWS SignatureVersion 4. Это версия подписи для аутентификации и проверки подлинности запросов. Подробности описаны в официальной документации.
Создать бакет
Для создания бакета используйте метод PUT согласно CreateBucket API.
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 на бакет
Для настройки CORS используйте метод PUT согласно PutBucketCors API.
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.
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.
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 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 — размер файла в байтах