Операции с объектами


Для всех операций с объектами характерны типовые сообщения об ошибках, заголовки запросов и заголовки ответов. Если у операции есть специальные сообщения об ошибках, заголовки запросов или ответов, об этом будет указано в в описании операции.

DELETE Object

Эта реализация операции DELETE удаляет объект, указанный в запросе.

Запросы

Синтаксис запросов

 DELETE /ObjectName HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Date: date
 Content-Length: length
 Authorization: authorization string

Параметры запроса

Эта реализация операции не использует параметры запроса.

Элементы запроса

Эта реализация операции не использует элементы запроса.

Пример

Данный запрос удаляет объект «objectname».

Запрос

 DELETE /ObjectName HTTP/1.1
 Authorization: authorization string
 Connection: close
 Date: Thu, 09 Feb 2017 15:57:13 GMT
 Host: BucketName.hb.bizmrg.com

Ответ

 HTTP/1.1 204 No Content
 Server: nginx/1.10.2
 Date: Thu, 09 Feb 2017 15:57:13 GMT
 Content-Type: text/html; charset=utf-8
 Content-Length: 0
 Connection: close
 X-req-id: JX36CZtwP8

GET Object

Описание

Эта реализация операции GET извлекает объект из хранилища. Чтобы использовать GET, вы должны иметь доступ READ к объекту. Предоставив доступ READ анонимному пользователю, вы можете возвращать объект без использования заголовка авторизации.

У контейнера Cloud Storage нет иерархии каталогов, как в стандартной файловой системе компьютера. Тем не менее, вы можете создать логическую иерархию, используя имена ключей объектов, которые подразумевают структуру папок. Например, вы можете назвать объект не sample.jpg, а photos/2006/February/sample.jpg.

Чтобы извлечь объект с такой логической иерархией, укажите в операции GET полное имя объекта. 

Если у вас есть объект с именем photos/2006/February/sample.jpg, вы можете в зависимости от стиля запроса указать ресурс как /photos/2006/February/sample.jpg или как /examplebucket/photos/2006/February/sample.jpg, где examplebucket — имя вашего контейнера. 

Запросы

Синтаксис запросов

 GET /ObjectName HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Date: date
 Authorization: authorization string
 Range: bytes=byte_range

Заголовки запроса

Эта реализация операции может использовать следующие заголовки запросов в дополнение к заголовкам запросов, общим для всех операций. Заголовки запросов ограничены 8 КБ. 


Имя
Описание
Обязательно
Range

Загружает байты объекта в указанном диапазоне. Подробнее о заголовке HTTP Range: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет

Элементы запроса

Эта реализация операции не использует элементы запроса.

Ответы

Элементы ответа

Эта реализация операции не возвращает элементы ответа.

Примеры

Пример 1

Этот запрос возвращает объект file1.bin.

Запрос

 GET /file1.bin HTTP/1.1
 Authorization: authorization string
 Connection: close
 Date: Thu, 09 Feb 2017 15:57:13 GMT
 Host: BucketName.hb.bizmrg.com 

Ответ

 HTTP/1.1 200 OK
 Server: nginx/1.10.2
 Date: Thu, 09 Feb 2017 15:57:13 GMT
 Content-Type: binary/octet-stream
 Content-Length: 8
 Connection: close
 Etag: "05a671c66aefea124cc08b76ea6d30bb"
 Last-modified: Thu, 09 Feb 2017 15:57:12 GMT
 X-req-id: HT47geSCKR

Пример 2

В следующем запросе задается заголовок Range, чтобы получить первые 10 байт объекта. Больше информации о заголовке Range читайте по ссылке: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html. Cloud Storage не поддерживает получение нескольких диапазонов данных для запроса GET.

Запрос

 Host: BucketName.hb.bizmrg.com    
 x-amz-date: Fri, 28 Jan 2011 21:32:02 GMT
 Range: bytes=0-9
 Authorization: autorization string

Ответ

 HTTP/1.1 206 Partial Content    
 x-req-id: 47622117804B3E11
 Date: Fri, 28 Jan 2011 21:32:09 GMT
 Last-Modified: Fri, 28 Jan 2011 20:10:32 GMT
 ETag: "b2419b1e3fd45d596ee22bdf62aaaa2f"
 Accept-Ranges: bytes
 Content-Range: bytes 0-9/443
 Content-Type: text/plain
 Content-Length: 10
 Server: AmazonS3

 [10 bytes of object data]


GET Object ACL

Описание

Эта реализация операции GET использует субресурс «acl» для возврата списка управления доступом (ACL) объекта. Чтобы использовать эту операцию, вы должны иметь право READ_ACP на объекте.

Подробнее об ACL читайте в статье «Списки управления доступом (ACL)».

Запросы

Синтаксис

 GET /ObjectName?acl HTTP/1.1    
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com) 
 Date: date
 Authorization: authorization string

Параметры запроса

Эта реализация операции не использует параметры запроса.

Элементы запроса

Эта реализация операции не использует элементы запроса.

Ответы

Элементы ответа

Имя
Описание
AccessControlList

Блок, содержащий список проектов и глобальных групп , которым предоставляются права, и список предоставляемых прав.

  • Тип: Container
  • Родительские объекты: AccessControlPolicy
AccessControlPolicy

Блок, содержащий информацию о проекте-владельце объекта, проектах или глобальных группах, которым права предоставляются, и о самих предоставляемых правах

  • Тип: Container
  • Родительские объекты: отсутствует
DisplayName

Домен проекта Cloud Storage (например, first.bizml.ru).

  • Тип: String
  • Родительские объекты: AccessControlPolicy.Owner
Grant

Блок, содержащий информацию о проектe или глобальной  группe, которой предоставляются права, и соответствующие предоставляемые права.

  • Тип: Container
  • Родительские объекты: AccessControlPolicy.AccessControlList
Grantee

Информация о группе (URI) или о проекте (домен и идентификатор).

  • Тип: String
  • Родительские объекты: AccessControlPolicy.AccessControlList.Grant
ID

Идентификатор владельца контейнера или идентификатор получателя.

  • Тип: String
  • Родительские объекты: AccessControlPolicy.Owner или AccessControlPolicy.AccessControlList.Grant
Owner

Блок, содержащий информацию о проекте, владеющим объектом. (Информация включает домен и идентификатор проекта).

  • Тип: Container
  • Родительские объекты: AccessControlPolic
Permission

Указывает право предоставленное проекту или глобальной группе (FULL_CONTROL, READ, WRITE, READ_ACP, WRITE_ACP).

  • Тип: String
  • Родительские объекты: AccessControlPolicy.AccessControlList.Gran

Пример

Данный запрос возвращает информацию о правах установленных на объекте my-image.jpg.

Запрос

 GET /my-image.jpg?acl HTTP/1.1
 Authorization: authorization string
 Connection: close
 Date: Wed, 02 Aug 2017 09:46:20 GMT
 Host: BucketName.hb.bizmrg.com
 X-amz-content-sha256: UNSIGNED-PAYLOAD

Ответ

 HTTP/1.1 200 OK
 Server: nginx/1.12.1
 Date: Wed, 02 Aug 2017 09:46:21 GMT
 Content-Type: application/xml
 Content-Length: 475
 Connection: close
 X-req-id: 39z7arDEC
<?xml version="1.0" encoding="utf-8"?>
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Owner>
        <ID>423f843a-8c98-486e-a1ea-e15d1b2a63a1</ID>
        <DisplayName>example_prj@bizmrg.ru</DisplayName>
    </Owner>
    <AccessControlList>
        <Grant>
            <Permission>READ</Permission>
            <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
                <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI>
            </Grantee>
        </Grant>
    </AccessControlList>
</AccessControlPolicy>




 PUT Object

Описание

Эта реализация операции PUT добавляет объект в контейнер. У вас должны быть установлено право WRITE на контейнер, чтобы добавить в него объект.

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

Сервис — распределенная система. Если сервис одновременно получает несколько запросов на запись для одного и того же объекта, он перезаписывает все, кроме последнего записанного объекта.

Чтобы предотвратить повреждение данных при прохождении сети, используйте заголовок Content-MD5. Когда вы используете этот заголовок, сервис сверяет объект с предоставленным значением MD5 и в случае несовпадения возвращает ошибку. Кроме того, вы можете вычислить MD5, помещая объект в хранилище, и сравнить возвращаемый ETag с вычисленным значением MD5.

Чтобы настроить приложение для отправки заголовков запросов до отправки текста запроса, используйте код состояния HTTP 100-continue. Для операций PUT это помогает избежать отправки текста сообщения, если сообщение отклонено из-за заголовков (например, из-за сбоя аутентификации или перенаправления). Подробнее о коде состояния HTTP 100-continue см. в разделе 8.2.3:http://www.ietf.org/rfc/rfc2616.txt.


Права доступа

При загрузке объекта вы можете дополнительно указать учетные записи или глобальные группы, которым должны быть предоставлены права доступа для вашего объекта. Существует два способа предоставления прав, используя заголовки запросов:

  • Укажите связанный ACL, используя заголовок запроса x-amz-acl.
  • Укажите права доступа явным образом с помощью заголовков x-amz-grant-read, x-amz-grant-read-acp, and x-amz-grant-write-acp, x-amz-grant-full-control. Эти заголовки сопоставляются с набором разрешений, поддерживаемых сервисом в ACL.

Вы можете использовать связанный ACL или явно указать права доступа. Нельзя использовать оба способа.

Если эти заголовки используются для изменения прав доступа к объекту то запрашивающая сторона должна обладать правом  WRITE_ACP.

Запросы

Синтаксис

 PUT /ObjectName HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Date: date
 Authorization: authorization string

Синтаксис показывает некоторые заголовки запросов. Полный список см. в разделе «Заголовки запросов».

Параметры запроса

Эта реализация операции не использует параметры запроса.

Заголовки запроса

В дополнение к заголовкам запроса, общим для всех операций, эта реализация операции может использовать следующие заголовки запросов. Заголовки запросов ограничены 8 КБ. 


Имя
Описание
Обязательно
Content-Length

Размер объекта в байтах. Подробности: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Да
Content-MD5

128-битный MD5-хэш сообщения (без заголовков) в кодировке Base64 в соответствии с RFC 1864. Этот заголовок может использоваться для проверки целостности сообщения, чтобы убедиться, что данные те же, что были отправлены первоначально. Хотя это необязательно, мы рекомендуем использовать механизм Content-MD5 в качестве сквозной проверки целостности.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
Content-Type

Стандартный MIME-тип, описывающий формат содержимого. Подробности: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17.

  • Тип: String
  • По умолчанию:  binary/octet-stream
  • Допустимые значения: Типы MIME
  • Ограничения: отсутствует
Нет
Expect

Когда ваше приложение использует 100-continue, оно не отправляет текст запроса, пока не получит подтверждение. Если сообщение отклонено из-за заголовков, текст сообщения не отправляется.

  • Тип: String
  • По умолчанию: отсутствует
  • Допустимые значения: 100-continue
  • Ограничения: отсутствует
Нет
Cache-Control

Может использоваться для указания поведения кеширования по отношению к цепочке запросов/ответов. Для получения дополнительной информации смотрите http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: отсутствует


Нет
Content-Disposition 

Указывает представляемую информацию для объекта. Для получения дополнительной информации смотрите http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1.


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: отсутствует


Нет
Content-Encoding

Указывает на используемые кодировки содержимого на объекте и, следовательно, на то, какие механизмы декодирования должны быть использованы для получения типа содержимого media-type, на который ссылается поле заголовка Content-Type. Для получения дополнительной информации смотрите http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11.

  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: отсутствует


Нет
Expires 

Дата и время окончания возможности кеширования объекта. Для получения дополнительной информации смотрите http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21.

  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: отсутствует
Нет

Заголовки запросов списка контроля доступа (ACL)

С этой операцией вы можете дополнительно использовать следующие заголовки, связанные с управлением доступом. По умолчанию все объекты являются частными: только владелец имеет полный доступ. При добавлении нового объекта вы можете предоставлять разрешения отдельным учетным записям Cloud Storage или предопределенным группам. Эти разрешения затем используются для создания списка контроля доступа (ACL) для объекта.

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

1. Указание связанного ACL. Сервис поддерживает набор связанного ACL. Каждый связанный ACL имеет предопределенный набор получателей и разрешений.

 

Имя
Описание
Обязательно
x-amz-acl

Предопределенный ACL, применяемый к объекту. 

  • Тип: String
  • По умолчанию: private
  • Допустимые значения: private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control
  • Ограничения: отсутствует
Нет

2. Явное указание прав доступа. Если вы хотите явно предоставить разрешения доступа определенным проектам Cloud Storage, используйте следующие заголовки. Каждый из следующих заголовков сопоставляется с определенными правами, которые сервис поддерживает в ACL. В значении заголовка вы указываете список получателей конкретного права.


Имя
Описание
Обязательно
x-amz-grant-read

Позволяет получателю читать данные и метаданные объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-write

Не применяется для объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-read-acp

Позволяет получателю читать права, установленные на объекте.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-write-acp

Позволяет получателю устанавливать права на объект.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-full-control

Предоставляет получателю права READ, READ_ACP и WRITE_ACP для объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет

Вы указываете каждого получателя в виде пары тип = значение, где тип может быть одним из следующих:

  • emailAddress — если указанное значение является адресом электронной почты проекта Cloud Storage (домен для нас).
  • id — если указанное значение является каноническим идентификатором пользователя проекта Cloud Storage
  • uri — при предоставлении прав предопределенной группе

Например, следующий заголовок x-amz-grant-read предоставляет право на чтение данных и метаданных объекта для проекта Cloud Storage, идентифицированных по адресам электронной почты.

  x-amz-grant-read: emailAddress="first.bizml.ru", emailAddress="second.bizml.ru"

Ответы

Элементы ответа

Эта реализация операции не возвращает элементы ответа.

Примеры

Пример 1

Следующий запрос создает объект «file1.bin».

Запрос

 PUT /file1.bin HTTP/1.1
 Authorization: authorization string
 Connection: close
 Content-Length: 11
 Content-Type: text/html
 Date: Wed, 15 Mar 2017 12:03:40 GMT
 Host: BucketName.hb.bizmrg.com
 <а>text</a>

Ответ

 HTTP/1.1 200 OK
 Server: nginx/1.10.2
 Date: Wed, 15 Mar 2017 12:03:40 GMT
 Content-Type: text/html; charset=utf-8
 Content-Length: 0
 Connection: close
 Etag: "2ebce3f815d7787101ebedec92d70392"
 X-req-id: wBnhGHy2K8
 Content-md5: 2ebce3f815d7787101ebedec92d70392

Пример 2

Запрос, использующий связанный acl для установки прав. Данный запрос сохраняет файл TestObject.txt в контейнере myBucket. Запрос использует заголовок x-amz-acl для установки связанного Acl,  устанавливающего право READ для всех.

Запрос

 PUT TestObject.txt HTTP/1.1
 Host: myBucket.hb.bizmrg.com
 x-amz-date: Fri, 13 Apr 2012 05:54:57 GMT
 x-amz-acl: public-read
 Authorization: authorization string
 Content-Length: 300
 Expect: 100-continue
 Connection: Keep-Alive

 ...Object data in the body..

Ответ

 HTTP/1.1 200 OK
 x-amz-request-id: 80DF413BB3D28A25
 Date: Fri, 13 Apr 2012 05:54:59 GMT
 ETag: "dd038b344cf9553547f8b395a814b274"
 Content-Length: 0
 Server: AmazonS3

PUT Object — Copy

Описание

Эта реализация операции PUT создает копию объекта, который уже хранится в сервисе. Операция копирования PUT идентична последовательному выполнению GET и PUT. Добавление заголовка запроса, x-amz-copy-source, приводит к тому, что операция PUT копирует исходный объект в целевой контейнер.

При копировании объекта вы можете сохранить большую часть метаданных (по умолчанию) или указать новые метаданные. (Для записи новых метаданных при копировании объекта необходимо включить в запрос заголовок x-amz-metadata-directive → REPLACE). Однако ACL не сохраняется и для пользователя, отправляющего запрос, настроен как частный.

Все запросы на копирование должны пройти проверку подлинности и не могут содержать текст сообщения. Кроме того, у вас должен быть доступ READ к исходному объекту и доступ WRITE к целевому контейнеру. 

Запрос на копирование может вернуть ошибку в двух случаях. Это может произойти, когда сервис получает запрос на копирование, либо когда сервис копирует файлы. Если ошибка возникает до начала операции копирования, вы получите стандартную ошибку сервиса. Если ошибка возникает во время операции копирования, ошибка будет встроена в ответ 200 OK. Это означает, что ответ 200 OK может содержать сообщение как об успехе, так и об ошибке. Разрабатывая приложение, убедитесь, что оно анализирует содержимое ответа и обрабатывает его надлежащим образом.

Если копирование успешно, вы получите ответ, содержащий информацию о скопированном объекте.

Права доступа

При копировании объекта вы можете дополнительно указать учетные записи или глобальные группы, которым должны быть предоставлены права для нового объекта. Существует два способа предоставлять права, используя заголовки запросов:

Укажите связанный ACL с помощью заголовка запроса x-amz-acl.

Укажите разрешения доступа явным образом с помощью заголовков x-amz-grant-read, x-amz-grant-read-acp,x-amz-grant-write-acp и x-amz-grant-full-control. Эти заголовки сопоставляются с набором прав, поддерживаемых сервисом в ACL.

Вы можете либо использовать предопределенный ACL, либо явно указать права доступа. Нельзя использовать оба способа.

Запросы

Синтаксис

 PUT /destinationObject HTTP/1.1
 Host: destinationBucket.hb.bizmrg.com
 x-amz-copy-source: /source_bucket/sourceObject
 Authorization: authorization string
 Date: date

Синтаксис показывает только некоторые заголовки запросов. Для получение полного списка возможных заголовков запросов для данного метода смотрите «Типовые заголовки запросов».

Параметры запроса

Эта реализация операции не использует параметры запроса.

Заголовки запроса

В дополнение к заголовкам запроса, общим для всех операций, эта реализация операции может использовать следующие заголовки запросов. Заголовки запросов ограничены 8 КБ.


Имя
Описание
Обязательно
x-amz-copy-source

Имя исходного контейнера и имя ключа исходного объекта, разделенные косой чертой (/).

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: Эта строка должна быть закодирована как URL. Кроме того, исходный контейнер должен быть действительным, и вы должны иметь READ-доступ к копируемому объекту.
Да

Заголовки запросов списка контроля доступа (ACL)

С этой операцией вы можете дополнительно использовать следующие заголовки, связанные с управлением доступом. По умолчанию все объекты являются частными. Только владелец имеет полный доступ. При добавлении нового объекта вы можете предоставлять разрешения отдельным учетным записям Cloud Storage или глобальным группам. Эти разрешения затем добавляются в список контроля доступа (ACL) объекта. Эта операция позволяет предоставить права доступа одним из двух способов:

1. Указание предопределенного ACL. Сервис поддерживает набор связанных ACL. Каждый связанный ACL имеет определенный набор получателей и разрешений. 

 

Имя
Описание
Обязательно
x-amz-acl

Предопределенный ACL, применяемый к объекту.

  • Тип: String
  • По умолчанию: private
  • Допустимые значения: private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control
  • Ограничения: отсутствует
Нет

2. Явное указание прав доступа. Если вы хотите явно предоставить разрешения доступа определенным учетным записям Cloud Storage или группам, вы можете использовать следующие заголовки. Каждый из этих заголовков сопоставляется с определенными разрешениями, которые сервис поддерживает в ACL. В заголовке вы указываете список получателей каждого конкретного разрешения.


Имя
Описание
Обязательно
x-amz-grant-read

Позволяет получателю читать данные и метаданные объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-write

Не применяется к объекту. 

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-read-acp

Позволяет получателю читать права, установленные на объекте

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-write-acp
Позволяет получателю устанавливать права на объект
  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-full-control

Предоставляет получателю разрешения READ, READ_ACP и WRITE_ACP для объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет

Вы указываете каждого получателя в виде пары тип = значение, где тип может быть одним из следующих:

  • EmailAddress — если указанное значение является адресом электронной почты проекта Cloud Storage
  • id — если указанное значение является каноническим идентификатором пользователя проекта Cloud Storage
  • uri — при предоставлении разрешения предопределенной группе

Например, следующий заголовок x-amz-grant-read предоставляет разрешение на чтение данных и метаданных объекта для проектов Cloud Storage, идентифицированных по адресам электронной почты. 

 x-amz-grant-read: emailAddress="first.bizml.ru", emailAddress="second.bizml.ru"

Элементы запроса

Эта реализация операции не использует элементы запроса.

Ответы

Элементы ответа 

Имя
Описание
CopyObjectResult

Контейнер для всех элементов ответа.

  • Тип: Container
  • Родительские объекты: отсутствует
ETag

Возвращает ETag нового объекта. ETag отражает только изменения содержимого объекта, но не его метаданных. Исходный и целевой ETag будут идентичными для успешно скопированного объекта.

  • Тип: String
  • Родительские объекты: CopyObjectResult
LastModified

Возвращает дату последнего изменения объекта.

  • Тип: String
  • Родительские объекты: CopyObjectResult


Пример

В данном примере копируется my-image.jpg в контейнер bucket c именем my-second-image.jpg.

Запрос

 PUT /my-second-image.jpg HTTP/1.1
 Host: bucket.hb.bizmrg.com
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 x-amz-copy-source: /bucket/my-image.jpg
 Authorization: authorization string

Ответ

 HTTP/1.1 200 OK
 x-amz-request-id: 318BC8BC148832E5
 x-amz-copy-source-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 Connection: close
 Server: AmazonS3
<CopyObjectResult>
  <LastModified>2009-10-28T22:32:00</LastModified>
  <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyObjectResult>



PUT Object ACL

Описание

Эта реализация операции PUT использует субресурс ACL для установки списка управления доступом (ACL) для объекта, который уже существует в контейнере. У вас должно быть разрешение WRITE_ACP для установки прав доступа на объект.

Установить разрешения на объект можно двумя способами:

  • указание ACL в тексте запроса;
  • указание разрешения с помощью заголовков запросов.

В зависимости от потребностей вашего приложения вы можете установить ACL для объекта, используя текст запроса или заголовки. Например, если у вас есть существующее приложение, которое обновляет права доступа объекта с помощью текста запроса, вы можете продолжать использовать этот способ.

Подробнее об ACL читайте в статье «Списки управления доступом (ACL)».

Запросы

Синтаксис

Следующий запрос показывает синтаксис отправки ACL в тексте запроса. Если вы хотите использовать заголовки для установления прав на объект, вы не можете отправить ACL в тексте запроса. Вместо этого см. список заголовков, которые вы можете использовать, в разделе «Заголовки запросов».

 PUT /ObjectName?acl HTTP/1.1
 Host: BucketName.hb.bizmrg.com
 Date: date
 Authorization: authorization string

<AccessControlPolicy>
<Owner>
<ID>ID</ID>
<DisplayName>EmailAddress</DisplayName>
 </Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>ID</ID>
<DisplayName>EmailAddress</DisplayName>
</Grantee>
  <Permission>Permission</Permission>
</Grant>
...
</AccessControlList>
</AccessControlPolicy>

Синтаксис показывает некоторые заголовки запросов.

Параметры запроса

Эта реализация операции не использует параметры запроса.

Заголовки запроса

Вы можете использовать следующие заголовки запросов в дополнение к общим заголовкам запроса.

Заголовки запросов списка контроля доступа (ACL)

Эти заголовки позволяют устанавливать разрешения одним из следующих способов:

  • указание предопределенного ACL;
  • указание разрешений для каждого получателя явным образом;

Сервис поддерживает набор предопределенных списков ACL Каждый связанный ACL имеет определенный набор получателей и прав. Чтобы предоставить права, указав связанный ACL, используйте следующий заголовок и укажите имя связанного ACL в качестве его значения. Если вы используете этот заголовок, вы не можете использовать в вашем запросе другие заголовки, относящиеся к управлению доступом.

 

Имя
Описание
Обязательно
x-amz-acl

Связанный ACL, применяемый к объекту. 

  • Тип: String
  • По умолчанию: private
  • Допустимые значения: private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control
  • Ограничения: отсутствует


Нет

Если вам необходимо предоставить индивидуальные права доступа к объекту, вы можете использовать следующие заголовки x-amz-grant-permission. При использовании этих заголовков вы указываете явные права и получателей (проекты Cloud Storage или глобальные  группы), которые получат права. Если вы используете эти заголовки ACL, вы не можете использовать заголовок x-amz-acl для установки связанного ACL.

Каждый из следующих заголовков запросов сопоставляется с конкретными разрешениями, которые сервис поддерживает в ACL.

 

Имя
Описание
Обязательно
x-amz-grant-read

Позволяет получателю читать данные и метаданные объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-write

Не применяется для объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-read-acp

Позволяет получателю читать права, установленные на объекте.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-write-acp

Позволяет получателю устанавливать права на объект.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет
x-amz-grant-full-control

Предоставляет получателю права READ, READ_ACP и WRITE_ACP для объекта.

  • Тип: String
  • По умолчанию: отсутствует
  • Ограничения: отсутствует
Нет

Вы указываете каждого получателя в виде пары тип = значение, где тип может быть одним из следующих:

  • emailAddress — если указанное значение является адресом электронной почты проекта Cloud Storage (домен для нас)
  • id — если указанное значение является каноническим идентификатором пользователя проекта Cloud Storage
  • uri — при предоставлении разрешения предопределенной группе

Например, следующий заголовок x-amz-grant-read предоставляет право на чтение данных и метаданных объекта для проектов Cloud Storage, идентифицированных по адресам электронной почты.

 x-amz-grant-read: emailAddress="first.bizml.ru", emailAddress="second.bizml.ru"

Элементы запроса

Если вы решите использовать текст запроса для указания ACL, вы должны использовать следующие элементы.


Если вы используете текст запроса, вы не можете использовать заголовки запросов для установки ACL.

Имя
Описание
AccessControlList

Блок, содержащий список проектов и глобальных групп , которым предоставляются права, и список предоставляемых прав.

  • Тип: Container
  • Родительские объекты: AccessControlPolicy
AccessControlPolicy

Блок, содержащий информацию о проекте-владельце объекта, проектах или глобальных группах, которым права предоставляются, и о самих предоставляемых правах.

  • Тип: Container
  • Родительские объекты: отсутствует
DisplayName

Домен проекта.

  • Тип: String
  • Родительские объекты: AccessControlPolicy.Owner
Grant

Блок, содержащий информацию о проектe или глобальной  группe, которой предоставляются права и о соответствующие предоставляемые права.

  • Тип: Container
  • Родительские объекты: AccessControlPolicy.AccessControlList
Grantee

Информация о группе (URI) или о проекте (домен и идентификатор).

  • Тип: String
  • Родительские объекты: AccessControlPolicy.AccessControlList.Grant
ID

Идентификатор владельца контейнера или идентификатор получателя.

  • Тип: String
  • Родительские объекты: AccessControlPolicy.Owner или AccessControlPolicy.AccessControlList.Grant
Owner

Блок, содержащий информацию о проекте, владеющим объектом. (Информация включает домен и идентификатор проекта).

  • Тип: Container
  • Родительские объекты: AccessControlPolicy
Permission

Указывает право , предоставляемое проекту или глобальной группе (FULL_CONTROL, READ, WRITE, READ_ACP, WRITE_ACP)

  • Тип: String
  • Допустимые значения: FULL_CONTROL | WRITE | WRITE_ACP | READ | READ_ACP
  • Родительские объекты: AccessControlPolicy.AccessControlList.Grant


Идентификация учетной записи или глобальной группы, получающей права доступа

Вы можете определить учетную запись, которой хотите предоставить права доступа следующими способами:

  • С помощью идентификатора пользователя:
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="CanonicalUser">
<ID>ID</ID>
<DisplayName>GranteesEmail</DisplayName>
</Grantee>

DisplayName — имя домена (first.bizml.ru) опционально и игнорируется при запросе.

  • С помощью адреса электронной почты:
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="AmazonCustomerByEmail">
<EmailAddress>EmailAddress</EmailAddress>
</Grantee>

EmailAddress — имя домена (first.bizml.ru).

  • С помощью URI:
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI>
</Grantee>

Ответы

Элементы ответа

Эта операция не возвращает элементы ответа.

Примеры

Пример 1

Данный запрос устанавливает права доступа на существующий объект. Запрос определяет список прав доступа в теле запроса.

Запрос

 PUT /file?acl HTTP/1.1
 Authorization: authorization string
 Connection: close
 Content-Length: 427
 Date: Wed, 02 Aug 2017 09:53:14 GMT
 Host: example.hb.bizmrg.com
 X-amz-content-sha256: UNSIGNED-PAYLOAD
<?xml version="1.0" encoding="utf-8"?>
<AccessControlPolicy>
    <Owner>
        <DisplayName>example_prj@bizmrg.ru</DisplayName>
        <ID>423f843a-8c98-486e-a1ea-e15d1b2a63a1</ID>
    </Owner>
    <AccessControlList>
        <Grant>
            <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
                <URI>http://acs.amazonaws.com/groups/global/AuthenticatedUsers</URI>
            </Grantee>
            <Permission>READ</Permission>
        </Grant>
    </AccessControlList>
</AccessControlPolicy>

Ответ

 HTTP/1.1 200 OK
 Server: nginx/1.12.1
 Date: Wed, 02 Aug 2017 09:53:14 GMT
 Content-Type: text/html; charset=utf-8
 Content-Length: 0
 Connection: close
 X-req-id: k2TLbGW7

Пример 2

Установление прав доступа с использованием заголовков.

Запрос

 PUT /file?acl HTTP/1.1
 Authorization: authorization string
 Connection: close
 Date: Wed, 02 Aug 2017 09:53:14 GMT
 Host: example.hb.bizmrg.com
 X-amz-acl: authenticated-read
 X-amz-content-sha256: UNSIGNED-PAYLOAD

Ответ

 HTTP/1.1 200 OK
 Server: nginx/1.12.1
 Date: Wed, 02 Aug 2017 09:53:14 GMT
 Content-Type: text/html; charset=utf-8
 Content-Length: 0
 Connection: close
 X-req-id: 2zFCmb6nr

HEAD Object

Описание

Операция HEAD извлекает метаданные из объекта без возвращения самого объекта. Данная операция используется только в том случае, если вам нужны только метаданные объекта. Для того, чтобы воспользоваться операцией HEAD, вам необходимо обладать правами на чтение объекта (READ).

Для запроса операции HEAD указываются те же параметры, что и для операции GET для объекта. Ответ идентичен ответу GET, за исключением отсутствия тела ответа.

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

Разрешения

Для выполнения данной операции необходимо иметь разрешение s3:GetObject. Если запрашиваемый вами объект не существует, то возвращаемая сервисом ошибка зависит от того, есть ли у вас дополнительное разрешение s3:ListBucket.

  • Если у вас есть разрешение s3:ListBucket на бакете, то сервис возвращает ошибку — код состояния HTTP 404 («ключ отсутствует»).
  • Если у вас нет разрешения s3:ListBucket, то сервис возвращает ошибку — код состояния HTTP 403 («ошибка доступа»).

Запросы

Синтаксиc

 HEAD /ObjectName HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Authorization: authorization string
 Date: date

Параметры запроса

Данная реализация операции не использует параметры запроса.

Заголовки запроса

Данная реализация операции может использовать следующие заголовки запроса в дополнение к заголовкам запроса, свойственным всем операциям. Ограничение по размеру заголовков запроса — 8 КБ. Дополнительная информация находится в статье «Типовые заголовки запросов».


Имя
Описание
Обязательно
Range

Загружает указанный диапазон байтов объекта. Для получения дополнительной информации об HTTP-заголовке «Range» смотрите http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: нет


Нет
If-Modified-Since

Возвращает объект только в случае его изменения после указанного времени. В противном случае возвращается код 304 — «нет изменений» (см. примечание 2 под таблицей).


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: нет


Нет
If-Unmodified-Since

Возвращает объект только в случае отсутствия его изменения после указанного времени. В противном случае возвращается код 412 — «предусловие не соблюдено» (см. примечание 1 под таблицей).


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: нет


Нет
If-Match

Возвращает объект только если его тег сущности (Etag) совпадает с указанным. В противном случае возвращается код 412 — «предусловие не соблюдено» (см. примечание 1 под таблицей).


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: нет


Нет
If-None-Match

Возвращает объект только если его тег сущности (Etag) отличается от указанного. В противном случае возвращается код 304 — «нет изменений» (см. примечание 2 под таблицей).


  • Тип: String
  • По умолчанию: нет значения
  • Ограничения: нет


Нет

Примечание

Заголовки запросов на шифрование, такие как x-amz-server-side-encryption, для запросов GET отправлять не надо, если ваш объект использует шифрование на стороне сервера при помощи сервиса или службы управления ключами. Если ваш объект использует эти типы ключей, то вы получите код ошибки HTTP 400 («неверный запрос»).

Для предшествующих заголовков запроса необходимо учитывать следующие примечания.

  • Примечание 1

Если оба заголовка If-Match и If-Unmodified-Since присутствуют в запросе и при этом

условие If-Match выражено как true и

условие If-Unmodified-Since выражено как false, то

сервис возвращает код «200 OK» и запрашиваемые данные. Для получения дополнительной информации по условным запросам смотрите RFC 7232.

  • Примечание 2

Если оба заголовка If-None-Match и If-Modified-Since присутствуют в запросе и при этом

условие If-None-Match выражено как false и

условие If-Modified-Since выражено как true, то

сервис возвращает код ответа 304 («нет изменений»). Для получения дополнительной информации по условным запросам смотрите RFC 7232.

Заголовки запроса, характерные для шифрования на стороне сервера с помощью пользовательских ключей шифрования

При извлечении метаданных из объекта, хранимого сервисом и зашифрованного на стороне сервера с помощью пользовательских ключей шифрования, вы должны использовать следующие заголовки запроса. 


Имя
Описание
Обязательно
x-amz-server-side?-encryption?-customer-algorithm

Указывает алгоритм, используемый для расшифровки запрошенного объекта.


  • Тип: String
  • По умолчанию: нет значения
  • Допустимые значения: AES256


Ограничения: необходимо также указать допустимые заголовки x-amz-server-side-encryption-customer-key и x-amz-server-side-encryption-customer-key-MD5.

Да
x-amz-server-side?-encryption?-customer-key

Указывает зашифрованный алгоритмом Base64 пользовательский ключ шифрования для расшифровки запрошенного объекта. Данное значение используется для расшифровки, а затем оно отбрасывается — сервис не хранит ключ шифрования. Этот ключ должен быть подходящим для использования с алгоритмом, указанном в заголовке x-amz-server-side-encryption-customer-algorithm.


  • Тип: String
  • По умолчанию: нет значения
Ограничения: необходимо также указать допустимые заголовки x-amz-server-side-encryption-customer-algorithm и x-amz-server-side-encryption-customer-key-MD5.


Да
x-amz-server-side?-encryption?-customer-key-MD5

Указывает зашифрованную алгоритмом Base64 128-битную MD5-свертку пользовательского ключа шифрования согласно RFC 1321. Если этот заголовок включен в ваш запрос, то сервис использует данный заголовок для проверки целостности сообщения, чтобы удостовериться в том, что передача ключа шифрования была безошибочной.

  • Тип: String
  • По умолчанию: нет значения

Ограничения: необходимо также указать допустимые заголовки x-amz-server-side-encryption-customer-algorithm и x-amz-server-side-encryption-customer-key.

Нет

Элементы запроса

Данная реализация операции не использует элементы запроса.

Ответы

Заголовки ответа

Данная реализация операции может включать в себя следующие заголовки ответа в дополнение к заголовкам ответа, общим для всех ответов. Дополнительная информация находится в статье «Типовые заголовки ответов».


Имя
Описание
x-amz-expiration

Сервис вернет данный заголовок, если истечения срока Expiration настроено для объекта как часть конфигурации жизненного цикла бакета. Значение заголовка включает в себя компонент «expiry-date» и закодированный с помощью URL компонент «rule-id». Необходимо отметить, что для бакетов с контролем версий, данный заголовок применим только к текущим версиям — сервис не предоставляет заголовок для определения возможности перманентного удаления другой версии.

  • Тип: String
x-amz-meta-*

Заголовки, начинающиеся с этого префикса являются пользовательскими метаданными. Каждый из заголовков сохраняется и возвращается как набор пар ключ-значение. Сервис не осуществляет проверку и не интерпретирует пользовательские метаданные.

  • Тип: String
x-amz-missing-meta

Данный заголовок устанавливается на количество элементов метаданных, которые не были возвращены в заголовках x-amz-meta, что может произойти при создании метаданных с помощью такого API, как SOAP, который поддерживает более гибкие метаданные по сравнению с API REST. Например, с SOAP вы можете создавать метаданные со значениями, не являющимися допустимыми заголовками HTTP.

  • Тип: String
x-amz-replication-status

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

При межрегионной репликации у вас есть исходный бакет, на котором вы настраиваете дублирование, и бакет назначения, где сервис хранит копии объекта. При запросе объекта (операция GET) или метаданных объекта (операция HEAD) из этих бакетов, сервис возвращает заголовок x-amz-replication-status в ответе как указано ниже.

  • При запросе объекта из исходного бакета, сервис возвращает заголовок x-amz-replication-status в том случае, если ваш запрос доступен для репликации.

Например, вы указываете префикс объекта «TaxDocs» в конфигурации репликации, отправляя запрос сервису на создание копий объектов с префиксом ключа «TaxDocs». Затем все загружаемые вами объекты с этим префиксом имени ключа, например «TaxDocs/document1.pdf», становятся доступными для репликации. Для любого запроса объекта с этим префиксом имени ключа сервис будет возвращать заголовок x-amz-replication-status со значением PENDING («ожидание»), COMPLETED («завершено») или FAILED («ошибка»), обозначающим состояние объекта.

  • При запросе объекта из бакета назначения сервис возвращает заголовок x-amz-replication-status со значением REPLICA («копия») в том случае, если ваш запрос является созданной сервисом копией.
  • Допустимые значения: PENDING, COMPLETED, FAILED, REPLICA
  • Тип: String
x-amz-restore

Если объект является заархивированным (т. е. объектом с холодным классом хранения GLACIER), то ответ включает в себя данный заголовок при условии текущего выполнения восстановления архива или уже выполненного восстановления копии архива.

Если восстановление копии архива уже было произведено, то значение заголовка указывает на запланированную дату и время удаления копии объекта. Например: x-amz-restore: ongoing-request="false", expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"

Если восстановление объекта выполняется, то заголовок возвращает значение ongoing-request="true".

  • Тип: String
  • По умолчанию: нет значения
x-amz-server-side-encryption

Если объект хранится с шифрованием на серверной части при помощи ключа шифрования сервиса или службы управления ключами, то ответ содержит этот заголовок.

  • Тип: String
x-amz-server-side-encryption-aws-kms-key-id

Если элемент x-amz-server-side-encryption присутствует и при этом его значение равно значению aws:kmz, то данный заголовок указывает идентификатор главного ключа шифрования службы управления ключами, использованного для объекта.

  • Тип: String
x-amz-server-side-encryption-customer-algorithm

Если была запрошена расшифровка шифрования на стороне сервера с помощью пользовательских ключей шифрования, то ответ будет включать в себя данный заголовок, который подтверждает используемый алгоритм расшифровки.

  • Тип: String
  • Допустимые значения: AES256
x-amz-server-side-encryption-customer-key-MD5

Если была запрошена расшифровка шифрования на стороне сервера с помощью пользовательских ключей шифрования, то ответ включает в себя данный заголовок для предоставления проверки целостности кругового сообщения с пользовательским ключом шифрования.

  • Тип: String
x-amz-storage-class

Предоставляет информацию о классе хранения объекта. Сервис возвращает этот заголовок для всех объектов, кроме объектов класса хранения Standard.

  • Тип: String
  • По умолчанию: нет значения
x-amz-version-id

Идентификатор версии возвращаемого объекта.

  • Тип: String

Элементы ответов

Данная реализация операции не возвращает элементы ответов.

Примеры

Пример 1

Запрос

Нижеуказанный запрос возвращает метаданные объекта.

 HEAD /my-image.jpg HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 Authorization: authorization string

Ответ

 HTTP/1.1 200 OK
 x-amz-id-2: ef8yU9AS1ed4OpIszj7UDNEHGran
 x-amz-request-id: 318BC8BC143432E5
 x-amz-version-id: 3HL4kqtJlcpXroDTDmjVBH40Nrjfkd
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
 ETag: "fba9dede5f27731c9771645a39863328"
 Content-Length: 434234
 Content-Type: text/plain
 Connection: close
 Server: HbBizmrg

Если запланировано истечение срока объекта, согласно настройке жизненного цикла на бакете, то ответ возвращает тег x-amz-expiration с информацией о том, когда сервис удалит объект.

 HTTP/1.1 200 OK
 x-amz-id-2: azQRZtQJ2m1P8R+TIsG9h0VuC/DmiSJmjXUMq7snk+LKSJeurtmfzSlGhR46GzSJ
 x-amz-request-id: 0EFF61CCE3F24A26
 Date: Mon, 17 Dec 2012 02:26:39 GMT
 Last-Modified: Mon, 17 Dec 2012 02:14:10 GMT
 x-amz-expiration: expiry-date="Fri, 21 Dec 2012 00:00:00 GMT", rule-id="Rule for testfile.txt"
 ETag: "54b0c58c7ce9f2a8b551351102ee0938"
 Accept-Ranges: bytes 
 Content-Length: 14
 Content-Type: text/plain
 Server: HbBizmrg

Пример 2

Запрос

Следующий запрос возвращает метаданные указанной версии объекта.

 HEAD /my-image.jpg?versionId=3HL4kqCxf3vjVBH40Nrjfkd HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 Authorization: authorization string

Ответ

 HTTP/1.1 200 OK
 x-amz-id-2: eftixk72aD6Ap51TnqcoF8epIszj7UDNEHGran
 x-amz-request-id: 318BC8BC143432E5
 x-amz-version-id: 3HL4kqtJlcpXrof3vjVBH40Nrjfkd
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
 ETag: "fba9dede5f27731c9771645a39863328"
 Content-Length: 434234
 Content-Type: text/plain
 Connection: close
 Server: HbBizmrg

Пример 3. Для объекта из облака для холодных данных

Запрос

Для заархивированного объекта заголовок x-amz-restore указывает дату окончания срока хранения восстановленной копии, как это указано в примере ниже. Даже если объект хранится в облаке для холодных данных, все метаданные объекта остаются доступными.

 HEAD /my-image.jpg HTTP/1.1
 Host: BucketName.hb.bizmrg.com (BucketName.ib.bizmrg.com)
 Date: Wed, 28 Oct 2009 22:32:00 GMT
 Authorization: authorization string

Ответ

 HTTP/1.1 200 OK
 x-amz-id-2: FSVaTMjrmBp3Izs1NnwBZeu7M19iI8UbxMbi0A8AirHANJBo+hEftBuiESACOMJp
 x-amz-request-id: E5CEFCB143EB505A
 Date: Tue, 13 Nov 2012 00:28:38 GMT
 Last-Modified: Mon, 15 Oct 2012 21:58:07 GMT
 x-amz-restore: ongoing-request="false", expiry-date="Wed, 07 Nov 2012 00:00:00 GMT"
 ETag: "1accb31fcf202eba0c0f41fa2f09b4d7"
 Accept-Ranges: bytes
 Content-Type: binary/octet-stream
 Content-Length: 300 
 Server: HbBizmrg

OPTIONS Object

Описание

Браузер может отправлять предполетный запрос OPTIONS в сервис для определения возможности отправки фактического запроса вместе с указанным источником, методом HTTP и заголовками.

Сервис поддерживает технологию совместного использования ресурсов между разными источниками (CORS) при добавлении подресурса cors на бакет. Когда браузер отправляет данный предполетный запрос, сервис высылает ответ с осуществлением оценки правил, определяемых в конфигурации CORS.

Если технология CORS не разрешена на бакете, то сервис возвращает ответ «403 Forbidden».

Запросы

Синтаксис

 OPTIONS /ObjectName HTTP/1.1
 Host: BucketName.hb.bizmrg.com
 Origin: Origin
 Access-Control-Request-Method: HTTPMethod
 Access-Control-Request-Headers: RequestHeader

Параметры запроса

Данная операция не использует какие-либо новые параметры запроса, но она может содержать любые параметры запроса, которые являются обязательными для фактического запроса.

Заголовки запроса

Имя
 Описание
Обязательно
Origin

Определяет источник Cross-origin-запроса к сервису, например http://www.example.com.

  • Тип: String
  • По умолчанию: нет значения
Да
Access-Control-Request-Method

Определяет метод HTTP, используемый в фактическом запросе.

  • Тип: String
  • По умолчанию: нет значения
Да
Access-Control-Request-Headers

Разделенный запятой список заголовков HTTP для отправления в фактическом запросе.

Например, для того, чтобы выполнить операцию PUT для объекта с шифрованием на стороне сервера, данный предполетный запрос определит, сможет ли он включить в запрос заголовок x-amz-server-side-encryption.

  • Тип: String
  • По умолчанию: нет значения
Нет

Элементы запроса

Данная реализация операции не использует элементы запроса.

Ответы

Заголовки ответов

Заголовок
Описание
Access-Control-Allow-Origin

Источник, который вы отправили в запросе. Если использование этого источника не разрешено в вашем запросе, то сервис не включит этот заголовок в ответ.

  • Тип: String
Access-Control-Max-Age

Время в секундах, предоставляемое для кеширования результатов предполетного запроса.

  • Тип: String
Access-Control-Allow-Methods

Метод HTTP, отправленный в оригинальном запросе. Если использование этого метода в запросе не разрешено, то сервис не включит этот заголовок в ответ.

  • Тип: String
Access-Control-Allow-Headers

Разделенный запятой список заголовков HTTP, которые разрешено отправлять браузеру в фактическом запросе. Если использование любого из запрашиваемых заголовков не разрешено, то сервис не включит этот заголовок в ответ, а сам ответ не будет содержать каких-либо заголовков с префиксом Access-Conrol.

  • Тип: String
Access-Control-Expose-Headers

Разделенный запятой список заголовков HTTP. Данный заголовок предоставляет доступ клиенту JavaScript к этим заголовкам в ответ на фактический запрос.

  • Тип: String

Элементы ответов

Данная реализация операции не возвращает элементы ответов.

Примеры

Пример: отправление предполетного запроса OPTIONS в бакет с разрешенной технологией CORS.

Браузер может отправлять данный предполетный запрос в сервис для определения возможности отправки фактического запроса PUT из источника http://www.example.com в бакет examplebucket.

Запрос

 OPTIONS /exampleobject HTTP/1.1
 Host: examplebucket.hb.bizmrg.com 
 Origin: http://www.example.com
 Access-Control-Request-Method: PUT

Ответ

 HTTP/1.1 200 OK
 x-request-id: BDC4B83DF5096BBE
 Date: Wed, 21 Aug 2012 23:09:55 GMT
 Etag: "1f1a1af1f1111111111111c11aed1da1"
 Access-Control-Allow-Origin: http://www.example.com
 Access-Control-Allow-Methods: PUT
 Content-Length: 0
 Server: HbBizmrg