AWS API错误的操作DescribeRegions并不适用于该Web服务 [英] aws api error The action DescribeRegions is not valid for this web service
问题描述
我需要知道不同的AWS EC2地区 我知道AWS有命令行工具,这一点,但我想使用AWS API,因此 我产生下面的查询请求访问AWS EC2 API
i need to know different aws ec2 regions i know aws has command line tools for this but i want to use aws api so i generated following query request for accessing aws ec2 api
的https://ec2.amazonaws.com/?Action=DescribeRegions&AWSAccessKeyId=&Version=2013-02-01&Timestamp=2013-05-24T12%3A35%3A00Z&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature=xkw62EsVWEpc3rodXADy4Q3LOquKKfHmVHrrIIGQCg0=
https://ec2.amazonaws.com/?Action=DescribeRegions&AWSAccessKeyId=&Version=2013-02-01&Timestamp=2013-05-24T12%3A35%3A00Z&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature=xkw62EsVWEpc3rodXADy4Q3LOquKKfHmVHrrIIGQCg0=
为此,我得到了以下响应
for which i got the following response
<?xml version="1.0" encoding="UTF-8"?>
* Connection #0 to host ec2.amazonaws.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
<Response>
<Errors>
<Error>
<Code>InvalidAction</Code>
<Messaged >The action urn:Post is not valid for this web service.</Message>
</Error></Errors>
<RequestID>4a33917f-3403-4ebc-9a85-4b5393a031c6</RequestID>
</Response>
[1]完成卷曲-v -get --data-urlen code数据的https: //ec2.amazonaws.com/?action=DescribeRegions
[2]完成AWSAccessKeyId =
[2] Done AWSAccessKeyId=
[3]实现的版本= 2013年2月1日
[3] Done Version=2013-02-01
[4]就可以完成时间戳= 2013-05-24T12%3A35%3A00Z
[4] Done Timestamp=2013-05-24T12%3A35%3A00Z
[5] - 完成SignatureVersion = 2
[5]- Done SignatureVersion=2
[6] +完成=是SignatureMethod HmacSHA256
[6]+ Done SignatureMethod=HmacSHA256
我签署了这项请求查询follwing CMD庆典素文字
i signed this request query follwing cmd bash scipt
#!/bin/bash
q='GET
ec2.amazonaws.com
/
AWSAccessKeyId=<aws acces_key>&Action=DescribeRegions&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-05-24T12%3A35%3A00Z&Version=2013-02-01'
echo -n "$q" | openssl dgst -sha256 -hmac "<aws secret key>" -binary | openssl enc -base64
产量为:xkw62EsVWEpc3rodXADy4Q3LOquKKfHmVHrrIIGQCg0 = 然后我给了这个请求,卷曲分别距上述bash脚本。
output was : xkw62EsVWEpc3rodXADy4Q3LOquKKfHmVHrrIIGQCg0= and then i gave this curl request separately away from above bash script.
$curl -v -get --data-encode DATA https://ec2.amazonaws.com/?Action=DescribeRegions&AWSAccessKeyId=<aws access key>&Version=2013-02-01&Timestamp=2013-05-24T12%3A35%3A00Z&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature=xkw62EsVWEpc3rodXADy4Q3LOquKKfHmVHrrIIGQCg0=
可以在任何1告诉我在哪里,我要去哪里呢?
can any 1 tell me where i m going wrong?
推荐答案
您需要引用请求URL。它包含有被除preTED你的shell字符。
You need to quote the request URL. It contains characters that are being interpreted by your shell.
线索是在输出线如[1]完成......
。 URL中的&号是造成URL的片段被作为背景子shell执行。这些线是外壳的报告,这些子shell完成。
The clue is in the output lines like "[1] Done ..."
. The ampersands in the URL are causing fragments of the URL to be executed as background subshells. These lines are the shell reporting that those subshells have finished.
这篇关于AWS API错误的操作DescribeRegions并不适用于该Web服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!