2016-11-17 45 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

我覺得Elasticsearch在AWS上工作的端口' 80'而不是'9200'。我想在配置中更改這個參數應該有所幫助。 – Skysplit

+0

確實,但仍然是相同的錯誤,並且當我嘗試使用http而不是https時,我得到:授權標頭需要'Credential'參數。授權標題需要'Signature'參數... –

+0

您是否可以通過瀏覽器(http或https)訪問它? – Skysplit

回答

2

彷彿要使用IAM憑證與ES指數則需要簽署一份與AWS簽名版本的請求4.好在已經有a package可與elasticsearch/elasticsearch包偵察員使用處理這個關於你提到here

所以你所需要做的就是創建一個新的引擎,它可以擴展ElasticsearchEngine並加載到處理程序中。這裏舉例:https://gist.github.com/threesquared/65f90c5dda7f6a6fd1afbb6b5089b4ec在您的應用程序提供商

然後添加一個custom engine這樣的:

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

然後設置偵察兵使用新的驅動程序:

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

謝謝,正是我需要的! –