r.f*_*ipo 2 amazon-web-services elasticsearch laravel laravel-5
使用我的 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',
],
],
],
],
Run Code Online (Sandbox Code Playgroud)
我像这样配置了我的 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/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
看起来我无法连接(我收到以下错误):
在您的集群中找不到活动节点
任何做过这项工作的人都可以帮助我吗?
如此处所述,如果您想将 IAM 凭证与 ES 索引一起使用,则需要使用 AWS 签名版本 4 对请求进行签名。幸运的是,已经有一个包可以elasticsearch/elasticsearch使用 Scout 使用的包为您处理此问题。
所以你需要做的就是制作一个新的引擎来扩展ElasticsearchEngine和加载处理程序。这里的例子:https : //gist.github.com/threesquared/65f90c5dda7f6a6fd1afbb6b5089b4ec
然后在您的应用程序提供程序中添加一个自定义引擎,如下所示:
resolve(EngineManager::class)->extend('signed-elasticsearch', function () {
return new SignedElasticsearchEngine;
});
Run Code Online (Sandbox Code Playgroud)
然后设置 scout 以使用新驱动程序:
'driver' => 'signed-elasticsearch'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |