CloudFormation supports lots of different AWS Resources with many parameters. Remembering all of them is a pain and slows down development dramatically.
To make this faster Former
lets you create a full CF resource example for any supported Resource. It parses
the CloudFormation Resource Specification
to get the definition for all resources.
former can be installed through pip:
pip install former
or install with Whalebrew and Docker:
whalebrew install flomotlik/former
# For getting updates
docker pull flomotlik/former
Alternatively you can clone this repository and run
python setup.py install
You can create an example for any aws resource by calling former with the service and resource name. In the following
example we’re creating an AWS::IAM::User
Resource:
root@e41871e1eb3e:/app# former iam user
Resources:
AWSIAMUser:
Parameters:
Groups:
- String
LoginProfile:
Password: String - Required
PasswordResetRequired: Boolean
ManagedPolicyArns:
- String
Path: String
Policies:
- PolicyDocument: Json - Required
PolicyName: String - Required
UserName: String
Type: AWS::IAM::User
Some Resources also have a subtype (e.g. LoginProfile for the IAM::User). If you only want to show the subtype you can add it as a third parameter:
root@e41871e1eb3e:/app# former iam user loginprofile
Resources:
AWSIAMUserLoginProfile:
Parameters:
Password: String - Required
PasswordResetRequired: Boolean
Type: AWS::IAM::User.LoginProfile
Of course this is not valid CloudFormation as the LoginProfile
is not a valid CF Resource. But it helps when you
want to get a quick overview for a subtype.
It often helps to open the docs page right with the resource and the --docs
or -d
option will do that for you
and print the full resource to the shell as well.
root@e41871e1eb3e:/app# former iam user loginprofile -d
Resources:
AWSIAMUserLoginProfile:
Parameters:
Password: String - Required
PasswordResetRequired: Boolean
Type: AWS::IAM::User.LoginProfile
--json
Print output in json instead of yaml--required
(-r
) Only print required parameters--docs
(-d
) Open the documentation page of the resource in your browser--debug
Open the documentation page of the resource in your browser