If you are frustrated by the complexity of packaging Python-based Lambda applications, I highly recommend checking out Chalice: <a href="https://github.com/aws/chalice" rel="nofollow">https://github.com/aws/chalice</a>. It's very well engineered and drastically simplifies the process (for example, it handles pre-built wheels properly, so you can cross-compile your Lambda (build and deploy it from a Mac, etc).<p>Actually, we just open-sourced a template for using Lambda with Chalice and Terraform that automates this and many other relevant steps: <a href="https://github.com/chanzuckerberg/chalice-app-template" rel="nofollow">https://github.com/chanzuckerberg/chalice-app-template</a>. It's not 100% directly applicable to this use case yet, because SAM/CloudFormation templates don't have a good way to manage bucket event subscriptions. But domovoi (<a href="https://github.com/kislyuk/domovoi" rel="nofollow">https://github.com/kislyuk/domovoi</a>) can manage S3 event subscriptions (direct or bridged through SNS, SQS, or SNS-SQS) in an idempotent declarative (non-IaC) process.