Skip to content

Commit

Permalink
Merge pull request #9 from bilardi
Browse files Browse the repository at this point in the history
Add the feature that allows to pass variables from event
  • Loading branch information
giuliocalzolari committed Feb 1, 2018
2 parents 392230e + 45dd194 commit 1fefd9b
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 6 deletions.
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,30 @@ $ aws lambda create-function \
--timeout 180
```

If you want to send variables and not to use environment
```bash
$ export AWS_DEFAULT_REGION=eu-west-1

$ aws lambda create-function \
--function-name es-cleanup-lambda \
--zip-file fileb:https://es-cleanup-lambda.zip \
--description "Elastichsearch Index Cleanup" \
--role arn:aws:iam::123456789012:role/es-cleanup-lambda \
--handler es-cleanup.lambda_handler \
--runtime python2.7 \
--timeout 180
```

### Lambda invoke with parameters
is it possible to override the default behaviour passing specific payload

```bash
$ aws lambda invoke
--function-name es-cleanup-lambda \
outfile --payload \
'{"es_endpoint":"search-es-demo-zveqnhnhjqm5flntemgmx5iuya.eu-west-1.es.amazonaws.com"}'
```

Create your AWS Cloudwatch rule:

```bash
Expand Down
26 changes: 20 additions & 6 deletions es-cleanup.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,30 @@ def __init__(self, event, context):
self.context = context

self.cfg = {}
self.cfg["es_endpoint"] = os.environ.get("es_endpoint", None)
self.cfg["index"] = os.environ.get("index", "all").split(",")
self.cfg["es_endpoint"] = self.get_parameter("es_endpoint")
self.cfg["index"] = self.get_parameter("index", "all").split(",")

self.cfg["delete_after"] = int(os.environ.get("delete_after", 15))
self.cfg["es_max_retry"] = int(os.environ.get("es_max_retry", 3))
self.cfg["index_format"] = os.environ.get("index_format", "%Y.%m.%d")
self.cfg["sns_alert"] = os.environ.get("sns_alert", "")
self.cfg["delete_after"] = int(self.get_parameter("delete_after", 15))
self.cfg["es_max_retry"] = int(self.get_parameter("es_max_retry", 3))
self.cfg["index_format"] = self.get_parameter("index_format", "%Y.%m.%d")
self.cfg["sns_alert"] = self.get_parameter("sns_alert", "")

if not self.cfg["es_endpoint"]:
raise Exception("[es_endpoint] OS variable is not set")


def get_parameter(self, key_param, default_param = None):
"""helper function to retrieve specific configuration
Args:
key_param (str): key_param to read from "event" or "environment" variable
default_param (str): default value
Returns:
string: parameter value or None
"""
return self.event.get(key_param, os.environ.get(key_param, default_param))

def send_to_es(self, path, method="GET", payload={}):
"""Low-level POST data to Amazon Elasticsearch Service generating a Sigv4 signed request
Expand Down

0 comments on commit 1fefd9b

Please sign in to comment.