操作 DefineImageAttribute 对此 Web 服务无效

Adi*_*han 4 amazon-ec2 amazon-web-services

我正在尝试获取我的 AWS AMI 的产品代码,根据http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImageAttribute.html,我生成了请求并触发了它。我得到了这个回应。

<Response>
<Errors>
<Error>
<Code>InvalidAction</Code>
<Message>
The action DescribeImageAttribute is not valid for this web service.
</Message>
</Error>
</Errors>
<RequestID>b17b3f04-f7e6-47c7-a379-cb3d9a902865</RequestID>
</Response>
Run Code Online (Sandbox Code Playgroud)

生成的 URL 为:https://ec2.amazonaws.com/?AWSAccessKeyId=MYKEY&Action=DescribeImageAttribute&Attribute=productCodes&ImageId=ami-823919e7&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-08-10T07%3A39%3A47Z&Signature=MY_SIGNATURE

Mic*_*bot 5

您的请求似乎缺少一个Version属性,因此该服务显然假设您是一些非常古老的代码,只知道 EC2 API 的非常旧版本,因此它将请求传递给旧的请求处理程序,该处理程序不知道什么您正在询问,并以错误响应。

您需要&Version=2016-11-15在签署请求之前查询2016-11-15当前 API 发布版本,显示在 API 参考手册中每个页面的顶部。每个 AWS 服务的日期都不同。

这是 AWS 设法避免在 API 级别造成破坏的一种方法。请求和响应中不兼容的更改将部署为新的 API 版本,因此旧代码不会失败。