cmckni3-aws-elasticsearch-connector
v8.2.1
Published
A tiny Amazon Signature Version 4 connection class for Elasticsearch.js 16.x, for compatibility with AWS Elasticsearch and IAM authentication. NOTE: This library is drop-in replacement for http-aws-es, which is no longer actively maintained.
Downloads
10
Maintainers
Readme
aws-elasticsearch-connector
A tiny Amazon Signature Version 4 connection class for the official Elasticsearch Node.js client, for compatibility with AWS Elasticsearch and IAM authentication.
For legacy Elasticsearch.js 16.x support, use version 7.x of this library.
Deprecated
Use the original package v4 signing package: https://github.com/compwright/aws-elasticsearch-connector Ideally, use the official OpenSearch JavaScript client: https://opensearch.org/docs/latest/clients/javascript/index
Installation
npm install --save aws-elasticsearch-connector @elastic/elasticsearch aws-sdk
Example usage
With static credentials
const { Client } = require('@elastic/elasticsearch');
const { AmazonConnection } = require('aws-elasticsearch-connector');
const client = new Client({
node: 'my-elasticsearch-cluster.us-east-1.es.amazonaws.com',
Connection: AmazonConnection,
awsConfig: {
credentials: {
accessKeyId: 'foo',
secretAccessKey: 'bar',
sessionToken: 'baz' // optional
}
}
});
With static credentials from AWS.Config
const AWS = require('aws-sdk');
const { Client } = require('@elastic/elasticsearch');
const { AmazonConnection } = require('aws-elasticsearch-connector');
// Load AWS profile credentials
AWS.config.update({
profile: 'my-profile'
});
const client = new Client({
node: 'my-elasticsearch-cluster.us-east-1.es.amazonaws.com',
Connection: AmazonConnection
});
With static credentials from the environment
AWS_ACCESS_KEY_ID=foo # alias: AWS_ACCESS_KEY
AWS_SECRET_ACCESS_KEY=bar # alias: AWS_SECRET_KEY
AWS_SESSION_TOKEN=baz
const { Client } = require('@elastic/elasticsearch');
const { AmazonConnection } = require('aws-elasticsearch-connector');
const client = new Client({
node: 'my-elasticsearch-cluster.us-east-1.es.amazonaws.com',
Connection: AmazonConnection,
});
With asynchronous or refreshing credentials from AWS
When reading AWS credentials from an IAM role or an EC2/ECS profile, the credentials
will be retrieved and refreshed automatically. In this case you'll need to use the
bundled AmazonTransport
transport which will call AWS.Config.getCredentials()
before each ElasticSearch request to ensure that the latest credentials are used.
const { Client } = require('@elastic/elasticsearch');
const { AmazonConnection, AmazonTransport } = require('aws-elasticsearch-connector');
const client = new Client({
node: 'my-elasticsearch-cluster.us-east-1.es.amazonaws.com',
Connection: AmazonConnection,
Transport: AmazonTransport
});
Test
npm test
# Run integration tests against a real endpoint
AWS_PROFILE=your-profile npm run test:integration -- \
--endpoint https://amazon-es-host.us-east-1.es.amazonaws.com