我有一个 Elasticsearch 集群在 上运行亚马逊 .我需要使用 Angular 6 连接 Elasticsearch 集群,实现这一目标的最佳方法是什么?我有一个访问 key 和 key ,并且我在 Elasticsearch 中有一个访问策略,允许该用户具有完全访问权限。我在 中使用以下代码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'
});
最佳答案
最好的方法是使用 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!
关于Angular 6 与 AWS ElasticSearch 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52050176/