使用 AWS 签名版本 4 调用 REST API(无法签署 AWS API 请求)

Kir*_*ran 4 rest bash curl amazon-s3 amazon-web-services

我一直无法让 AWS API 调用工作。我正在尝试在我的网络上的 Linux 服务器上工作,以发出 REST API 来与我的企业 AWS 帐户进行交互。

我正在尝试使用签名版本 4 签署 AWS 请求。我需要在 AWS 实例上执行此操作吗?我有共享访问密钥、RSA 私有密钥(开始 RSA 私有密钥...结束 RSA 私有密钥)和 AWS 访问密钥(例如,AKAI... 值)。

我遇到的问题是创建规范请求。我收到错误“URL 格式错误”。Bash 解析我的 curl 但在此之后参数有问题:

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
Run Code Online (Sandbox Code Playgroud)

这有很多参数。对上述规范请求的 curl 命令将导致有关“格式错误的 url”的错误以及无法使用此行识别的 bash 命令:

content-type:application/x-www-form-urlencoded; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

以上说明没有说明如何确定URI。如何确定 URI?如何在正确解析 URI 的情况下使用长卷曲命令,以便在参数之间没有空格来调用 Bash 对无法识别的命令的响应?

我尝试了多种 curl 命令排列来列出与我的 AWS 账户关联的服务器或用户。似乎没有任何效果。

我想发出一个基本的 API 命令来验证它是否有效。我想列出 AWS 实例或列出与 AWS 账户关联的用户。但是我坚持创建规范请求,因为显然我不知道如何确定在 Curl 命令中使用哪个 URI 或 URL。如果我知道怎么做,我就可以签署请求。如果我能让 Linux curl 命令工作,我最终可以使用 Python 的子进程来调用它们。

phu*_*ong 5

给出我的答案为时已晚,但是对于想要找到示例 bash 以调用支持 AWS 签名版本 4 的 AWS API Gateway Rest 的其他人来说可能很有用。 示例脚本可以在这里找到:https : //github.com/核糖素/aws-authenticating-secgroup-scripts