【发布时间】:2013-05-24 09:05:51
【问题描述】:
我需要了解不同的 aws ec2 区域 我知道 aws 有这方面的命令行工具,但我想使用 aws api 所以 我生成了以下用于访问 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=
我得到了以下回复
<?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] 完成 AWSAccessKeyId=
[3] 完成版本=2013-02-01
[4] 完成时间戳=2013-05-24T12%3A35%3A00Z
[5]- 完成 SignatureVersion=2
[6]+ 完成签名方法=HmacSHA256
我在 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= 然后我将这个 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=
谁能告诉我哪里出错了?
【问题讨论】:
标签: bash amazon-web-services amazon-ec2