πŸ”§ Core Functions:

  • !Ref β†’ get value of param or resource
  • !GetAtt β†’ get attribute (e.g. !GetAtt EC2Instance.PublicIp)
  • !Sub β†’ string interpolation (${})
  • !Join β†’ concat strings
  • !If, !Equals, !Not, !Or, !And β†’ conditions
  • !Select, !Split, !FindInMap β†’ array/map helpers

πŸ”„ Pseudo Parameters:

  • ${AWS::Region}
  • ${AWS::AccountId}
  • ${AWS::StackName}
  • ${AWS::Partition}
  • ${AWS::NoValue} β†’ used to remove a property conditionally

🧩 Intrinsics & Helpers:

  • Mappings β†’ key-value lookup table
  • Conditions β†’ used to control resource creation
  • DependsOn β†’ control resource dependency
  • Metadata β†’ for tooling (e.g., cfn-init)
  • CreationPolicy, UpdatePolicy, DeletionPolicy β†’ lifecycle control

πŸ“¦ Template Sections:

  • Parameters β†’ user inputs
  • Resources β†’ actual AWS stuff
  • Outputs β†’ expose values
  • Mappings, Conditions, Metadata, Rules

Master these, and you’re 90% CloudFormation-ready.