Сервис хранения объектов Object Storage Service (OSS)
О сервисе
API Сервиса хранения объектов предоставляет простой, быстрый и безопасный способ для хранения и доступа к объектам в Autodesk Cloud. Все обращения к OSS зачищены при помощи технологии OAuth 2.0.
Для выгрузки объектов с помощью OSS сначала нужно создать так называемый bucket – некий блок, изолированный участок памяти в сервисе OSS, в котором в дальнейшем будет хранится объект. Таким образом, ваши данные будут находится в безопасности и будут хранится отдельно от данных других пользователей.
OSS Bucket and Object API v1.0
API предназначено для создания bucket. Bucket – это случайная область, созданная сервисом. Ключи доступа к bucket являются уникальными в пределах дата-центра или региона, в котором они были созданы. Сервис, с помощью которого создается bucket является также и его владельцем и имеет полный доступ к нему. Ключ доступа к bucket не может быть изменен после создания.
Каждый bucket имеет политику хранения состояния, которая задается при его создании.
Существуют следующие типы политик:
Кратковременная (Transient)
Следует рассматривать как кэш. Используется для объектов, которые являются частью постоянных моделей, но которые не требуется долго хранить. Каждая выгрузка объекта рассматривается как уникальная. Т.е. если один и тот же объект бы выгружен несколько раз, то каждый из этих объектов будет доступен только 24 часа. Для данного типа хранения не предусмотрена архивация.
- Доступность – 24 часа
- Архивируемый – нет
- Возможность отката – нет.
Временная (Temprary)
Временные объекты живут дольше, чем кратковременные – 30 дней. После 30 дней объект удаляется. Это позволяет экономить деньги за пользование сервисом.
- Доступность – 30 дней
- Архивируемый – нет
- Возможность отката – нет.
Постоянная (Persistent)
Предназначен для хранения пользовательских данных. С того момента, как файл был загружен, предполагается, что он будет доступен пока пока он не будет удален владельцем, загрузившего файл. OSS также имеет право архивировать объекты, находящееся в bucket, но к которым не было доступа 2 года. Такие объекты автоматически архивируются. Приложения, работающие с постоянными bucket должны уметь обрабатывать ситуацию, когда объект заархивирован.
- Доступность – пока не будет удален
- Архивируемый – да
- Возможность отката – да
POST
/oss/{apiversion}/buckets
Пример запроса
- POST /oss/v1/buckets HTTP/1.1
- Content-Type: application/json
- {
- "bucketKey" : "afs_my_us",
- "policy" : "transient"
- }
Пример ответа:
- HTTP/1.1 200 OK
- Content-Type: application/json
- {
- "key" : "afs_my_us",
- "owner" : "zzzzzz",
- "createdDate: 1391706238,
- "permissions : [
- { "serviceId" : "zzzzzz", "access" : "full" }
- ],
- "policy" : "transient"
- }
Пример ответа с ошибкой:
- HTTP/1.1 409 CONFLICT
- Content-Type: application/json
- {
- "reason": "Bucket already exists"
- }
Параметры:
- apiversion – обязательный. В данный момент должен иметь значение v1
Заголовки запроса
- Content-Type – должен иметь значение application/json
- Authorization – токен авторизации OAuth 2.0
Параметры запроса:
- bucketKey – обязательный. Идентификатор bucket, к которому требуется получить доступ. Значение должно удовлетворять регулярному выражению “^[-_.a-z0-9]{3,128}”, т.е. имеет длину от 3 до 128 символов и содержать только латинские символы в нижнем регистре, цифры и знак подчеркивания.
- Policy – обязательный. Политика хранение объекта. Может принимать значения transient, temporary и persistent
Обратите внимание, в текущей версии API также нужно отправлять пустой json-объект в теле запроса.
Статусы:
- 200 – OK.
- 400 – не верный запрос. Сервер не может понять, что за запрос ему пришел. Не следует в этом случае отправлять повторный запрос, без его модификации.
- 401 – токен авторизации не валидный. Необходимо заново авторизоваться.
- 403 - авторизация пройдена, но доступа к данному методу или объекту пользователь не имеет.
- 409 – bucket не существует
- 500 – Внутренняя ошибка сервера. На сервере произошла непредвиденная ошибка.
API для получения деталей bucket
API возвращает подробную информацию о bucket в виде json, если у пользователя, вызвавшего метод, есть на это соответствующие права. В противном случае, возвращается ошибка 403.
GET
/oss/{api version}/buckets/{bucket key}/details
Пример запроса:
- GET /oss/v1/buckets/afs_my_us/details HTTP/1.1
Пример ответа:
- HTTP/1.1 200 OK
- Content-Type: application/json
- {
- "key" : "afs_my_us",
- "owner" : "zzzzzz",
- "createdDate" : 1391706238,
- "servicesAllowed" : [
- { "serviceId" : "zzzzzz", "access" : "full" }
- ],
- "policy" : "transient"
- }
Параметры:
- apiversion – обязательный. В данный момент должен иметь значение v1
- bucketKey – обязательный. Bucket, для которого мы хотим получить информацию
Заголовки запроса
- Authorization – токен авторизации OAuth 2.0
Статусы:
- 200 – OK.
- 400 – не верный запрос. Сервер не может понять, что за запрос ему пришел. Не следует в этом случае отправлять повторный запрос, без его модификации.
- 401 – токен авторизации не валидный. Необходимо заново авторизоваться.
- 403 - авторизация пройдена, но доступа к данному методу пользователь не имеет.
- 404 – bucket не существует
- 500 – Внутренняя ошибка сервера. На сервере произошла непредвиденная ошибка.
API для получения деталей объекта
API возвращает подробную информацию об объекте в виде json, если у пользователя, вызвавшего метод, есть на это соответствующие права. В противном случае, возвращается ошибка 403.
GET
/oss/{apiversion}/buckets/{bucket key}/objects/{object Key}/details
Пример запроса:
- GET /oss/v1/buckets/localbucket/objects/obj3/details HTTP/1.1
Пример ответа:
- HTTP/1.1 200 OK
- Content-Type: application/json
- {
- "bucket-key" : "localbucket",
- "objects" : [ {
- "key" : "obj3",
- "sha-1" : "09a98ac2d6698e1c36092d267540dc4cc53ad132",
- "size" : 12,
- "content-type" : "text/plain",
- "location" : "{download url}/oss/v1/buckets/localbucket/objects/obj3"
- } ]
- }
Параметры:
- apiversion – обязательный. В данный момент должен иметь значение v1
- bucketKey – обязательный. Bucket, в который бы загружен объект
- objectKey – объект, для которого необходимо получить информацию
Заголовки запроса
- Authorization – токен авторизации OAuth 2.0
Статусы:
- 200 – OK.
- 400 – не верный запрос. Сервер не может понять, что за запрос ему пришел. Не следует в этом случае отправлять повторный запрос, без его модификации.
- 401 – токен авторизации не валидный. Необходимо заново авторизоваться.
- 403 - авторизация пройдена, но доступа к данному методу или объекту пользователь не имеет.
- 404 – bucket не существует
- 500 – Внутренняя ошибка сервера. На сервере произошла непредвиденная ошибка.
Источник: https://developer.autodesk.com/api/view-and-data-api/#object-storage-service-oss
Обсуждение: http://adn-cis.org/forum/index.php?topic=2893
Опубликовано 01.08.2015