使用我的AWS ES配置scout时遇到一些问题,
这是我的scout.php配置:
'elasticsearch' => [
'index' => 'yyy',
'config' => [
'hosts' => [
[
'host' => search-yyy.eu-west-1.es.amazonaws.com,
'port' => 80,
'scheme' => 'https',
'user' => 'myIAM-UserName',
'pass' => 'myIAM-secret',
],
],
],
],
我配置了我的ES访问策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::XXX:user/myIAM-user",
"arn:aws:iam::XXX:root"
]
},
"Action": "es:*",
"Resource": "arn:aws:es:eu-west-1:XXX:domain/yyy/*"
}
]
}
看起来我无法连接(我收到以下错误):
群集中找不到活动节点
任何做过这项工作的人都可以帮到我吗?
答案 0 :(得分:3)
如上所述here如果您想在您的ES索引中使用IAM凭据,您需要使用AWS签名版本4对请求进行签名。幸运的是,已经有a package可以为您处理此问题Scout使用的elasticsearch/elasticsearch
包。
所以你需要做的就是创建一个扩展ElasticsearchEngine
并在处理程序中加载的新引擎。示例:https://gist.github.com/threesquared/65f90c5dda7f6a6fd1afbb6b5089b4ec
然后在您的应用提供商中添加custom engine,如下所示:
resolve(EngineManager::class)->extend('signed-elasticsearch', function () {
return new SignedElasticsearchEngine;
});
然后设置scout以使用新驱动程序:
'driver' => 'signed-elasticsearch'