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 неверных параметра.
- Адрес хоста должен быть:
Host: machinelearning.us-east-1.amazonaws.com
- Тип содержимого:
Content-Type: application/x-amz-json-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
}
Пожалуйста, проверьте следующую ссылку и подтвердите ваш sigv4
http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html