cirrus

Cloudformation management CLI tool

Usage no npm install needed!

<script type="module">
  import cirrus from 'https://cdn.skypack.dev/cirrus';
</script>

README

cirrus

js-standard-style

Cirrus is a CLI tool for managing cloudformation stacks and templates.

(screencasts were done when I had terrible internet, so they're slow)

Commands

list

This command lists all the existing non-deleted stacks.

If you pass --showdeleted then it will include deleted stacks.

cirrus list

resources

This command lists all resources belonging to a particular stack.

cirrus resources

events

This command lists all events that have happened for a stack.

cirrus events

account

This command gives you information about your AWS account.

cirrus accounts

estimate

This will give you a URL to an AWS cost estimation page that has your cloudformation resources automatically filled in.

Requires --file and --parameters args.

This command requires you have a browser installed as it will open the URL with your default application.

validate

Validates a template + parameter file.

Requires --file and --parameters.

Pass: cirrus validate pass

Fail: cirrus validate fail

create

Creates a new template.

Requires a stack name, --file, and --parameters.

asciicast

update

Updates an existing template.

Requires a stack name, --file, and --parameters.

asciicast

delete

Deletes an existing stack.

Will prompt for confirmation.

asciicast

diff

Note: This command is a WIP and the output will almost definitely change.

Displays information about what will change if you apply this template to an existing stack.

asciicast

CF Parameters

Deprecation of cloudformation style params

The old way of defining parameters is now deprecated, to be replaced with a single JSON object.

Old:

[ { ParameterKey: "Hello", ParameterValue: "World" } ]

New:

{ Hello: "World" }

Interpolation

Parameter values can be interpolated from existing cloudformation stacks.

Instead of having:

{
  PublicSubnet1: "subnet-123456"
}

you could change it to

{
  PublicSubnet1: "<<mainVPC.PublicSubnet1>>"
}

Where mainVPC is the name of another stack, and PublicSubnet1 is the resource name. The value will be replaced with the ID of the resource you specify.

Prompting

You can prompt for a value when you run create or update.

{
  SecretParameter: "<<prompt>>"
}

KMS Encrypted values

You can include data that has been encrypted using KMS for create or update. These values will be decrypted using the KMS API when the tasks are run.

{
  SecretParameter: "<<kms: BASE64_ENCODED_DATA>>"
}