Документ не вступил в силу. Подробнее см. Справку

V. Описание протокола электронного обмена данными с использованием системы передачи данных на транспортном уровне

V. Описание протокола электронного обмена данными

с использованием системы передачи данных

на транспортном уровне

44. Взаимодействие систем передачи данных между собой и с внешними информационными системами осуществляется посредством API и API S3 с использованием протокола HTTP.

45. Для обеспечения совместимости способов обмена и форматов данных транспортного уровня необходимо обеспечивать соблюдение правил, определенных спецификацией RFC 2116.

46. HTTP-протокол (HyperText Transfer Protocol) - это протокол передачи данных, который определяет взаимодействие между 2 информационными системами, состоящее из обмена запросами (HTTP-Request) и ответами (HTTP-Response).

47. HTTP-запрос состоит из стартовой строки, HTTP-заголовка и тела сообщения.

48. HTTP-ответ состоит из кода состояния, HTTP-заголовка и тела ответного сообщения.

49. Стартовая строка должна содержать метод операции METHOD, адрес URI, который определяет путь к запрашиваемому ресурсу, и версию протокола VERSION. Формат стартовой строки:

METHOD URI HTTP/VERSION

Стартовая строка является обязательным элементом HTTP-запроса.

50. HTTP-заголовок - это набор пар имя-значение, разделенных двоеточием. В заголовках передается служебная информация. HTTP-заголовки должны соответствовать требованиям, которые определены стандартом RFC 822. HTTP-заголовки не являются обязательным элементом HTTP-запроса/ответа.

51. Тело сообщения - передаваемые данные, может содержать любые бинарные данные. Тело сообщения не является обязательным элементом HTTP-запроса/ответа.

52. Код состояния ответа определяет результат выполнения HTTP-запроса. Код состояния представляет собой трехзначное число в соответствии со стандартами RFC 2616 и является обязательным элементом HTTP-ответа.

53. Метод HTTP-запроса указывает на действие, которое требуется произвести с ресурсом. При электронном обмене данными интеграционными шлюзами между собой и с S3-хранилищем предполагается использование следующих методов:

GET - получение ресурса;

POST - передача данных или создание нового ресурса;

PUT - обновление данных или создание нового ресурса;

HEAD - получение информации о ресурсе без загрузки самого ресурса;

DELETE - удаление ресурса.

54. Для взаимодействия систем передачи данных между собой должны быть реализованы следующие методы:

а) передать сообщение - используется для передачи сообщения обмена данными от СПД отправителя в СПД получателя;

б) получить файл - используется системой передачи данных получателя для получения файла, связанного с сообщением;

в) передать подтверждение получения исходных данных - используется системой передачи данных получателя для подтверждения успешной загрузки исходных данных (всех связанных с сообщением файлов);

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

55. Для взаимодействия внешних информационных систем (информационных систем отправителя и получателя) с системой передачи данных в системе передачи данных должны быть реализованы следующие методы:

а) передать файл - используется информационная система отправителя для дальнейшего размещения передаваемых файлов в S3-хранилище;

б) передать сообщение - используется информационная система отправителя для передачи сообщения для обмена данными;

в) получить файл - используется информационная система получателя для получения файла, связанного с сообщением;

г) передать подтверждение получения исходных данных - используется информационная система получателя для подтверждения успешной загрузки исходных данных (всех связанных с сообщением файлов);

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

56. Результатом выполнения запросов должен быть HTTP-ответ, состоящий из кода состояния, заголовков ответа и тела ответного сообщения.

Код состояния ответа определяет результат выполнения HTTP-запроса. Код состояния представляет собой трехзначное число в соответствии со стандартом RFC 2616 и является обязательным элементом HTTP-ответа.

При успешном выполнении запроса сервисами системы передачи данных должен быть передан ответ с кодом HTTP 2xx.

В случае возникновении ошибки при выполнении запроса должен быть передан ответ с кодом HTTP 4xx.

57. Реализация объектного хранилища должна поддерживать протокол S3 в соответствии со спецификацией Amazon S3 AWS.

58. Взаимодействие системы передачи данных с S3-совместимым объектным хранилищем осуществляется посредством API с использованием протокола HTTP и S3.

59. При взаимодействии с S3-хранилищем используется понятие "бакет" (от англ. bucket) - выделенная часть хранилища для пользовательских данных. Бакет является контейнером для хранения объектов данных.

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

60. В S3-хранилище необходимо создать 6 бакетов по 1 для каждого национального сегмента и сегмента Комиссии, между которыми будет выполняться информационное взаимодействие.

61. Для наименования бакетов необходимо использовать идентификаторы сегментов в нижнем регистре с префиксом "eaeu-" (перечень идентификаторов сегментов приведен в таблице 6 раздела IV Правил электронного обмена данными).

Пример наименования: eaeu-eec - бакет для размещения данных, передаваемых в интеграционный сегмент Комиссии.

62. Назначение прав доступа к бакетам необходимо осуществить в соответствии со следующей логикой:

а) при обращении к S3-хранилищу своего сегмента СПД имеет полный доступ (на чтение и запись) ко всем бакетам;

б) при обращении к S3-хранилищу смежного сегмента:

СПД запрашивающего сегмента имеет доступ только на чтение к бакету, наименование которого совпадает с идентификатором запрашивающего сегмента;

СПД запрашивающего сегмента не имеет доступа (доступ запрещен) к бакетам, наименование которых не совпадает с идентификатором запрашивающего сегмента.

63. При размещении объектов (связанных с сообщением файлов) в S3-хранилище данные объекты следует размещать в бакете, наименование которого указывает на идентификатор сегмента - получателя сообщения.

64. Для взаимодействия информационных систем с S3-хранилищем должны использоваться следующие методы:

а) передать файл - используется для размещения в S3-хранилище файла, связанного с сообщением;

б) получить объект - используется для скачивания из S3-хранилища файла, связанного с сообщением;

в) получить метаданные объекта - используется для проверки наличия файла в S3-хранилище и контроля целостности файла (без получения самого файла);

г) удалить объекты - используется для удаления из S3-хранилища нескольких объектов (файлов, связанных с сообщением).

65. Для осуществления контроля целостности передаваемого объекта с использованием алгоритма SHA-256 в запросе на передачу файла в S3-хранилище необходимо использовать заголовок x-amz-checksum-sha256. Данный заголовок должен содержать хеш-сумму SHA-256 передаваемого файла, закодированную в base64.

66. При успешном выполнении запроса на передачу файла, получение объекта или метаданных объекта, удаление объекта должен быть передан ответ с кодом HTTP 200 и дополнительными параметрами:

Content-Length - длина контента, содержит размер исходного сообщения в 8-битных байтах;

x-amz-checksum-sha256 - хеш-сумма SHA-256 исходного сообщения, закодированная в Base64. Предназначена для проверки целостности. Данный заголовок будет присутствовать в ответе только в том случае, если хеш-сумма была загружена вместе с объектом.

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

400 - некорректный запрос;

403 - доступ к файлу запрещен;

404 - исходный файл не найден;

416 - диапазон не достижим.

Кроме кода ошибки должен быть возвращен элемент Error, описанный в таблице 2.

Таблица 2

Структура элемента Error

Элемент

Тип данных

Описание

Кратность

Error

оборачивающий элемент

1

Code

string

код ошибки

1

Message

string

текстовое описание ошибки

1

RequestId

string

идентификатор запроса

1

Resource

string

Идентификатор запрашиваемого ресурса (бакет и идентификатор объекта)

1

68. Описание HTTP-методов, URL-запросов и параметров запроса приведено в таблице 3.

Таблица 3

Описание API и API S3, используемых системой передачи данных

Наименование запроса

URL запроса

Входные параметры

Передать сообщение

spd::sendMessage: POST/gate/v1/message

отсутствуют

Передать подтверждение получения исходных данных

spd::acceptMessage PUT/gate/v1/message/{messageID}/accept

messageID - идентификатор сообщения, для которого получены исходные данные (связанные с сообщением файлы, при их наличии)

Передать ошибку получения исходного сообщения

spd::rejectMessage: PUT/gate/v1/message/{messageID}/reject

messageID - идентификатор сообщения, для которого не удалось получить исходные данные

Передать файл

s3::putObject: PUT/{segment}/{fileID}

segment - буквенный код сегмента, в который необходимо будет передать сообщение и связанный с ним файл;

fileID - уникальный идентификатор передаваемого файла

Получить файл

s3::getObject: GET/{segment}/{fileID}

segment - буквенный код сегмента, запрашивающего файл (сегмент получателя);

fileID - идентификатор запрашиваемого объекта в хранилище (файла, связанного с сообщением)

Получить метаданные объекта

s3::HeadObject: HEAD/{bucket}/{objectID}

bucket - наименование бакета, в котором размещен объект, чьи метаданные запрашиваются;

objectID - идентификатор запрашиваемого объекта в хранилище

Удалить объект

s3::deleteObject: DELETE/{bucket}/{objectID}

bucket - наименование бакета, в котором размещен объект, предназначенный для удаления;

objectID - идентификатор объекта в хранилище