aws-es-utils
Version:
Utilities to connect with Amazon Elasticsearch Service (using AWS signed request)
38 lines (32 loc) • 3.27 kB
Markdown
# AWS Elasticsearch Utils
[](https://greenkeeper.io/)
[](https://npmjs.org/package/aws-es-utils)
[](https://travis-ci.org/vickvu/node-aws-es-utils)
[](https://coveralls.io/github/vickvu/node-aws-es-utils?branch=master)
[](https://snyk.io/test/github/vickvu/node-aws-es-utils)
## Sign request
If you limit your [Amazon Elasticsearch Service](https://aws.amazon.com/elasticsearch-service/) with an IAM role, you will need to [sign every http request](http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-signing-service-requests) made to the service. The function `createESConnectorClass` creates a new class that can be used as a drop-in replacement for [Elasticsearch default class](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/extending_core_components.html#_connection). For example:
```javascript
var elasticsearch = require('elasticsearch');
var esHttpConnector = require('elasticsearch/src/lib/connectors/http');
var AWS = require('aws-sdk');
var awsEs = require('aws-es-utils');
var let client = new elasticsearch.Client({
host: 'https://xxxx.ap-southeast-2.es.amazonaws.com',
connectionClass: awsEs.createESConnectorClass({
AWS: AWS,
superClass: esHttpConnector
}),
awsRequestSigning: true
});
```
Extra [config](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/configuration.html) to Elasticsearch client constructor
- `awsRequestSigning` (boolean): enable AWS request signing
- `awsRegion` (string | optional): [AWS region](http://docs.aws.amazon.com/general/latest/gr/rande.html). If this property is missing, the class will try to parse the region from the host name.
- `awsCredential` (object | optional): optional [AWS credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If this property is missing, the class will try to use [AWS.CredentialProviderChain](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html) to retrieve the default credential. This property could be either an [AWS.Credentials](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html) object or a normal object with the following properties:
- `accessKeyId` (string): the [AWS access key ID](http://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys)
- `secretAccessKey` (string): the [AWS secret access key](http://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys)
- `sessionToken` (string): the optional AWS session token (the string you received from AWS STS when you obtained temporary security credentials))
- `headers` (object): extra headers to send to ElasticSearch
# License
This project is licensed under the terms of the [Apache license](./LICENSE).