首页 > 解决方案 > Angular 6 与 AWS ElasticSearch 连接

问题描述

我有一个在AWS上运行的elasticsearch集群。我需要使用 Angular 6 连接弹性搜索集群,实现这一目标的最佳方法是什么?我有一个访问密钥和密钥,并且我在弹性搜索中有一个访问策略,允许该用户具有完全访问权限。我在NodeJs中使用下面的代码。

var client = new elasticsearch.Client({
   host: process.env.ES_ENDPOINT,
   connectionClass: require('http-aws-es'),
   amazonES: {
       region: process.env.ES_REGION,
       credentials: new AWS.EnvironmentCredentials('AWS')
   },
   log: 'trace'
});

我想对 Angular 6 做同样的事情。我在没有身份验证的情况下进行了连接,如下代码所示:-

this.client = new Client({
  host: 'https://search-usercluster-xxxyuyy.ap-south-1.es.amazonaws.com/',
  log: 'trace'
});

标签: angularamazon-web-serviceselasticsearch

解决方案


实现这一目标的最佳方法是使用Amazon Cognito。例如:

import AWS from 'aws-sdk';
AWS.config.region = 'us-east-2';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId: 'YOUR_IDENTITY_POOL_ID'
});
const options = {
  hosts: [
    'YOUR_HOST_URL'
  ], // array of amazon es hosts (required)
  connectionClass: require('http-aws-es'), // use this connector (required)
  amazonES: AWS.config, // set an aws config e.g. for multiple clients to different regions
  log: 'trace'
};

const es = require('elasticsearch').Client(options);

UPD:添加了 import AWS from 'aws-sdk',我们需要知道如何获取 aws.config 访问权限。谢谢@AravinthanM!


推荐阅读