有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误:没有类似版本的Amazon EC2

我正在尝试向我的一个安全组添加入口规则。 我只想把我的Ip地址192.88.137.28添加到我的EC2安全组sg-fakegrpid

User Type: IAM
region: eu-west-1

那么,我应该把端点设为ec2.eu-west-1.amazonaws.com/而不是ec2.amazonaws.com/

这是一个签名请求&;也被编码了

https://ec2.amazonaws.com/?AWSAccessKeyId=THISISFAKEAWSDRACULA
&Action=AuthorizeSecurityGroupIngress
&GroupId=sg-fakegrpid
&IpPermissions.1.FromPort=3389
&IpPermissions.1.IpProtocol=tcp
&IpPermissions.1.IpRanges.1.CidrIp=192.88.137.28%2F32
&IpPermissions.1.ToPort=3389
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2014-06-09T10%3A57%3A31Z
&Signature=hIKzcwPDdYKw4HsxozCFzzzzl8LxzsdC6XlX83DV4NU=

我使用Java SDK创建签名。这是它的链接

http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html

当我在浏览器中运行上述给定的url时,我得到以下响应

The requested version (2005-10-05) of service AmazonEC2 does not exist

然后我访问了这个页面http://associates-amazon.s3.amazonaws.com/signed-requests/helper/index.html

我从那里生成了一个签名的url。但签名与上面url的签名不同

http://ec2.amazonaws.com/onca/xml?AWSAccessKeyId=THISISFAKEAWSDRACULA
&Action=AuthorizeSecurityGroupIngress
&GroupId=sg-fakegrpid
&IpPermissions.1.FromPort=3389
&IpPermissions.1.IpProtocol=tcp
&IpPermissions.1.IpRanges.1.CidrIp=192.88.137.28%2F32
&IpPermissions.1.ToPort=3389
&SignatureMethod=HmacSHA256&SignatureVersion=2
&Timestamp=2014-06-09T11%3A22%3A14.000Z
&Signature=hr%2FwZBMi3duJpOgud6Hzx2MIhd8QUuqzockqyysRQCY%3D

但我得到了和以前一样的错误

这是要签名的字符串:

GET
ec2.amazonaws.com
AWSAccessKeyId=THISISFAKEAWSDRACULA
&Action=AuthorizeSecurityGroupIngress
&GroupId=sg-fakegrpid
&IpPermissions.1.FromPort=3389
&IpPermissions.1.IpProtocol=tcp
&IpPermissions.1.IpRanges.1.CidrIp=192.88.137.28%2F32
&IpPermissions.1.ToPort=3389
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2014-06-09T11%3A22%3A14.000Z

共 (1) 个答案

  1. # 1 楼答案

    我加了这个“&;版本=2014-05-01'一切正常

    此参数用于指定我们尝试使用的服务的版本。这是EC2的最新版本

    当我没有提到某个特定版本时,aws会寻找这个版本(2005-10-05)的service&;也许是的,它并不存在