AWS Lambda event handler manager
Project description
Domovoi is an extension to AWS Labs Chalice to handle AWS Lambda event sources other than HTTP requests through API Gateway. Domovoi lets you easily configure and deploy a Lambda function to run on a schedule or in response to an SNS push notification:
import json, boto3, domovoi
app = domovoi.Domovoi()
@app.scheduled_function("cron(0 18 ? * MON-FRI *)")
def foo(event, context):
context.log("foo invoked at 06:00pm (UTC) every Mon-Fri")
return dict(result=True)
@app.scheduled_function("rate(1 minute)")
def bar(event, context):
context.log("bar invoked once a minute")
boto3.resource("sns").create_topic(Name="bartender").publish(Message=json.dumps({"beer": 1}))
return dict(result="Work work work")
@app.sns_topic_subscriber("bartender")
def tend(event, context):
message = json.loads(event["Records"][0]["Sns"]["Message"])
context.log(dict(beer="Quadrupel", quantity=message["beer"]))
@app.cloudwatch_event_handler(source=["aws.ecs"])
def monitor_ecs_events(event, context):
message = json.loads(event["Records"][0]["Sns"]["Message"])
context.log("Got an event from ECS: {}".format(message))
@app.s3_event_handler(bucket="myS3bucket", events=["s3:ObjectCreated:*"], prefix="foo", suffix=".bar")
def monitor_s3(event, context):
message = json.loads(event["Records"][0]["Sns"]["Message"])
context.log("Got an event from S3: {}".format(message))
# Set use_sns=False to subscribe your Lambda directly to S3 events without forwrading them through an SNS topic.
# This has fewer moving parts, but you can only subscribe one Lambda function to events in a given S3 bucket.
@app.s3_event_handler(bucket="myS3bucket", events=["s3:ObjectCreated:*"], prefix="foo", suffix=".bar", use_sns=False)
def monitor_s3(event, context):
message = json.loads(event["Records"][0]["Sns"]["Message"])
context.log("Got an event from S3: {}".format(message))
Installation
pip install domovoi
Usage
First-time setup:
chalice new-project
Replace the Chalice app entry point (in app.py) with the Domovoi app entry point as above, then deploy the event handlers:
domovoi deploy
To stage files into the deployment package, use a domovoilib directory in your project where you would use chalicelib in Chalice. For example, my_project/domovoilib/rds_cert.pem becomes /var/task/domovoilib/rds_cert.pem with your function executing in /var/task/app.py with /var/task as the working directory. See the Chalice docs for more information on how to set up Chalice configuration.
Supported event types
See http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html for an overview of event sources that can be used to trigger Lambda functions. Domovoi supports the following event sources:
SNS subscriptions
CloudWatch Events rule targets, including CloudWatch Scheduled Events (see http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html for a list of event types supported by CloudWatch Events)
S3 events
TODO:
CloudWatch Logs filter subscriptions
DynamoDB events
SES (email) events
Links
Bugs
Please report bugs, issues, feature requests, etc. on GitHub.
License
Licensed under the terms of the Apache License, Version 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file domovoi-1.1.1.tar.gz
.
File metadata
- Download URL: domovoi-1.1.1.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 931d6d92998e8b3474ebd32d34b33da5b92073e53cf20f27c64b2d58c11e9bcf |
|
MD5 | 7cf1964738386586253647a17e4c0d4b |
|
BLAKE2b-256 | 4f213504904f2e823c74ed905b00ed977bfd146878ffe4eceaa121df6e1d7562 |
File details
Details for the file domovoi-1.1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: domovoi-1.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c36f9dc11249305f18c18f8d9f1e1b5fffb8f8ca3f705251f53f46bd68b4f89 |
|
MD5 | 2f04a4abb87f1e6872617a40c19b2fc7 |
|
BLAKE2b-256 | 02fa9b32e403a03c033de600103aacba38abcb3c64fcd18072672e68dcddb7ef |