2016-11-17 3 views
1

einige Probleme zu haben Scout mit meinem AWS ES KonfigurierenLaravel Scout Config AWS Elasticsearch Service

hier ist mein scout.php config:

'elasticsearch' => [ 
     'index' => 'yyy', 

     'config' => [ 
      'hosts' => [ 
       [ 
        'host' => search-yyy.eu-west-1.es.amazonaws.com, 
        'port' => 80, 
        'scheme' => 'https', 
        'user' => 'myIAM-UserName', 
        'pass' => 'myIAM-secret', 
       ], 
      ], 
     ], 
    ], 

Und ich konfiguriert meine ES-Richtlinie wie folgt aus:

{ 
    "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/*" 
    } 
    ] 
} 

Es sieht aus wie ich keine Verbindung herstellen kann (ich die folgende Fehlermeldung erhalten):

Keine lebenden Knoten in Ihrem Cluster gefunden

Jeder, der diese Arbeit gemacht hat, könnte mir helfen?

+0

Ich denke Elasticsearch auf AWS arbeitet auf Port ' 80 statt 9200. Ich denke, das Ändern dieses Parameters in der Konfiguration sollte helfen. – Skysplit

+0

in der Tat, aber immer noch den gleichen Fehler, und wenn ich versuche mit http anstelle von https, bekomme ich: Authorization Header erfordert 'Credential' Parameter. Der Autorisierungsheader benötigt den Parameter 'Signature' ... –

+0

Können Sie über den Browser (http oder https) darauf zugreifen? – Skysplit

Antwort

2

Wie erwähnt here wenn Sie IAM-Anmeldeinformationen mit Ihrem ES Index verwenden möchten, müssen Sie die Anforderungen mit AWS Signatur Version unterzeichnen dort 4. Zum Glück schon ist a package die dies für Sie mit dem elasticsearch/elasticsearch Paket verarbeiten kann Scout verwendet.

Also alles, was Sie tun müssen, ist eine neue Engine, die ElasticsearchEngine erweitert und lädt in den Handler. Beispiel hier: https://gist.github.com/threesquared/65f90c5dda7f6a6fd1afbb6b5089b4ec

dann in der App-Anbieter hinzufügen custom engine wie folgt aus:

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

Dann Scout setzen den neuen Treiber zu verwenden:

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

Danke, genau was ich brauchte! –

Verwandte Themen