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.