[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
stack
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
adding
new resources is very straightforward. (We created a web scraper that
generates
a JSON file from a given CloudFormation documentation page URL, and from
that
we generate a Haskell module.) So far, we have implemented resources we use
at
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
any
sweeping changes while it is still young. If you have any suggestions at
all,
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,
for
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