Список операцией, которые можно выполнять с объектами:
У операций с бакетами существуют типовые сообщения об ошибках, заголовки запросов и заголовки ответов, однако бывают и специальные, но указывается в описании операции.
Для выполнения операции GET, извлекающей объект из бакета, необходимо обладать правами READ на объект.
Объект можно возвращать без использования заголовка авторизации, если предоставить доступ READ анонимному пользователю.
Бакет не имеет, как в стандартной файловой системе, иерархию каталогов. Но в нем можно настроить логическую иерархию на основе ключей объектов, которые подразумевают структуру папок. Например, можно назвать объект не `sample.jpg`, а `photos/2020/August/01.jpg`.
Для извлечения объект с такой логической иерархией нужно указать в операции GET полное имя объекта.
Запрос:
Ответ:
... HTTP/1.1 200 OK Date: Mon, 31 Aug 2020 19:05:39 GMT x-amz-request-id: tx00000000000000279f46e-005963d003-1268c-ru-mska Content-Type: text/plain Content-Length: 14 Accept-Ranges: bytes Last-Modified: Mon, 31 Aug 2020 19:05:09 GMT Etag: "b3a92f49e7ae64acbf6b3e76f2040f5e" Connection: close Example text. '''Операция PUT добавляет объект в бакет. Для выполнения операции необходимо обладать правами WRITE на бакет.
Если размер объекта превышает 50МБ, Linx S3 добавляет объекты частично. Если получен ответ об успешном выполнении, значит объект добавлен в бакет целиком.
Если выполняются одновременные операций PUT и при это есть одинаковые загружаемые объекты, S3 перезаписывает все, кроме последнего записанного объекта.
Для предотвращения повреждения данных при прохождении сети, следует использовать заголовок `Content-MD5`, т.к. в таком случае будет проходить сверка объекта с предоставленным значением MD5 и, в случае несовпадения, возвращает ошибку. Также можно вычислить MD5, помещая объект в бакет, и сравнить возвращаемый `ETag` с вычисленным значением MD5.
Запрос:
Ответ:
... HTTP/1.1 200 OK Date: Mon, 31 Aug 2020 19:46:06 GMT x-amz-request-id: tx0000000000000027bd57c-005963d97e-1268c-ru-mska Content-Length: 0 Accept-Ranges: bytes Last-Modified: Mon, 31 Aug 2020 19:05:09 GMT Etag: "fb08934ef619f205f272b0adfd6c018c" Connection: close '''С помощью операции PUT можно создать копию объекта, которая уже хранится в бакете. Копирование одинаково с последовательным выполнением операций GET и PUT. Если добавить заголовок `x-amz-copy-source` в запрос, то операция PUT скопирует изначальный объект в целевой бакет.
В случае копирования объекта можно сохранить большую часть метаданных (автоматически) или указать новые метаданные, включив в запрос заголовок `x-amz-metadata-directive: REPLACE`. ACL не копируется — для пользователя, отправляющего запрос, новый объект будет частный.
Каждый запрос на копирование должен пройти проверку подлинности и не может содержать текст сообщения. Также необходимо обладать доступом READ к исходному объекту и доступ WRITE к целевому бакету.
Есть два случая, когда запрос на копирование может вернуть ошибку:
Если ошибка возникает до начала операции копирования, будет получена стандартная ошибка. Если ошибка возникает во время операции копирования, ошибка будет встроена в ответ 200 OK. Это означает, что ответ 200 OK может содержать сообщение как об успехе, так и об ошибке.
Запрос:
Ответ:
... HTTP/1.1 200 OK Date: Mon, 31 Aug 2020 20:22:54 GMT x-amz-request-id: tx0000000000000027d8430-005963e21d-1268c-ru-mska Content-Length: 183 Connection: close 2020-08-31T20:22:54.167Z 7967bfe102f83fb5fc7e5a02bf05e8fc '''Если требуются только метаданные объекта, то используется, операция HEAD, извлекающая метаданные из объекта без возвращения самого объекта. Чтобы воспользоваться операцией HEAD, нужно обладать правом READ на объект.
Для запроса операции HEAD указываются те же параметры, что и для операции GET для объекта. Ответ идентичен ответу GET, за исключением отсутствия тела ответа.
Возвращаемая ошибка зависит от того, есть ли у учетной записи дополнительное разрешение `s3:ListBucket`, если запрашиваемый объект не существует
* Если есть разрешение `s3:ListBucket` на бакете, то возвращается HTTP ошибка 404.
* Если нет, то возвращается HTTP ошибка 403.
Запрос:
Ответ:
... HTTP/1.1 200 OK Date: Mon, 31 Aug 2020 18:51:58 GMT x-amz-request-id: tx0000000000000002ff1c9-00596912ce-6441-ru-mska Content-Type: text/plain Content-Length: 14 Accept-Ranges: bytes Last-Modified: Mon, 31 Aug 2020 18:40:46 GMT Etag: "b3a92f49e7ae64acbf6b3e76f2040f5e" Connection: close '''С помощью операции DELETE можно удалить объект, который указан в запросе.
Запрос:
Ответ:
... HTTP/1.1 204 No Content Date: Mon, 31 Aug 2020 19:44:09 GMT x-amz-request-id: tx0000000000000027bbc48-005963d908-1268c-ru-mska Connection: close '''Операция удаляет объекты по списку ключей (не более 1000 ключей), который указан в запросе. Отсутствие объекта не является ошибкой. Если объекта не существует, то в ответе он будет помечен удаленным.
Список ключей на удаление передается в XML формате. Также необходимы заголовки `Content-MD5` и `Content-Length`.
Запрос:
Ответ:
... HTTP/1.1 204 No Content Date: Mon, 31 Aug 2020 19:44:09 GMT x-amz-request-id: tx0000000000000027bbc48-005963d908-1268c-ru-mska Connection: close picture.png some/another/key.txt TextErrorCode Describing message '''Опишите вашу задачу, и мы поможем вам ее решить