gpt4 book ai didi

php - 签署 ElasticSearch AWS 调用

转载 作者:行者123 更新时间:2023-11-29 02:44:43 26 4
gpt4 key购买 nike

我正在尝试将我们所有的 AWS 调用签名到 ElasticSearch,但响应始终是;

用户:匿名无权在资源上执行:es:ESHttpGet:

我已经尝试了多个 key 对和 IAM 用户。

我们 PHP 中的调用是使用官方 elasticsearch-php client 进行的所有请求都使用找到的连接器签名 here .

下面显示了我们如何构建 ElasticSearch 客户端并应用签名中间件;

$credentials = new Credentials('<KEY>', '<SECRET>');
$signature = new SignatureV4('es', 'eu-central-1');

$middleware = new AwsSignatureMiddleware($credentials, $signature);
$defaultHandler = ESClientBuilder::defaultHandler();
$awsHandler = $middleware($defaultHandler);

$clientBuilder = ESClientBuilder::create();

$clientBuilder
->setHandler($awsHandler)
->setHosts(['<URL>']);
$this->_client = $clientBuilder->build();

作为引用,附加到我们尝试访问的 elasticsearch 实例的策略是;

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<IAM_USER>"
},
"Action": "es:*",
"Resource": "<RESOURCE>/*"
}
]
}

其他信息;

  • 我们使用的是 Laravel 框架,版本 5.4.7
  • Elasticsearch 客户端版本 5.3.2

最佳答案

如果不完全了解特定请求所发生的情况,很难回答任何具体问题,但这里有一些关于从哪里开始搜索解决方案的建议。

  1. 中间件可能有问题。我找到了另一个,它似乎更干净且经过更好的测试。我建议尝试一下 - amazon-es-php
  2. 您的策略/VPC 配置可能存在问题,因此请务必检查 this page对于可能有问题的地方
  3. 另一个选项是为您的 elasticsearch php 客户端启用登录,以了解请求的进展情况。这可以通过将 monolog 库添加到您的应用程序并创建一个记录器处理程序来完成。这里有一份来自官方的攻略elastic search documentation .

关于php - 签署 ElasticSearch AWS 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49152660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com