Skip to main content
Congratulations — you made it to the end of the AWS CloudFormation course. I’m Arno Pretorius, and it was a pleasure guiding you through infrastructure as code with AWS CloudFormation. Throughout this course you progressed from writing basic CloudFormation templates to more advanced topics, including nested stacks, StackSets, and automating deployments with CI/CD using AWS CodePipeline. These skills help you create clean, reusable templates and manage infrastructure reliably in production environments. Keep practicing: building, refactoring, and automating templates will solidify your knowledge. Revisit the hands-on labs and consult the official docs as you continue experimenting.
Tip: When defining an S3 bucket in CloudFormation, you can either provide a BucketName parameter (which must be globally unique) or omit it so CloudFormation generates a unique name for you. Use parameters to make templates reusable across environments.
Below is a simple CloudFormation snippet you can use as a starting point to create an S3 bucket. The BucketName is provided via a parameter so you can control naming in your lab or project.
S3 bucket names must be globally unique and follow S3 naming rules: 3–63 characters; lowercase letters, numbers, hyphens, and periods (no underscores); must start and end with a letter or number; and cannot be formatted as an IP address (for example, 192.168.5.4). Avoid consecutive periods. Ensure the parameter value you provide meets these constraints.
What you learned Links and references The KodeKloud community is here to support you — ask questions, share your progress, and keep building. Thank you for joining me on this journey. Best of luck applying what you’ve learned.

Watch Video