CloudFormation
CloudFormation (Infrastructure as a Service)
JSON or YAML
Base entity : Stacks tied with resources for creation, update, deletion
Required: Resource definition
Template Portability and Reuse
- Parameters with default values or no parameters at all
- Pull the values from System Manager Parameter Store
- Pseudo Parameters (eg: AWS::Region, Partition, StackId, StackName, URLSuffix etc)
- Intrinsic Functions (eg: Fn::GetAZs, Fn::ImportValue, Ref etc)
Cross stack references
- Base Infrastructure values like VPCId, subnets, can be referenced in other stacks
- Using Ref, Export, Fn::ImportValue
- Reuse Stacks
Nested Stacks
- Reuse blocks of CloudFormation templates.
- Reuse same template code but create multiple different stacks with the same template.
- Share outputs with parameters between these stacks using nested stacks.
eg: GetAtt 'VPCStack.Outputs.VPCID'
Stack Roles
- Allows anyone to use CloudFormation provision,update delete based on the roles permissions.
- Allows separate security rules.
- Its IAM Role -> AWS Service -> CloudFormation Role
Stack Sets
- Administrator Account and a Target Account
- Allow you to deploy a cloudformation template into multiple regions or
- Multiple regions in multiple accounts at the same time.
- You need to establish a trust between these accounts by creating 2 roles:
- AWSCloudFormationStackSetAdminRole in Admin Account and
- AWSCloudFormationStackSetExecutionRole in Target Account. eg: Enable cloudtrail across multiple accounts, enable mfa accross multiple accounts etc.
Custom Resources
- Custom Resource in CloudFormation Template.
- Used in scenarios when you want to build Hybrid Infrastructure (Both AWS and Outside AWS) (eg: Retrieve a license key to activate)
- CloudFormation Sends a notification event to a lambda or SNS topic
- Define
- Custom::AMIInfo
- ServiceToken : { } is the endpoint of lambda or SNS topic
- Receives Response on a pre-signed S3 URL
CloudFormer tool is used to create CloudFormation template files from existing stack.
CloudFormation can be used as one of the Disaster Recovery Strategies.