AWS ES Domain

Saya mencoba menjelaskan langkah-langkah apa yang harus dilakukan untuk setup layanan AWS Elasticsearch. Kondisinya saya sudah mempunyai sebuah self-managed Elasticsearch cluster. Snapshot setiap jam dari Elasticsearch cluster tersebut sudah tersimpan didalam layanan AWS S3. Jadi nantinya saya akan melakukan migrasi dari self-managed Elasticsearch cluster ke AWS Elasticsearch Service

1: Membuat Elasticsearch domain


Pertama kali kamu harus membuat sebuah Elasticsearch domain. Domain ini adalah sebuah cluster yang nanti memiliki data nodes dan master nodes.

1.1: Deployment type

Pertama kali kamu harus memilih Deployment type, saya memilih Development and testing karena untuk mencoba saja.

1.2: Version

Untuk Version saya memilih 7.8 (saat tulisan ini dibuat adalah latest). Karena self-managed Elasticsearch cluster saya memakai versi 6.x, sehingga ketika akan melakukan migrasi data masih bisa diterima oleh versi 7.x. Tetapi tidak akan diterima oleh versi 8.x.

1.4: Elasticsearch domain name

Isi nama domain yang akan kamu buat, misalnya es-aws-1. Kamu nantinya bisa membuat beberapa domain, jadi kalau saya lebih menyukai terdapat penomoran pada namanya.

1.5: Custom endpoint

Kamu bisa menggunakan Endpoint sendiri, dengan mengetik nama host dari domain yang kamu punya. Tetapi host tersebut harus memiliki sertifikat SSL yang sudah terdaftar di Amazon Certificate Manager. Biarkan jika akan menggunakan Endpoint yang dibuatkan oleh AWS.

1.6: Data nodes

Tentukan Instance type yang akan dipakai sebagai Data nodes dan jumlahnya, sesuaikan dengan kebutuhan aplikasi kamu. Untuk Production disarankan minimal 3 nodes, baca Choosing Instance Types and Testing. Saya memilih t3.small.elasticsearch karena hanya untuk mencoba saja dan hanya membutuhkan 1 (satu) node.

1.7: Data nodes storage

Pilih EBS, tipe General Purpose (SSD). Untuk besarnya tempat penyimpanan bisa baca Sizing Amazon ES Domains. Saya membutuhkan hanya 10 GiB untuk mencoba saja.

1.8: Dedicated master nodes

Kamu harus memiliki Dedicated master nodes untuk Production sesuai rekomendasi yang tertera. Sedangkan saya karena sebelumnya memilih Development and testing, maka tidak memerlukan Dedicated master nodes.

1.9: Snapshot configuration

Untuk versi 5.3 dan setelahnya akan dilakukan snapshot secara otomatis setiap jam, dan tersimpan selama 14 hari dengan maksimal 336 snapshot. Karena memilih versi 7.8, maka tidak terdapat opsi untuk melakukan konfigurasi. Kamu nanti bisa membuat konfigurasi snapshot secara manual langsung terhadap Elasticsearch cluster yang telah sukses dibuat, dimana S3 sebagai media penyimpanannya.

1.10: Network configuration

Kamu direkomendasikan untuk memilih VPC access, karena menambah lapisan keamanan, jadi hanya sesuatu yang berada di-VPC yang sama seperti layanan AWSEC2, Lambda, dan lainnya yang bisa mengakses Elasticsearch cluster ini dan .

Jika kamu memilih VPC access, maka bisa memilih Security Groups yang akan dipakai. Sebagai contoh didalam Security Groups kamu bisa menentukan Instances EC2 atau IP Address mana yang diperbolehkan mengakses Elasticsearch cluster ini. Kamu dapat memilih lebih dari 1 (satu) Security Group. Buat terlebih dahulu sebuah Security Group jika belum mempunyai, dengan isian yang sudah tersedia, hanya mengisi nama dan deskripsi saja.

1.11: Fine–grained access control

Kamu disarankan untuk mengaktifkan fitur ini.

Sedangkan untuk Master user, jika kamu memilih IAM ARN, maka hanya bisa menggunakan IAM Roles atau IAM Users. Dimana untuk nantinya mengakses Kibana, kamu harus mengaktifkan fitur otentikasi dari SAML atau Amazon Cognito. Dengan memilih IAM ARN, ketika akan mengakses Elasticsearch cluster ini, jika kamu menggunakan:

Jika ingin lebih mudah, kamu bisa memilih Create master user, nantinya kamu harus memakai <username>:<password> ketika akan mengakses Elasticsearch cluster ini dengan HTTP basic authentication.

1.12: SAML authentication for Kibana dan Amazon Cognito authentication

Saat tulisan ini dibuat saya belum mencoba kedua fitur ini. Silahkan kamu tentukan sendiri sesuaikan dengan pilihan sebelumnya mengenai master user atau biarkan saja.

1.13: Access policy

Kamu bisa menambah lapisan keamanan dengan menentukan siapa atau apa yang diperbolehkan mengakses Elasticsearch cluster ini. Jika kamu mengaktifkan Fine–grained access control pada opsi sebelumnya, tidak disarankan untuk menggunakan IAM-based access policy, karena akan terjadi konflik. Jadi kamu cukup menentukan IPv4 address atau CIDR block.

Kamu bisa memilih Allow open access to the domain terlebih dahulu, dan nanti bisa menggubah opsi Access policy jika Elasticsearch cluster ini sudah dicoba.

1.14: Encryption

Jika kamu mengaktifkan Fine–grained access control, maka semua opsi enkripsi wajib diaktifkan. Kemudian tentukan KMS master key yang akan digunakan, atau biarkan pilihan Default.

1.15: Review

Periksa kembali semua opsi yang telah kamu tentukan. Kemudian Confirm jika sudah yakin.

2: Menggunakan Elasticsearch cluster / domain


Pada tab Overview, tunggu hingga Domain satus sudah Active sebelum mulai menggunakan.

3: Migrasi data ke Amazon Elasticsearch Service


Silahkan lanjutkan membaca bagian ini pada halaman Migrasi data ke Amazon Elasticsearch Service