How Lono Works
Here is a diagram and high-level explanation that describes how lono works.
Lono works by building a CloudFormation template from a Lono blueprint. The blueprint is written in a DSL. The DSL looks this:
parameter("BucketName", Conditional: true) parameter("AccessControl", Default: "Private") resource("Bucket", "AWS::S3::Bucket", BucketName: ref("BucketName", Conditional: true), AccessControl: ref("AccessControl"), ) output("BucketName", ref("Bucket"))
The built CloudFormation YAML looks like this:
--- Parameters: BucketName: Default: '' Type: String AccessControl: Default: Private Type: String Conditions: HasBucketName: Fn::Not: - Fn::Equals: - Ref: BucketName - '' Resources: Bucket: Type: AWS::S3::Bucket Properties: BucketName: Fn::If: - HasBucketName - Ref: BucketName - Ref: AWS::NoValue AccessControl: Ref: AccessControl Outputs: BucketName: Value: Ref: Bucket
Lono then simply calls the CloudFormation API with the CloudFormation template and parameters. In fact you can even use the built files and call the CloudFormation API directly with the CLI.
lono build demo cd output/demo aws cloudformation create-stack --stack-name demo-dev --template-body file://template.yml --parameters file://params.json
Lono automates the full process with:
lono up demo