AWS CloudFormation Deep Dive: Infrastructure as Code सोप्या भाषेत
Terraform/CDK प्रसिद्ध, पण अनेक enterprises रोज CloudFormation YAML/JSON. CFN = native IaC: resources declare → stack → change set production आधी दाखवते.
या chapter मध्ये तुम्ही काय शिकाल
- Native IaC का
- Template/stack/change set/drift
- Parameters/mappings/outputs/nested
- CFN vs CDK vs Terraform
- Lab, errors, FAQ, interview
1. आधी रोजचं उदाहरण
मुंबई bank: 3 accounts मध्ये समान VPC. Console click = drift. एक CFN template (+ StackSets) CIDR/tags/flow logs align — Git मध्ये audit.
2. CloudFormation deep का?
हे का लागतं?
Beginner = create stack. Pro = change sets, drift, nested, custom resources, rollback. CDK team असली तरी interviews CFN विचारतात.
3. Core pieces काय?
हे काय आहे?
| Piece | अर्थ |
|---|---|
| Template | Resources ची YAML/JSON |
| Stack | Template पासून live resources |
| Change set | Update preview |
| Drift | Template पासून वेगळं |
| Nested | Child stacks |
4. सुरक्षित कसं काम करायचं
कसं करायचं (step by step)
- Templates Git मध्ये; फक्त console edit नको.
- Prod = change set.
- Parameters=env; Mappings=AMI.
- Outputs/nested for refs.
- Prod termination protection.
- Critical stacks: weekly drift.
AWSTemplateFormatVersion: '2010-09-09'
Description: Tiny S3 lab bucket
Parameters:
ProjectName:
Type: String
Default: cfn-lab
Resources:
LabBucket:
Type: AWS::S3::Bucket
Properties:
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
Outputs:
BucketName:
Value: !Ref LabBucket
5. CFN vs CDK vs Terraform
| Tool | कधी |
|---|---|
| CFN | Native/StackSets/YAML standard |
| CDK | TS/Python → CFN |
| Terraform | Multi-cloud / TF estate |
6. Industries
- Banks: approved modules
- SaaS: nested per tenant
- Gov: CFN + pipeline gates
- Startups: CFN → CDK
7. Lab: encrypted bucket stack
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- lab.yaml save.
- Create stack.
- ap-south-1 + parameter.
- Output BucketName.
- Change set: tag.
Cleanup (billing थांबवा)
- Stack delete.
- Prefix buckets check.
8. सामान्य errors आणि fixes
प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.
| Error / लक्षण | Fix |
|---|---|
| Change set skip | Always + review. |
| Circular dep | Split/DependsOn. |
| Hard-coded account | Pseudo params. |
| DELETE_FAILED | Empty deps. |
| Drift ignore | Weekly drift. |
| Nested params | Document contracts. |
| IAM star | Scope. |
| No rollback trigger | Add alarms. |
| Console edit | Reconcile. |
| YAML indent | cfn-lint. |
9. Troubleshooting checklist
- Events tab.
- cfn-lint.
- Quotas.
- PassRole.
- Identical template.
- Unique exports.
10. FAQ
प्र. CFN मोफत?
Service free; resources billed.
प्र. सर्व services?
बहुतेक; gaps = custom/CDK.
प्र. YAML/JSON?
YAML humans; JSON generators.
प्र. StackSets?
Many accounts/regions.
प्र. Replace TF?
Module by module.
11. Interview Q&A
प्र. Stack?
Deployed template instance.
प्र. Change set?
Update preview.
प्र. Drift?
Manual vs template.
प्र. Nested vs cross?
Own children vs export/import.
प्र. Rollback?
Prior good state.
प्र. State?
CFN AWS-managed; TF yours.
12. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
If you cannot explain the change set in one sentence, do not execute it.
Ravindra Bagale's Tip (MR)
Change set एक वाक्यात समजत नसेल तर execute नका.
Tip (HI)
Change set एक वाक्य में नहीं समझा तो execute मत करना।
घरी करून बघा
- Sample वर cfn-lint.
- 3 boxes.
- Console-only edit नको अशा 3.
थोडक्यात सांगायचं तर
- CFN = native IaC.
- Change sets + drift.
- Params/maps/outputs.
- Tool = org constraints.
उजळणी, मुलाखत आणि तुलना cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.











अजून cards: Ravi Sir's Cards.
सराव Tasks
London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं Stacks दाखवा
का: Deploy काय.
काय करायचं: eu-west-2 stacks.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Stack describe
का: Status/outputs.
काय करायचं: londonlegal-web describe.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Validate
का: YAML errors.
काय करायचं: file://tpl.yaml validate.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं CFN fee
का: Service free.
काय करायचं: CFN control plane fee? 0.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Min AZs
का: Reliability.
काय करायचं: Prod किमान AZs?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं Lint
का: cfn-lint.
काय करायचं: Deploy आधी lint तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Stack events
का: CREATE_FAILED debug.
काय करायचं: londonlegal-web events.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Drift detect
का: Console edits.
काय करायचं: londonlegal-web drift.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Stack delete
का: Lab cleanup.
काय करायचं: londonlegal-lab delete.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Describe only
का: Read-only.
काय करायचं: DescribeStacks Resource *.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Parameter JSON
का: Env parameters.
काय करायचं: Parameters ProjectName=learn.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम Retain
का: Data keep.
काय करायचं: Retain ठेवते तर 1.
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
अवघड Change set
का: Prod preview.
काय करायचं: londonlegal-web change set cs1 file://tpl.yaml.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Change set execute
का: Review नंतर apply.
काय करायचं: londonlegal-web cs1 execute.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड CFN PassRole
का: PassRole काळजी.
काय करायचं: arn:aws:iam::114543297314:role/londonlegal-cfn PassRole.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड Outputs JSON
का: Bucket export.
काय करायचं: Outputs BucketName=my-lab-bucket.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.