5

我正在尝试使用我的 accessKey 和 secretKey 将使用 curl 的请求发布到 AWS 中的我的 es 集群。我已经通过邮递员(此处的详细信息)成功完成了这项工作,您可以在其中指定 AWS 凭证,但我想使用 curl 来完成这项工作。Postman 可以为您自动生成 curl 请求,但我得到的只是错误。

这是生成的 curl 请求以及响应

curl -X GET \
  https://search-00000000000001.eu-west-1.es.amazonaws.com/_cat/indices \
  -H 'Authorization: AWS4-HMAC-SHA256 Credential=11111111111111111111/20181119/eu-west-1/es/aws4_request, SignedHeaders=cache-control;content-type;host;postman-token;x-amz-date, Signature=11111111116401882398f46011f14fdb9d55e012a4fb912706d67c1111111111' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Host: search-00000000000001.eu-west-1.es.amazonaws.com' \
  -H 'Postman-Token: 00000000-0000-4001-8006-9291e208a000' \
  -H 'X-Amz-Date: 20181119T220000Z' \
  -H 'cache-control: no-cache'

{"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."}%

已更改 ID 以保护无辜者。

我已经检查了我所有的钥匙和地区,就像我说的那样,这可以通过邮递员进行。是否可以通过 curl 使用我的密钥访问此 AWS 服务?

4

2 回答 2

2

这是一个相当长的兔子洞。感谢亚当的评论让我朝着正确的方向前进。链接https://docs.aws.amazon.com/apigateway/api-reference/signing-requests/确实可以帮助您了解您需要做什么。

从那以后,我找到了一个遵循上述签名请求方法的脚本。它在 bash 中运行,虽然它不是为与 elasticsearch 请求一起使用而编写的,但它可以用于它们。

https://github.com/riboseinc/aws-authenticating-secgroup-scripts非常感谢https://www.ribose.com将其放在 github 上。

于 2018-11-21T09:24:56.900 回答
0

如果您的主机包含“:443”,请将其删除并重试。这对我有用。

“我最初的问题:如果我使用 Postman 使用相同的 url 访问它,我会得到相同的错误,但删除 ':443/',它工作正常,所以我使用的密钥和秘密没有问题。”

于 2020-04-17T07:15:49.677 回答