elasticsearch,curl,aws-elasticsearch,Amazon Web Services,elasticsearch,Curl,Aws Elasticsearch" /> elasticsearch,curl,aws-elasticsearch,Amazon Web Services,elasticsearch,Curl,Aws Elasticsearch" />

Amazon web services 使用密钥凭据连接到AWS中的elasticsearch

Amazon web services 使用密钥凭据连接到AWS中的elasticsearch,amazon-web-services,elasticsearch,curl,aws-elasticsearch,Amazon Web Services,elasticsearch,Curl,Aws Elasticsearch,我正在尝试使用curl,使用accessKey和secretKey,将请求发布到AWS中的es集群。我已经通过postman()成功地做到了这一点,您可以在这里指定AWS凭据,但我希望通过curl实现这一点。邮递员可以自动生成你的卷发请求,但我得到的只是错误 这是生成的curl请求和响应 curl -X GET \ https://search-00000000000001.eu-west-1.es.amazonaws.com/_cat/indices \ -H 'Authorizati

我正在尝试使用curl,使用accessKey和secretKey,将请求发布到AWS中的es集群。我已经通过postman()成功地做到了这一点,您可以在这里指定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."}%
身份证已被更改以保护无辜者


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

这是一个相当长的兔子洞。感谢亚当的评论,让我找到了正确的方向。这个链接真的可以帮助你理解你需要做什么

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


非常感谢您将此文件放到github上。

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


“我最初的问题是:如果我使用相同的url与邮递员一起访问它,我会收到相同的错误,但是删除“:443/”,效果很好,因此我使用的密钥和密码没有问题。”

它会在错误消息中直接告诉您问题:不是您没有连接,这是因为您的签名与服务为此消息计算的内容不匹配。如果这是从邮递员那里得到的,那么可能是a)您更改了发送的某些值;b) 邮递员正在发送一些未导出的隐藏值或标题(不太可能);是否有一个一次性令牌或生成的其他东西只能使用一次?我知道事实上我没有改变任何事情。恐怕我有个坏消息要告诉你——签署一个AWS对Elastic Search的请求是一个非常苛刻、费力的过程。一旦你得到了正确的代码,你就可以了,但这取决于计算一个非常复杂的字符串的散列-如果一个字符错误,那么。。。好。。。你已经看到发生了什么。搜索“AWS4签名”。此参考为您提供了一个开始-(如果我有时间,我会发布更多详细信息。)祝您好运!亚当。