Untuk memodifikasi instance type RDS kita bisa gunakan AWS CLI menggunakan command aws rds modify-db-instance.
Ditutorial ini kita akan memodifikasi instance DB dari tipe db.r5.8xlarge
menjadi db.r5.4xlarge
(downgrade). Berikut spesifikasi lengkapnya:
- MySQL 8.0.36
- DB identifier: my-db
- Instance type: db.r5.8xlarge
- Region code: ap-southeast-1 (singapore)
Note: *Pastikan disini kita sudah memiliki server sendiri (EC2/semacamnya) untuk menjalankan AWS CLI nantinya.
Untuk menggunakan AWS CLI, ada beberapa yang harus dipersiapkan dari sisi IAM (Identity and Access Management), berikut:
- username (access key & secret access key)
- policy
Setelah 2 hal tersebut terbuat, baru kita bisa login ke AWS CLI diterminal menggunakan access key dan secret access key dan menjalankan command aws rds modify-db-instance
.
Buat username IAM
- Masuk ke IAM Dashboard
- Pada menu sebelah kiri, Access Management > Users > Klik Create User
- Contoh disini kita buat username dengan nama user-modify-rds-instance, klik Next

- Pada halaman Set permissions klik Next saja.
- Pada halaman selanjutnya klik Create User
- Setelah itu user terbuat

Membuat Access Key untuk User
- Masuk ke halaman detail user: user-modify-rds-instance
- Pilih tab Security Credentials
- Pada bagian Access Keys klik tombol Create access key
- Pilih Use Case: Command Line Interface (CLI) dan check box: I understand the above recommendation and want to proceed to create an access key, klik Next

- Pada halaman selanjutnya klik Create access key
- Akan terbuat 2 key, yaitu Access key dan Secret access key. Copy kedua key tersebut (wajib), nanti kita akan login ke AWS CLI menggunakan key tersebut. Klik Done

Buat Policy IAM dan Kaitkan ke User
Selanjutnya kita buat policy (hak akses) untuk bisa memodifikasi instance RDS.
- Masuk ke dashboard IAM
- Pada Access Management > Policies > Create Policy
- Pilih tab JSON, lalu masukkan JSON policy berikut:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowModifyRDSInstance",
"Effect": "Allow",
"Action": [
"rds:Describe*",
"rds:ModifyDBInstance"
],
"Resource": "arn:aws:rds:ap-southeast-1:193xxx:db:my-db"
}
]
}
Penjelasan:
Sid, berinama (bebas) misal AllowModifyRDSInstance
Effect, Allow
artinya semua value dalam field Action[] akan diijinkan saat policy ini dijalankan
Action[], Hak akses yang didapat. rds: describe
bisa melihat deskripsi instance RDS, rds:ModifyDBInstance
bisa memodifikasi instance
Resource: policy ini hanya bisa dijalankan pada resource tertentu saja. Contoh dijalankan di region ap-southeast-1
dengan akun AWS 193xx
dan database identifier my-db
. *Pastikan kalian benar mengisi resourcenya (region code, akun aws dan db identifiernya). Klik Next

- Berinama policy dengan nama test-modify-rds-instance, lalu klik Create policy

Kaitkan Policy ke User
- Setelah policy terbuat, kaitkan policy tersebut ke user: user-modify-rds-instance agar user tersebut mendapat hak akses untuk memodifikasi instance RDS
- Masuk ke detail user: user-modify-rds-instance
- Pada tab Permissions, klik Add permissions
- Pada Permission options pilih Attach policies directly, lalu cari policy yang sudah kita buat tadi (test-modify-rds-instance), klik Next

- Kemudian dihalaman selanjutnya klik Add permissions
- Sekarang policy sudah berhasil diattach/kaitkan ke user: user-modify-rds-instance

Modifikasi instance RDS dengan AWS CLI
Langkah terakhir, jalankan AWS CLI dengan command aws rds modify-db-instance
.
Kita anggap AWS CLI sudah terinstall diserver. Versi yang saya gunakan adalah:
aws-cli/1.22.34 Python/3.10.12 Linux/6.2.0-1018-aws botocore/1.23.34
- Login ke AWS CLI menggunakan access key dan secret access key yang sudah kita dapat sebelumnya. Jalankan command berikut diterminal:
aws configure --profile test-modify-rds-instance

- Kemudian kita bisa modifikasi instance RDS dengan command berikut:
aws rds modify-db-instance --db-instance-identifier my-db --db-instance-class db.r5.4xlarge --apply-immediately --profile test-modify-rds-instance
- Buka dashboard RDS, kita bisa lihat DB identifier my-db statusnya sedang Modifying

- Tunggu beberapa saat, maka spek instance akan turun menjadi
db.r5.4xlarge

Kendala
Jika menemukan kendala saat menjalankan aws rds modify-db-instance
, misal mendapat error seperti ini:
An error occurred (AccessDenied) when calling the ModifyDBInstance operation: User: arn:aws:iam::193xx:user/user-modify-rds-instance is not authorized to perform: rds:ModifyDBInstance on resource: arn:aws:rds:ap-southeast-1:193xx:db:my-db because no identity-based policy allows the rds:ModifyDBInstance action
Pastikan:
- Policy sudah diattach ke user
- Policy JSON sudah diset dengan benar (region code, akun aws dan db identifiernya)
- Pastikan menggunakan parameter
--profile test-modify-rds-instance
saat menjalankanaws rds modify-db-instance