HTTP-запрос машинного обучения Amazon AWS

Я создал модель машинного обучения AWS с рабочей конечной точкой в ​​реальном времени. Я хочу использовать созданный сервис через HTTP-запрос. Для тестирования я использую Postman, я создал запрос в соответствии с документацией API Amazon, но каждый раз получаю одно и то же исключение: UnknownOperationException, Пока я использую Python SDK, сервис работает нормально. Ниже приведен пример, который получает информацию о модели.

Это мой запрос (поддельные учетные данные):

POST  HTTP/1.1
Host: realtime.machinelearning.us-east-1.amazonaws.com
Content-Type: application/json
X-Amz-Target: AmazonML_20141212.GetMLModel
X-Amz-Date: 20170714T124250Z
Authorization: AWS4-HMAC-SHA256 Credential=JNALSFNLANFAFS/20170714/us-east-1/AmazonML/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date;x-amz-target, Signature=fiudsf9sdfh9sdhfsd9hfsdkfdsiufhdsfoidshfodsh
Cache-Control: no-cache
Postman-Token: hd9sfh9s-idsfuuf-a32c-31ca-dsufhdso

{
   "MLModelId": "ml-Hfdlfjdof0807",
   "Verbose": true
}

Исключение я получаю:

{
    "Output": {
        "__type": "com.amazon.coral.service#UnknownOperationException",
        "message": null
    },
    "Version": "1.0"
}

2 ответа

Решение

Проведя исследование на форуме AWS, я нашел несколько похожих HTTP-запросов. Оказывается, у меня было 3 неверных параметра.

  1. Адрес хоста должен быть:

Host: machinelearning.us-east-1.amazonaws.com

  1. Тип содержимого:

Content-Type: application/x-amz-json-1.1

  1. В параметрах учетных данных целевой сервис должен быть указан как machinelearning

Краткая инструкция по настройке запроса Почтальона:

  1. В Authorization выберите вкладку AWS Signature и заполните AccessKey а также SecrectKey, В Service Name поле записи machinelearning, Нажмите Update Request, это обновит ваш заголовок.

  2. В Headers На вкладке добавить два заголовка:

    Ключ: X-Amz-Target, Значение: AmazonML_20141212.GetMLModel

    Ключ: Content-Type, Значение: application/x-amz-json-1.1

  3. Добавить тело:

{ "MLModelId": "YOUR_ML_MODEL_ID", "Verbose": true }


Правильный HTTP-запрос ниже:

POST  HTTP/1.1
Host: machinelearning.us-east-1.amazonaws.com
X-Amz-Target: AmazonML_20141212.GetMLModel
Content-Type: application/x-amz-json-1.1
X-Amz-Date: 20170727T113217Z
Authorization: AWS4-HMAC-SHA256 Credential=JNALNFAFS/20170727/us-east-1/machinelearning/aws4_request, 
SignedHeaders=content-length;content-type;host;x-amz-date;x-amz-target, 
Signature=fiudsf9sdfh9sdhfsd9hfsdkfdsiufhdsfoidshfodsh
Cache-Control: no-cache
Postman-Token: hd9sfh9s-idsfuuf-a32c-31ca-dsufhdso

{
   "MLModelId": "ml-Hfdlfjdof0807",
   "Verbose": true
}

Пожалуйста, проверьте следующую ссылку и подтвердите ваш sigv4

http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

Другие вопросы по тегам