[Haskell-cafe] [ANN] Stratosphere: AWS CloudFormation EDSL in Haskell

David Reaver johndreaver at gmail.com
Tue Apr 19 18:56:18 UTC 2016

Github: https://github.com/frontrowed/stratosphere
Hackage: https://hackage.haskell.org/package/stratosphere

CloudFormation is a system that provisions and updates Amazon Web Services
(AWS) resources based on declarative templates. Common criticisms of
CloudFormation include the use of JSON as the template language and limited
error-checking, often only available in the form of run-time errors and
rollbacks. By wrapping templates in Haskell, we are able to easily construct
them and help ensure correctness.

The goals of stratosphere are to:
- Build a Haskell EDSL to specify CloudFormation templates. Since it is
  embedded in Haskell, it is type-checked and generally much easier to work
  with than raw JSON.
- Have a simple checking/linting system outside of the types that can find
  common errors in templates.
- Be able to also read valid CloudFormation JSON templates so they can be
  type-checked. This also gives us free integration tests by using the huge
  amount of example templates available in the AWS docs.

Most of the commonly used CloudFormation resources are implemented, and
new resources is very straightforward. (We created a web scraper that
a JSON file from a given CloudFormation documentation page URL, and from
we generate a Haskell module.) So far, we have implemented resources we use
Front Row Education, and we will add more resources over time.

The library is very much in a usable state as-is. However, we want to make
sweeping changes while it is still young. If you have any suggestions at
you want us to add your favorite resource, or if you find a bug, please
file an
issue on Github!

Also, we want to give a huge thanks to Brendan Hay, the author of amazonka,
his ideas and feedback on the project.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160419/58c5b7bf/attachment.html>

More information about the Haskell-Cafe mailing list