亚马逊 AWS 机器学习 HTTP 请求
Amazon AWS Machine Learning HTTP request
我已经创建了具有工作实时端点的 AWS 机器学习模型。我想通过 HTTP 请求使用创建的服务。出于测试目的,我正在使用 Postman,我根据亚马逊的 API 文档创建了请求,但每次我都遇到相同的异常: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"
}
请检查以下内容 link 并验证您的 sigv4
http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html
在 AWS 论坛上进行研究后,我发现了一些类似的 HTTP 请求。原来我有 3 个不正确的参数。
- 主机地址应为:
Host: machinelearning.us-east-1.amazonaws.com
- 内容类型:
Content-Type: application/x-amz-json-1.1
- 在凭据参数中,目标服务必须指定为
machinelearning
关于如何设置 Postman 请求的简短说明:
在Authorization
选项卡中选择AWS Signature
并填写AccessKey
和SecrectKey
。在 Service Name
字段中写入 machinelearning
。单击 Update Request
,这将更新您的 header。
在 Headers
选项卡中添加两个 header:
键:X-Amz-Target
,值:AmazonML_20141212.GetMLModel
键:Content-Type
,值:application/x-amz-json-1.1
添加body:
{ "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
}
我已经创建了具有工作实时端点的 AWS 机器学习模型。我想通过 HTTP 请求使用创建的服务。出于测试目的,我正在使用 Postman,我根据亚马逊的 API 文档创建了请求,但每次我都遇到相同的异常: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"
}
请检查以下内容 link 并验证您的 sigv4
http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html
在 AWS 论坛上进行研究后,我发现了一些类似的 HTTP 请求。原来我有 3 个不正确的参数。
- 主机地址应为:
Host: machinelearning.us-east-1.amazonaws.com
- 内容类型:
Content-Type: application/x-amz-json-1.1
- 在凭据参数中,目标服务必须指定为
machinelearning
关于如何设置 Postman 请求的简短说明:
在
Authorization
选项卡中选择AWS Signature
并填写AccessKey
和SecrectKey
。在Service Name
字段中写入machinelearning
。单击Update Request
,这将更新您的 header。在
Headers
选项卡中添加两个 header:键:
X-Amz-Target
,值:AmazonML_20141212.GetMLModel
键:
Content-Type
,值:application/x-amz-json-1.1
添加body:
{ "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
}