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

问题描述 投票:3回答:1

我从来没有能够让AWS API调用工作。我正在尝试在我的网络上的Linux服务器上发布REST API以与我的企业AWS账户进行交互。

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

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

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

这有很多参数。对上述规范请求的curl命令将导致关于“格式错误的URL”的错误,并且无法通过此行识别bash命令:

content-type:application/x-www-form-urlencoded; charset=utf-8

以上说明并未解释如何确定URI。我如何确定URI?如何使用长curl命令正确解析URI,这样我就不会在参数之间找到一个空格来调用Bash关于无法识别的命令的响应?

我已经尝试了许多curl命令的排列来列出与我的AWS账户关联的服务器或用户。似乎没什么用。

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

bash rest amazon-web-services curl amazon-s3
1个回答
3
投票

为了给出我的答案太迟了,但是对于想要找到样本bash以调用支持AWS Signature版本4的AWS API Gateway Rest的其他人来说可能会有用。示例脚本可以在这里找到:https://github.com/riboseinc/aws-authenticating-secgroup-scripts

© www.soinside.com 2019 - 2024. All rights reserved.