Подтвердить что ты не робот

HTTP-запрос Amazon AWS Machine Learning

Я создал модель AWS Machine Learning с рабочей конечной точкой реального времени. Я хочу использовать созданный сервис через 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"
}
4b9b3361

Ответ 1

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

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

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

  1. Тип контента:

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

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

Краткая инструкция по настройке почтового запроса:

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

  • В вкладке Headers добавьте два заголовка:

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

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

  • Добавить тело:

{ "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
}