我从未能够使AWS API调用发挥作用。我正在尝试在我的网络上的Linux服务器上运行REST API以与我的企业AWS账户进行交互。使用AWS签名版本4进行REST API调用(无法签署AWS API请求)
我正在尝试使用签名版本4签署AWS请求。是否需要在AWS实例上执行此操作?我有共享访问密钥,RSA私钥(开始RSA私钥...结束RSA私钥)和AWS访问密钥(例如AKAI ...值)。
我遇到的问题是创建规范请求。我收到错误“格式不正确的网址”。解析猛砸我的卷发,但与在此之后的参数问题:
curl -i ... -X GET/action=listusers
...
我试图按照这些指示:
http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
我想我的命令应该工作,因为上面的链接显示了这个例子的典型要求:
GET
/
Action=ListUsers&Version=2010-05-08
content-type:application/x-www-form-urlencoded; charset=utf-8
host:iam.amazonaws.com
x-amz-date:20150830T123600Z
content-type;host;x-amz-date
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
这有很多参数ERS。的卷曲命令到上述规范的请求将导致关于“错误的URL”和bash命令的错误不与这行确认:
content-type:application/x-www-form-urlencoded; charset=utf-8
上述方向不解释如何确定URI。我如何确定URI?如何在正确解析URI的情况下使用long curl命令,以便在调用Bash对无法识别的命令的响应的参数之间没有空格?
我已经尝试了许多curl命令的排列来列出与我的AWS账户相关的服务器或用户。似乎没有任何工作。
我想发出一个基本的API命令来验证它的工作原理。我很想列出AWS实例或列出与AWS账户关联的用户。但我坚持创建一个规范的请求,因为显然我不知道如何确定在Curl命令中使用哪个URI或URL。如果我知道如何,我可以签署请求。如果我可以使用Linux curl命令来工作,我最终可以使用Python的子进程来调用它们。
恐怕,你离我们很远。你实际上并没有通过标准的请求来卷曲。这不是你创造它的原因。规范请求是一个字符串,它使用*规范*(已知的,固定的,形式化的,标准化的)格式描述**您要创建的请求。该字符串成为用于生成签名的消息的核心。你做一个正常的'curl'https://iam.amazonaws.com/?Action = ListUsers&Version = ...''请求。 –
现在我想从基础开始。我如何创建curl命令?我使用哪个网址?我有几个EC2服务器(但他们没有公共DNS名称和公共IP地址)。我想列出AWS账户中的服务器或用户。 – Kiran
在你提到的页面的例子中,它会是'curl'https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential = AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&X-Amz-Date = 20150830T123600Z&X-Amz-SignedHeaders = content-type%3Bhost%3Bx-amz-date'' –