Bagi para pengguna AWS, entah itu perorangan/solo developer, perusahaan kecil, startup, perusahaan besar, pelajar/mahasiswa dan lainnya pasti akan berhadapan dengan biaya penggunaan.
Mungkin bagi sebagian pengguna terutama yang belum menggunakan AWS untuk production, misal hanya untuk demo, belajar dan sebagainya, jika pada saat akhir bulan menerima tagihan diluar dari yang dialokasikan akan sedikit menambah beban. Namun tidak menutup kemungkinan juga jika pengguna yang sudah menjalankan production grade service di AWS untuk dapat memantau dan mengetahui sudah seberapa banyak penggunaan biaya service yang mereka gunakan.
AWS menyediakan sebuah fitur/service bernama AWS Budgets yang dapat melacak penggunaan biaya AWS dan juga melakukan notifikasi dan aksi terkait biaya penggunaan, seperti dikutip dari dokumentasi AWS berikut.
Beberapa tipe AWS Budgets dikutip dari dokumentasi di atas:
- Cost budgets – Merencanakan seberapa banyak biaya(cost) yang akan dihabiskan di service.
- Usage budgets – Merencanakan penggunaan(usage) dari 1 atau lebih service.
- RI utilization budgets – Menentukan batas penggunaan/utilisasi dan memberikan notifikasi jika penggunaan RI (Reserved Instance) di bawah batas.
- RI coverage budgets – Menentukan batas cakupan dan memberikan notifikasi ketika cakupan waktu penggunaan (instance hours) RI di bawah batas.
- Saving Plans utilization budgets – Menentukan batas penggunaan/utilisasi jika penggunaan Saving Plans di bawah batas.
- Saving Plans coverage budgets – Menentukan batas cakupan dan memberikan notifikasi jika penggunaan yang diizinkan untuk Saving Plans di bawah batas.
Pada artikel ini saya akan mencoba menjelaskan cara membuat Cost Budget AWS dengan menetapkan berapa besar nominal ekspektasi setiap bulannya. Dan jika penggunaan/biaya sudah 80% dari nilai ekspektasi per bulan, maka akan ada pesan/notifikasi yang dikirimkan ke email. Konfigurasi di artikel ini menggunakan metode Infrastructure as Code (IaC) dengan menggunakan tools dari Hashicorp yaitu Terraform. Terraform yang saya gunakan adalah Terraform Cloud.
Konfigurasi
Pada artikel ini, struktur file yang digunakan oleh terraform code sebagai berikut:
budgets/
├─ budgets.tf
├─ main.tf
├─ variables.tf
-
Sebagai langkah awal, saya mulai dengan membuat 1 file dengan nama main.tf. Di file ini saya akan mendeklarasikan konfigurasi terraform yang akan mengacu ke terraform cloud (app.terraform.io) sebagai backend. Dan mereferensikan nama organisasi dan workspace yang digunakan. Kemudian saya juga deklarasikan terraform provider yang digunakan yaitu hashisorp/aws dengan versi terkait. Di akhir saya deklarasikan region aws yang digunakan, mengacu ke variable aws_region yang ada di file variable.tf yang berikutnya akan saya jelaskan.
# Setup terraform cloud and workspace terraform { backend "remote" { hostname = "app.terraform.io" organization = "lanandra" workspaces { name = "budgets" } } } # Setup terraform providers terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.57.0" } } required_version = ">= 1.0.6" } # Setup AWS provider provider "aws" { region = var.aws_region }
-
Langkah berikutnya yaitu dengan membuat variable di file variable.tf. Di file ini saya deklarasikan variable aws_region.
# Setup AWS Region variable "aws_region" { type = string description = "AWS Region" default = "ap-southeast-1" }
-
Selanjutnya di file budgets.tf saya akan melakukan konfigurasi aws budgets. Resource AWS Budgets-nya saya beri nama monthly, dengan type COST dan akan melakukan limit penggunaan sebanyak USD 15 setiap bulannya.
Setelah itu saya konfigurasi juga sebulah alert jika penggunaan sudah mencapai lebih dari sama dengan 80 persen dari nilai yang ditetapkan (USD 15) maka akan dilakukan pengiriman notifikasi via email.
# Create AWS Budgets resource "aws_budgets_budget" "monthly" { name = "monthly" budget_type = "COST" limit_amount = "15" limit_unit = "USD" time_unit = "MONTHLY" time_period_start = "2021-11-01_00:00" notification { comparison_operator = "GREATER_THAN" threshold = 80 threshold_type = "PERCENTAGE" notification_type = "ACTUAL" subscriber_email_addresses = ["luthfi.anandra@ludesdeveloper.com"] } }
-
Selanjutnya karena saya menggunakan terraform cloud, saya melakukan terraform plan dan apply via web console terraform cloud.
-
Setelah memastikan terraform plan dan apply berhasil, kita juga dapat memastikan bahwa AWS Budgets sudah berhasil terkonfigurasi via AWS Web Console. Masuk ke menu AWS Billing, kemudian masuk ke bagian Budgets. Pastikan di halaman ini, sudah muncul AWS Budgets dengan nama monthly
-
Jika masuk ke detail dari budgets tersebut, kita dapat melihat bahwa nominal budget yang ditetapkan adalah $15 dengan periode setiap bulan dan tipe nya adalah Cost budget. Dari sini kita juga dapat melihat real time penggunaan dan yang dialokasikan via budget.
-
Selanjutnya jika dilihat bagian alert dari budget tersebut, kita dapat melihat bahwa sudah dikonfigurasi alert dengan batas penggunaan lebih besar sama dengan 80% dari nilai yang ditetapkan. Dan jika sudah mencapai threshold, maka akan ada terkirim notifikasi ke email yang sudah ditetapkan.
Kesimpulan
Akhirnya kita sampai di penghujung artikel ini. Pada artikel ini kita sudah membahas apa itu AWS Budgets dan apa fungsinya. Setelah kita kita juga telah melakukan bagaimana cara konfigurasi AWS Budgets menggunakan Terraform.
Silahkan kunjungi github repo saya untuk melihat source code yang saya gunakan pada artikel ini.
Sekian artikel kali ini. Jika ada saran, kritik, atau masukan silahkan tinggalkan di kolom komentar.
Sekian dan terima kasih.
Tinggalkan Balasan