I recently got to play with Chalice for a dashboard we are building at my client's. It is very promising. One way to think about it is of a bridge between the AWS API Gateway and the AWS Lambda serverless compute environment. Chalice is not the only way to integrate an API gateway rest call to the Lambda execute engine, however, it does make things easy for a python flask developer. Programmers need only code in the popular flask microframework using familiar metadata constructs such as routes. Chalice reads the metadata reflectively and converts those into corresponding API gateway endpoints.

Additionally, it wraps the Flask app in order to decode the API gateway request to an http request format that Flask understands. This is huge. It bridges the two architectures API gateway and Lambda in a standard, predictable way. That in a nutshell is Chalice. Additionally, it also has logic to detect any boto3 calls that the flask app makes and generate IAM policy that will satisfy permissions that the flask app needs. That is pretty neat. The place I work, not all developers have access to creating IAM policies - for obvious security reasons. Even if I created a POC using Chalice as it was when I first looked at it, my developers would not be able to use it. So, I made a tweak to Chalice and James over at AWS Labs accepted my github pull request. Pretty awesome. As of version 0.1.0, one can just configure a pre-defined IAM role for Chalice to use instead of trying to create one from scratch. FTW!

Head over to the Chalice github repo to get all the latest code and documentation.