2016-11-17 11 views
1

私のAWS ESでスカウトを構成するいくつかの問題を持って、ここ Laravelスカウトの設定AWS elasticSearchサービス

は私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

を私はAWS上のElasticsearchは 'ポートでうまくいくと思います「9200」ではなく「80」である。私はconfigでこのparamを変更すると役立つはずだと思います。 – Skysplit

+0

確かに同じエラーですが、httpsではなくhttpで試してみると、私は次のようになります:認証ヘッダーには 'Credential'パラメータが必要です。認証ヘッダーに 'Signature'パラメータが必要です... –

+0

ブラウザ(httpまたはhttps)でアクセスできますか? – Skysplit

答えて

2

としては、あなたのES指数でIAMの資格情報を使用したい場合は、幸いスカウトが使用するelasticsearch/elasticsearchパッケージにあなたのためにこれを扱うことができるa packageがすでにあるAWS署名バージョン4で要求に署名する必要がありますhereを述べました。

だから、ElasticsearchEngineを拡張してハンドラにロードする新しいエンジンを作るだけでいいです。ここでは例:次に

resolve(EngineManager::class)->extend('signed-elasticsearch', function() { 
    return new SignedElasticsearchEngine; 
}); 

新しいドライバを使用するためにスカウトを設定します:アプリのプロバイダーで次にhttps://gist.github.com/threesquared/65f90c5dda7f6a6fd1afbb6b5089b4ec

このようcustom engineを追加

'driver' => 'signed-elasticsearch' 
+0

ありがとう、ちょうど私が必要なもの! –

関連する問題