我正尝试使用我的accessKey和secretKey将使用curl的请求发布到AWS中的es集群。我已经通过邮递员(details here)成功地做到了这一点,您可以在其中指定AWS凭证,但我想使用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服务?
答案 0 :(得分:0)
这是一个很长的兔子洞。感谢亚当的评论,这给了我正确的方向。链接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上。
答案 1 :(得分:0)
如果主机包含':443',请将其删除,然后重试。 这对我有用。
“我的最初的问题:如果我使用相同的网址通过邮递员访问它,则会收到相同的错误,但是删除':443 /'则可以正常工作,因此我使用的密钥和机密没有问题使用。”