Panduan Praktis AWS CloudFormation: Dari YAML ke CI/CD
Daftar Isi
- Pengantar AWS CloudFormation
- Memahami Struktur Template YAML CloudFormation
- Membuat Template CloudFormation Pertama
- Deploy Stack CloudFormation di AWS Console
- Menggunakan Parameter dan Output
- Update Stack dan Manajemen Versi
- Integrasi CloudFormation dengan CI/CD Pipeline
- Contoh Source Code dan Referensi Pembelajaran
- Penutup dan Tips Praktis
1. Pengantar AWS CloudFormation
AWS CloudFormation adalah layanan dari Amazon Web Services yang memungkinkan Anda untuk memodelkan dan menyediakan sumber daya AWS secara otomatis dan terstruktur menggunakan template deklaratif. Dengan CloudFormation, Anda dapat mengelola infrastruktur sebagai kode (IaC), sehingga memudahkan pengelolaan, replikasi, dan versioning infrastruktur cloud Anda.
Dalam panduan ini, Anda akan belajar bagaimana membuat template CloudFormation menggunakan format YAML, menjalankan deployment stack, dan mengintegrasikannya ke dalam pipeline CI/CD untuk otomatisasi penuh.

2. Memahami Struktur Template YAML CloudFormation
Template CloudFormation ditulis dalam format JSON atau YAML. YAML lebih populer karena lebih mudah dibaca dan ditulis. Struktur dasar template terdiri dari beberapa bagian utama:
- AWSTemplateFormatVersion: Versi format template (opsional).
- Description: Deskripsi singkat tentang template.
- Parameters: Input yang dapat dikustomisasi saat deploy stack.
- Resources: Bagian utama yang mendefinisikan sumber daya AWS yang akan dibuat.
- Outputs: Nilai yang ingin ditampilkan setelah stack selesai dibuat.
AWSTemplateFormatVersion: '2010-09-09' Description: Template contoh sederhana membuat bucket S3 Parameters: BucketName: Type: String Description: Nama bucket S3 yang akan dibuat Resources: MyS3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketName Outputs: BucketArn: Description: ARN dari bucket S3 Value: !GetAtt MyS3Bucket.Arn
3. Membuat Template CloudFormation Pertama
Mari kita buat template sederhana yang membuat sebuah bucket S3 dengan nama yang bisa Anda tentukan saat deploy.
AWSTemplateFormatVersion: '2010-09-09' Description: Membuat bucket S3 dengan nama dinamis Parameters: BucketName: Type: String Description: Nama bucket S3 yang akan dibuat Resources: MyS3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketName Outputs: BucketArn: Description: ARN dari bucket S3 Value: !GetAtt MyS3Bucket.Arn
Simpan file ini dengan nama
bucket-s3.yaml
. Nantinya, Anda akan menggunakan file ini untuk deploy stack di AWS.

4. Deploy Stack CloudFormation di AWS Console
Berikut langkah-langkah untuk deploy stack menggunakan AWS Management Console:
- Buka AWS CloudFormation Console .
- Klik tombol Create stack dan pilih With new resources (standard) .
-
Pada bagian
Specify template
, pilih
Upload a template file
dan unggah file
bucket-s3.yaml
. -
Klik
Next
, lalu isi parameter
BucketName
dengan nama bucket yang diinginkan (misal:
my-unique-bucket-12345
). - Klik Next , atur opsi stack sesuai kebutuhan, lalu klik Create stack .
- Tunggu proses deploy hingga status stack menjadi CREATE_COMPLETE .

Setelah stack berhasil dibuat, Anda dapat melihat output ARN bucket dan mengakses bucket tersebut di layanan S3.
5. Menggunakan Parameter dan Output
Parameter memungkinkan template menjadi dinamis dan dapat digunakan ulang dengan konfigurasi berbeda. Output berguna untuk menampilkan informasi penting setelah stack dibuat, seperti ARN, URL, atau ID resource.
Contoh penggunaan parameter dan output sudah kita lihat pada template bucket S3 sebelumnya. Anda juga bisa menambahkan parameter tipe
Number
,
List
, atau
CommaDelimitedList
sesuai kebutuhan.
Parameters: InstanceType: Type: String Default: t2.micro AllowedValues: - t2.micro - t2.small - t2.medium Description: Jenis instance EC2 Outputs: InstanceId: Description: ID instance EC2 yang dibuat Value: !Ref MyEC2Instance
6. Update Stack dan Manajemen Versi
Setelah stack dibuat, Anda dapat mengupdate template untuk menambah, mengubah, atau menghapus resource. Proses update ini disebut stack update .
Langkah update stack di AWS Console:
- Buka AWS CloudFormation Console dan pilih stack yang ingin diupdate.
- Klik tombol Update .
- Pilih metode update, misalnya Replace current template dan unggah file YAML terbaru.
- Klik Next , sesuaikan parameter jika perlu, lalu klik Update stack .
- Tunggu proses update hingga status UPDATE_COMPLETE .
Selalu simpan versi template Anda di sistem kontrol versi (misal Git) agar mudah rollback jika terjadi kesalahan.

7. Integrasi CloudFormation dengan CI/CD Pipeline
Untuk otomatisasi deployment infrastruktur, CloudFormation dapat diintegrasikan ke pipeline CI/CD menggunakan layanan seperti AWS CodePipeline, GitHub Actions, atau Jenkins.
Contoh alur sederhana menggunakan GitHub Actions:
- Push perubahan template YAML ke repository GitHub.
- GitHub Actions menjalankan workflow yang memvalidasi template.
- Jika valid, workflow menjalankan perintah AWS CLI untuk deploy/update stack CloudFormation.
name: Deploy CloudFormation on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Deploy CloudFormation Stack run: | aws cloudformation deploy \ --template-file bucket-s3.yaml \ --stack-name my-s3-stack \ --parameter-overrides BucketName=my-unique-bucket-12345 \ --capabilities CAPABILITY_NAMED_IAM
Dengan pipeline ini, setiap perubahan template otomatis dideploy tanpa perlu intervensi manual.

8. Contoh Source Code dan Referensi Pembelajaran
Berikut beberapa contoh source code dan channel pembelajaran yang dapat Anda gunakan untuk memperdalam pemahaman AWS CloudFormation:
Contoh Template YAML Sederhana - Membuat VPC dan Subnet
AWSTemplateFormatVersion: '2010-09-09' Description: Membuat VPC dengan satu subnet publik Resources: MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: MyVPC MySubnet: Type: AWS::EC2::Subnet Properties: VpcId: !Ref MyVPC CidrBlock: 10.0.1.0/24 MapPublicIpOnLaunch: true Tags: - Key: Name Value: MyPublicSubnet Outputs: VpcId: Description: ID VPC yang dibuat Value: !Ref MyVPC SubnetId: Description: ID Subnet publik Value: !Ref MySubnet
Channel YouTube Rekomendasi
- AWS Tutorials Official - Tutorial resmi dari AWS dengan contoh CloudFormation dan layanan AWS lainnya.
- TechWorld with Nana - Channel populer yang membahas DevOps, CI/CD, dan AWS CloudFormation secara mendalam.
- freeCodeCamp.org - Video tutorial panjang dan lengkap tentang AWS dan infrastruktur sebagai kode.
Repositori GitHub
- AWS Labs CloudFormation Templates - Koleksi template CloudFormation resmi dari AWS Labs.
- TechWorld with Nana - CloudFormation Examples - Contoh template dan pipeline CI/CD yang digunakan di channel TechWorld with Nana.
9. Penutup dan Tips Praktis
AWS CloudFormation adalah alat yang sangat powerful untuk mengelola infrastruktur cloud secara otomatis dan konsisten. Dengan memahami struktur template YAML dan mengintegrasikannya ke pipeline CI/CD, Anda dapat meningkatkan produktivitas dan mengurangi risiko kesalahan manual.
Tips praktis:
- Selalu gunakan sistem kontrol versi untuk menyimpan template Anda.
- Gunakan parameter dan kondisi untuk membuat template lebih fleksibel.
-
Validasi template sebelum deploy menggunakan perintah
aws cloudformation validate-template
. - Manfaatkan fitur Change Sets untuk melihat perubahan sebelum update stack.
- Pelajari dan gunakan modul AWS CDK jika ingin menulis infrastruktur dengan bahasa pemrograman.
Selamat belajar dan semoga sukses menguasai AWS CloudFormation!
