ADN Open CIS
Сообщество программистов Autodesk в СНГ

01/08/2015

Сервис хранения объектов 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

Пример запроса

Код: [Выделить]
  1. POST /oss/v1/buckets HTTP/1.1
  2. Content-Type: application/json
  3. {
  4. "bucketKey" : "afs_my_us",
  5. "policy" : "transient"
  6. }

Пример ответа:

Код: [Выделить]
  1. HTTP/1.1 200 OK
  2. Content-Type: application/json
  3.   {
  4.       "key" : "afs_my_us",
  5.   "owner" : "zzzzzz",
  6.   "createdDate: 1391706238,
  7.   "permissions : [
  8.          { "serviceId" : "zzzzzz", "access" : "full" }
  9.   ],
  10.   "policy" : "transient"
  11.   }

Пример ответа с ошибкой:

Код: [Выделить]
  1. HTTP/1.1 409 CONFLICT
  2. Content-Type: application/json
  3.   {
  4.     "reason": "Bucket already exists"
  5.   }

 

Параметры:

  • 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

Пример запроса:

Код: [Выделить]
  1. GET /oss/v1/buckets/afs_my_us/details HTTP/1.1

Пример ответа:

Код: [Выделить]
  1. HTTP/1.1 200 OK
  2. Content-Type: application/json
  3.  {
  4.    "key" : "afs_my_us",
  5.    "owner" : "zzzzzz",
  6.    "createdDate" : 1391706238,
  7.    "servicesAllowed" : [
  8.         { "serviceId" : "zzzzzz", "access" : "full" }
  9.    ],
  10.    "policy" : "transient"
  11.  }

Параметры:

  • 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

Пример запроса:

Код: [Выделить]
  1. GET /oss/v1/buckets/localbucket/objects/obj3/details HTTP/1.1

Пример ответа:

Код: [Выделить]
  1. HTTP/1.1 200 OK
  2. Content-Type: application/json
  3.    {
  4.      "bucket-key" : "localbucket",
  5.      "objects" : [ {
  6.        "key" : "obj3",
  7.        "sha-1" : "09a98ac2d6698e1c36092d267540dc4cc53ad132",
  8.        "size" : 12,
  9.        "content-type" : "text/plain",
  10.        "location" : "{download url}/oss/v1/buckets/localbucket/objects/obj3"
  11.      } ]
  12.    }

Параметры:

  • 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