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

标签 bash rest amazon-web-services curl amazon-s3

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

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

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

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

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

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

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

最佳答案

来不及给出我的答案,但是它可能对其他想要找到示例 bash 以调用支持 AWS 签名版本 4 的 AWS API Gateway Rest 的人有用。可以在此处找到示例脚本:https://github.com/riboseinc/aws-authenticating-secgroup-scripts

关于bash - 使用 AWS 签名版本 4 的 REST API 调用(无法签署 AWS API 请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862396/

相关文章:

rest - 在hadoop中,通过knox + webhdfs可以访问的数据大小有限制吗?

linux - AWS ec2 私钥是否特定于 ec2 实例中的用户

hadoop - 在 Amazon EMR 上使用 Hadoop 流处理整个文件

linux - 替换一行结束后的第二个点

java - 泽西网络服务。出现 404 错误

linux - 理解 bash 中的 !# 和 $@

java - 通过 AngularJS 使用 RESTful Web 服务

amazon-web-services - AWS Athena 删除表 + S3 位置

linux - 使用 bash 脚本删除行尾字符?

bash - 如何使用 awk 在多列 .tsv 文件中按第一列值聚合(求和)行?