Mengelompokkan Resource AWS menggunakan Resource Group
AWS Resource Group sangat bermanfaat untuk menampilkan berbagai resource AWS yang dikelompokkan. Misalkan dikelompokkan per Departemen atau per Proyek.
AWS Resource Group adalah alat untuk mengelompokkan berbagai resource di AWS. Resource Group ini bermanfaat jika Anda ingin melihat tampilan tabel yang berisikan daftar resource yang dibagi dalam kelompok-kelompok sesuai kriteria. Misalkan pola umumnya adalah Anda ingin melihat daftar AWS resource per departemen kerja, atau per proyek.
Ada dua tipe kelompok di Resource Group, yaitu:
- menggunakan filter Tag, untuk menampilkan resource yang memiliki Tag tertentu
- menggunakan filter CloudFormation-stack, untuk menampilan resource yang dibuat oleh CloudFormation-stackt tertentu
Pada tutorial ini, kita membahas tipe yang pertama saja, yaitu menggunakan filter Tag.
Menambahkan Tag ke Resource
Langkah pertama untuk pengelompokkan resource dapat dilakukan dengan cara menambahkan Tag ke resource AWS. Tag di adalah atribut yang bisa kita tambahkan ke resource AWS, yang sifatnya adalah Key-Value. Tag ini bermanfaat untuk menyimpan meta-data, catatan atau penanda yang bisa kita review di masa depan. Berbagai resource AWS bisa Anda tambahkan Tag.
Pada Gambar 1 adalah contoh Tag untuk EC2 Instance.
Pada Gambar 2 adalah contoh Tag untuk S3 Bucket.
Membuat AWS Resource Group
Langkah kedua adalah membuat Resource Group. Dalam tulisan kali ini, saya menyediakan empat cara untuk membuat Resource Group yaitu dengan menggunakan:
- AWS Console untuk Anda yang lebih memilih cara visual
- AWS CLI untuk Anda yang menyukai scripting
- AWS CloudFormation untuk Anda yang perlu contekan template
- Terraform untuk Anda yang mengelola resource di beberapa cloud provider
- AWS SDK untuk Python (boto3) sebagai contoh dengan cara programmatic
Membuat AWS Resource Group menggunakan AWS Console
Silahkan masuk ke AWS Console. Di menu atas kiri, Anda dapat melihat menu AWS Resource Group. Silahkan pilih menu "Create a group", seperti dapat dilihat pada Gambar 3.
Seperti pada Gambar 4, silahkan pilih "Tag based".
Lalu seperti pada Gambar 5 yaitu "Grouping criteria", Anda bisa masukkan nilah "Departemen" ke isian "Tag key". Lalu bisa masukkan nama departemen tertentu ke isian "Optional tag value".
Pada bagian "Group details" seperti Gambar 6, silahkan isikan nama dan deskripsi. Isian nama hanya bisa diisi dengan huruf dan angka, tidak bisa diisi dengan huruf spasi. Contoh isian nama yang valid adalah "departemen-engineering-resource-group". Terakhir silahkan tekan tombol "Create group".
Anda akan melihat tampilan resource group yang baru dibuat seperti pada Gambar 7.
Membuat AWS Resource Group menggunakan AWS CLI
Silahkan salin JSON berikut. Lalu simpan sebagai sebuah file misalkan dengan nama query.json
. Jangan lupa untuk menyesuaikan nama departemen.
{
"Type": "TAG_FILTERS_1_0",
"Query": "{\"ResourceTypeFilters\": [ \"AWS::AllSupported\" ], \"TagFilters\":[{\"Key\":\"Departemen\", \"Values\":[\"Penjualan\"]}]}"
}
Lanjutkan dengan menjalankan perintah berikut di komputer Anda yang sudah terpasang AWS CLI:
aws resource-groups create-group \
--name Departemen-Penjualan-ResourceGroup \
--resource-query file://query.json
Membuat AWS Resource Group menggunakan AWS CloudFormation
Anda dapat menggunakan contoh CloudFormation template berikut dalam format YAML. Parameter "NamaDepartemen" hanya boleh diisi dengan huruf dan angka TAPI tidak boleh mengandung karakter spasi. Silahkan dicoba menggunakan AWS CloudFormation.
AWSTemplateFormatVersion: 2010-09-09
Description: Template untuk membuat Resource Group
Parameters:
NamaDepartemen:
Type: String
Description: Nama Departemen
Resources:
ResourceGroupPerDepartemen:
Type: AWS::ResourceGroups::Group
Properties:
Description: !Sub 'Berbagai resource yang dimiliki oleh Departemen ${NamaDepartemen}'
Name: !Sub 'Departemen-${NamaDepartemen}-ResourceGroup'
ResourceQuery:
Type: TAG_FILTERS_1_0
Query:
ResourceTypeFilters:
- AWS::AllSupported
TagFilters:
- Key: Departemen
Values:
- !Ref NamaDepartemen
Membuat AWS Resource Group menggunakan Terraform
Pastikan di komputer Anda sudah terpasang Terraform CLI. Lalu siapkan sebuah folder untuk proyek Terraform Anda, misalkan /home/andy/coba-resourcep-group/
.
Simpanlah template di bawah ini sebagai sebuah file misalkan resource_group.tf
dan jangan lupa lakukan penyesuaian terhadap nama departemen juga AWS Region.
provider "aws" {
profile = "default"
region = "ap-southeast-1"
}
resource "aws_resourcegroups_group" "departemen_rg" {
name = "Departemen-Kurir-ResourceGroup"
resource_query {
type = "TAG_FILTERS_1_0"
query = <<JSON
{
"ResourceTypeFilters": [
"AWS::AllSupported"
],
"TagFilters": [
{
"Key": "Departemen",
"Values": ["Kurir"]
}
]
}
JSON
}
}
Lalu inisialisasi folder tersebut menggunakan perintah:
terraform init
Lakukan validasi apakah template yang sudah Anda sesuaikan sudah valid dengan perintah:
terraform validate
Jika sudah valid, lanjutkan dengan membuat resource group di AWS dengan perintah:
terraform apply
Terraform akan menampilkan plan
yang akan dilakukan seperti berikut:
... output dipotong ...
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value:
Silahkan ketikkan yes
lalu tekan tombol enter. Jika berhasil, Anda akan melihat output seperti berikut:
aws_resourcegroups_group.departemen_rg: Creating...
aws_resourcegroups_group.departemen_rg: Creation complete after 7s [id=Departemen-Kurir-ResourceGroup]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Membuat AWS Resource Group menggunakan AWS SDK untuk Python (boto3)
Berikut ini adalah contoh membuat AWS Resource Group menggunakan AWS SDK untuk Python (boto3). Anda juga dapat menggunakan bahasa pemrograman lainnya yang SDK-nya disediakan oleh AWS seperti Java, PHP, Go, Node.js. Salin code di bawah ini ke dalam file misalkan resource_group.py
.
import boto3
client = boto3.client('resource-groups')
client.create_group(
Name='Departemen-ManajemenRisiko-ResourceGroup',
Description='Kelompok resource untuk Departemen Manajemen Risiko',
ResourceQuery={
'Type': 'TAG_FILTERS_1_0',
'Query': '{ "ResourceTypeFilters": [ "AWS::AllSupported" ], "TagFilters": [ {"Key":"Departemen", "Values":["ManajemenRisiko"]} ] }'
}
)
Lalu jalankan code Python tersebut, misalkan:
python resource_group.py