操作descripreregions对这个web服务无效



我需要了解不同的aws ec2区域我知道aws有命令行工具,但我想使用aws API我生成了以下访问aws ec2 api的查询请求

https://ec2.amazonaws.com/?Action=DescribeRegions& AWSAccessKeyId =, Version = 2013 - 02 - 01,时间戳= 2013 - 05 - 24 -病人% 3 a35 % 3 a00z& SignatureVersion = 2, SignatureMethod = HmacSHA256&签名= xkw62EsVWEpc3rodXADy4Q3LOquKKfHmVHrrIIGQCg0 =

对于

,我得到以下响应

<?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]完成curl -v -get——DATA -urlencode DATA https://ec2.amazonaws.com/?action=DescribeRegions

[2] Done AWSAccessKeyId=

[3]完成版本=2013-02-01

[4]完成时间戳=2013-05-24 %3A35%3A00Z

[5]-完成

[6]+完成签名方法=HmacSHA256

我签署了这个请求查询CMD bash脚本

 #!/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=然后我把这个curl请求与上面的bash脚本分开。

$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=
谁能告诉我哪里错了?

您需要引用请求URL。它包含shell正在解释的字符。

线索在像"[1] Done ..."这样的输出行中。URL中的&符号导致URL的片段作为后台子shell执行。这些行是报告这些子shell已经完成的shell。

最新更新