Reference

Library Structure

How To

Creating a stack

open Cfgen

let my_template_creator =
  let template = Template.make () in
  template

Creating resources

For example, AWS IAM Roles are in Cfgen.BaseConstructs.AWS.IAM.Role module

(These helpers save you needing to specify optional values on resources with lots of properties, which is very common in AWS)

open Cfgen.BaseConstructs

let create_role template =
  let tags = [AWS.IAM.Role.make_tag ~key:"Environment" ~value:"Development" ()] in
  let props = AWS.IAM.Role.make_properties
    ~assume_role_policy_document: assume_role
    ~tags
    () in
  ...

Some properties have record types, which also have their own make_<type_name> function

open Cfgen.BaseConstructs

let create_role =
  let props = ... in
  Template.add_resource template "MyRole" (module AWS.IAM.Role) props ()

Reference resource attributes in other resource properties

Defining stack parameters

Defining stack outputs

Serialising a stack to JSON