当前位置: 首页 > 知识库问答 >
问题:

使用密钥凭证连接到AWS中的elasticsearch

徐学潞
2023-03-14

我正在尝试使用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服务?

共有2个答案

公冶俊达
2023-03-14

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

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

汤念
2023-03-14

这是一个相当长的兔子洞。感谢亚当的评论,让我找到了正确的方向。链接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上。

 类似资料:
  • 我试图通过带有AWS的IntelliJ使用Hadoop执行操作,但遇到Hadoop问题——无法访问我的凭据密钥。我的IntelliJ帐户已经连接到AWS,我可以使用这些服务,但使用Hadoop,我遇到了以下问题。 这是代码- 以及所有依赖项- 3.0.0 这就是整个错误- 过程结束,退出代码为1

  • 我使用Cognito凭据从python脚本连接到AWS IOT时遇到问题。我正在使用python中的AWS IOT SDK以及boto3包。以下是我正在做的: 首先,我建立了一个Cognito用户池,其中有两个用户有用户名和密码可以登录。我还设置了一个Cognito身份池,其中我的Cognito用户池是唯一的身份验证提供者。我不提供对未经验证身份的访问。标识池有一个身份验证角色,我将其称为“MyA

  • 问题内容: 具有加密功能的ElastiCache使用TLS与Redis客户端进行通信,但是正如我所见,在将客户端配置为我们的TLS时,所有语言(ioredis,predis,go- redis)的Redis客户端都需要一个pem文件。 如何在不提供TLS证书的情况下通过传输加密连接到Elasticache? 问题答案: 解决方案-不需要证书,仅用于在客户端中启用TLS(例如,ioredis仅具有

  • 在AWS Xamarin SDK文档中,的Amazon Cognito Identity API文档在其第二段中指出,“必须使用AWS开发人员凭据来调用此API。” 现在,总的想法是尽量不要泄露API机密 但是上面粗体提到的这段文字是否意味着我不能使用IAM角色和/或策略来调用这些API?这是否意味着我必须在应用程序源代码中包含accessKey和secretKey? AWS提供了Cognito机

  • 带有加密功能的ElastiCache使用TLS与redis客户端通信,但正如我所看到的,所有语言(ioredis、predis、go-redis)的redis客户端在向我们TLS配置客户端时都需要一个pem文件。 如果没有TLS的Certificate证书,我如何通过途中加密连接到Elasticache?

  • 编辑:原来我在client-id属性中有一个错误。