<div dir="ltr"><div>Github: <a href="https://github.com/frontrowed/stratosphere" target="_blank">https://github.com/frontrowed/stratosphere</a></div><div>Hackage: <a href="https://hackage.haskell.org/package/stratosphere" target="_blank">https://hackage.haskell.org/package/stratosphere</a></div><div><br></div><div>CloudFormation is a system that provisions and updates Amazon Web Services</div><div>(AWS) resources based on declarative templates. Common criticisms of</div><div>CloudFormation include the use of JSON as the template language and limited</div><div>error-checking, often only available in the form of run-time errors and stack</div><div>rollbacks. By wrapping templates in Haskell, we are able to easily construct</div><div>them and help ensure correctness.</div><div><br></div><div>The goals of stratosphere are to:</div><div>- Build a Haskell EDSL to specify CloudFormation templates. Since it is</div><div>  embedded in Haskell, it is type-checked and generally much easier to work</div><div>  with than raw JSON.</div><div>- Have a simple checking/linting system outside of the types that can find</div><div>  common errors in templates.</div><div>- Be able to also read valid CloudFormation JSON templates so they can be</div><div>  type-checked. This also gives us free integration tests by using the huge</div><div>  amount of example templates available in the AWS docs.</div><div><br></div><div>Most of the commonly used CloudFormation resources are implemented, and adding</div><div>new resources is very straightforward. (We created a web scraper that generates</div><div>a JSON file from a given CloudFormation documentation page URL, and from that</div><div>we generate a Haskell module.) So far, we have implemented resources we use at</div><div>Front Row Education, and we will add more resources over time.</div><div><br></div><div>The library is very much in a usable state as-is. However, we want to make any</div><div>sweeping changes while it is still young. If you have any suggestions at all,</div><div>you want us to add your favorite resource, or if you find a bug, please file an</div><div>issue on Github!</div><div><br></div><div>Also, we want to give a huge thanks to Brendan Hay, the author of amazonka, for</div><div>his ideas and feedback on the project.</div></div>