/lambda-curator

An Elasticsearch Curator bootstrapper for AWS Lambda

Primary LanguageMakefileMIT LicenseMIT

lambda-curator - An Elasticsearch Curator bootstrapper for AWS Lambda.

This is a simple bootstrapper for running the Elasticsearch Curator as an AWS Lambda-function. Lambda functions can be triggered using CloudWatch Events making it a suitable environment for running Curator tasks.

Note: Currently Lambda functions have a maximum execution time of 300 seconds so long-running Curator tasks are not suitable for running as Lambda functions.

Setup

Environment variables

  • ES_HOST: the base url of the Elasticsearh cluster (default: http://localhost).
  • ES_PORT: the Elasticseach cluster port (default: 9200).
  • DRY_RUN: set Curator --dry-run flag (default: True)
  • FUNCTION_NAME: the lambda function name (default: lambda-curator).
  • IAM_ROLE: the lambda function execution role.

AWS CLI

The AWS CLI needs to be installed in order to push/update the lambda-curator function. As a minimum the following variables need to be set:

  • AWS_ACCESS_KEY_ID: the aws access key id.
  • AWS_SECRET_ACCESS_KEY: the aws secret access key.
  • AWS_REGION: the aws region.

Add actions.yml

Add an actions.yml file with the actions to be triggered by the lambda function.

Package function

make package

This will create a FUNCTION_NAME.zip including the bootstrap.py (and all Curator dependencies) and actions.yml.

Push package to function

make awspush

This will create and publish the lambda-curator function.

Update package function

make awsupdate

This will update any existing lambda-curator function.

Connecting to an AWS Elasticsearch cluster

The lambda-curator function will sign all requests with the AWS credentials of the execution role (IAM_ROLE). Giving this role access to your AWS Elasticsearch cluster using IAM will authenticate all lambda-curator actions automagically.