Mengikuti panduan resmi AWS Amplify malah ditagih biaya $1.100
(elliott-king.github.io)- Setelah bereksperimen dengan panduan resmi integrasi OpenSearch di AWS Amplify, biaya Amazon OpenSearch Service naik hingga $1.124,88 dalam sebulan meski pemakaian tidak banyak
- Biaya terjadi karena domain OpenSearch yang dibuat oleh
npx ampx sandboxtetap tertinggal setelah sandbox dihentikan dan dihapus, lalu domain baru ditambahkan pada eksekusi berikutnya sehingga terakumulasi - Konfigurasi resmi secara default membuat instans
r5.large.search, tetapi nilai dasar minimum sekitar $134 per bulan tidak terlihat jelas di kode boilerplate maupun panduan - AWS Support memberikan kredit satu kali untuk OpenSearch dan storage, serta meminta pengaturan AWS Budgets untuk mencegah kejadian serupa
- Saat memakai Amplify dan OpenSearch bersama, perlu memeriksa langsung resource yang tersisa setelah menghapus sandbox dan tipe instans default agar terhindar dari tagihan tak terduga
Biaya OpenSearch yang tak terduga
- Setelah mengikuti panduan resmi integrasi OpenSearch di AWS Amplify, beberapa minggu kemudian tagihan AWS muncul lebih dari $1.200
- Layanan yang terdeteksi lewat permintaan ke Support adalah Amazon OpenSearch Service, dengan total bulanan $1.124,88
- Penulis juga pernah memakai Amplify dan OpenSearch pada 2020, dan untuk penggunaan pribadi biasanya sekitar $50 per bulan—mahal, tetapi bukan sampai $1.200
- Setelah peninjauan detail, AWS Customer Support memproses penyesuaian tagihan dalam bentuk one time courtesy untuk biaya tak terduga tersebut
- Dalam proses Support, diberikan kredit untuk OpenSearch dan layanan storage, serta diminta menyiapkan AWS Budgets
- AWS Budgets dapat memproyeksikan pengeluaran mendatang untuk layanan tertentu atau seluruh AWS, lalu mengirim notifikasi jika diperkirakan melewati anggaran
Resource yang dibuat panduan resmi
- Quickstart Amplify membuat aplikasi contoh TODO note memakai kode yang disediakan AWS, dan Amplify membuat database DynamoDB serta permintaan CRUD terautentikasi
- Bisa dijalankan secara lokal, tetapi Amplify juga membuat domain yang bisa diakses
- Pada tahap konfigurasi OpenSearch, ditulis boilerplate TypeScript untuk mendeklarasikan resource Amplify
- Menetapkan tabel DynamoDB sebagai variabel untuk dirujuk di pipeline
- Membuat instans OpenSearch, index, dan indexMapping
- Menulis kueri untuk mengakses data yang ada di OpenSearch
- Membuat pipeline OpenSearchIngestionService yang menyalin data dari DynamoDB ke OpenSearch
- Konfigurasi terkait dikelola sebagai TypeScript/JavaScript di dalam repositori bersama kode frontend
npx ampx sandboxmenyalakan layanan AWS dan otomatis memodifikasi layanan AWS yang ada ketika mendeteksi perubahan konfigurasi
Domain yang tersisa meski sandbox dihapus
- Konfigurasi ini mencakup database DynamoDB, 1 layanan OpenSearch, 1 pipeline OSIS, role IAM, dan berbagai resource lain
- Boilerplate resmi secara default membuat instans OpenSearch
r5.large.search- Nilai default ini tidak ditampilkan secara eksplisit di kode boilerplate maupun panduan
r5.large.searchmenelan biaya minimum sekitar $134 per bulan
- Setelah selesai bekerja seharian dan menghentikan sandbox dengan
CTRL-C, muncul prompt yang menanyakan apakah ingin menghapus permanen, dan pengguna bisa memilihY - Pada saat itu DynamoDB memang dihapus, tetapi di AWS Console domain OpenSearch tetap tertinggal
- Keesokan harinya saat menjalankan
npx ampx sandboxlagi, instans OpenSearch baru dibuat, dannpx ampx sandbox deletejuga tidak menghapus instans yang lama - Jika proses yang sama diulang, beberapa domain OpenSearch akan tertinggal di latar belakang dalam proyek yang sama dan biayanya terus menumpuk
Kemungkinan bug dan tipe instans default
- Perilaku ini terlihat seperti footgun besar, dan bahkan setelah tiket AWS Support dibuat, saat itu masalahnya belum terselesaikan
- Ada laporan bug lama yang berkaitan, tetapi tidak ditemukan entri dalam 1 tahun terakhir
- Sebagai contoh disebutkan aws-amplify/amplify-cli issue #10523
- Mungkin saja domain OpenSearch terhapus dengan benar di v1 tetapi tidak di v2, namun penyebab pastinya belum dikonfirmasi
- Alur saat ini dijalankan lewat
npx, bukan Amplify CLI - Fakta bahwa
r5.large.searchmenjadi tipe mesin default juga tetap menjadi faktor risiko- Akan lebih baik jika ditetapkan sebagai field wajib tanpa nilai default
- Jika panduan menampilkan
r5.large.searchsebagai default, pengguna akan lebih mudah menyadarinya - Default ini bukan khusus Amplify, melainkan bagian dari AWS CDK, sehingga tidak dianggap sepenuhnya tanggung jawab tim Amplify
Hal yang perlu diperhatikan saat memakai Amplify dan OpenSearch
- Memang sudah diduga bahwa alat yang mempercepat pengembangan teknologi baru bisa lebih mahal daripada bare metal, tetapi biaya kali ini dinilai sudah jauh melampaui itu
- Dengan budget console AWS, pengguna bisa mendapat peringatan saat pengeluaran yang diperkirakan melebihi anggaran
- Hanya dengan mengikuti bagian OpenSearch saja, akan dibuat akun IAM, domain OpenSearch, pipeline OSIS, log group, dan storage S3, sehingga ada banyak resource tersembunyi
- OpenSearch adalah layanan yang sering dipakai pelanggan enterprise, sehingga dianggap sebagai layanan “lanjutan” dan pengguna mungkin diasumsikan lebih memahami ekosistem AWS
- OpenSearch dipakai karena dukungan kueri bounding-box
geo_point, tetapi penulis tidak yakin apakah produk yang lebih sederhana sebenarnya sudah cukup - Menurut pembaruan, panduan AWS kemudian diperbaiki; tiga bulan sebelumnya saat masalah pertama kali diangkat belum diperbarui, tetapi sebelum tulisan dipublikasikan tampaknya pekerjaan PR dokumentasi sudah dimulai
1 komentar
Opini Hacker News
Peringatan tagihan itu seperti lelucon; yang sebenarnya dibutuhkan adalah batas pengeluaran keras
Saat onboarding, mereka juga harus menyediakan cara untuk menetapkan batas itu
Membangun bisnis di atas cek kosong dan penagihan tak disengaja itu mencurigakan, dan juga menjadi hambatan adopsi yang besar
Semakin sering developer melihat kasus seperti “saya mengikuti tutorial 20 menit lalu ditagih sebesar tabungan seumur hidup; kali ini dukungan pelanggan membebaskannya, tapi lain kali sepertinya mereka akan mengambil rumah saya juga”, semakin mereka tidak ingin mengeksplorasi produk AWS
Yang mengalihkan risiko ke pelanggan seperti AWS atau DigitalOcean, dan yang menjual paket harga mencurigakan “tanpa batas”·“tanpa metering”
Keduanya bukan bentuk yang saya inginkan
Saya berharap ada penyedia yang memungkinkan perencanaan kapasitas dengan benar lewat batas yang jelas dan terdokumentasi, sementara risiko ketersediaan ditanggung pelanggan tetapi risiko finansial ditanggung penyedia
Kalau tidak berlebihan, saya juga bersedia membayar biaya tetap yang lebih tinggi
Hampir tidak ada penagihan tak disengaja yang murah dibandingkan downtime atau kehilangan data pada aplikasi penting
Meski hanya berupa opsi, tim akuntansi bisa menekan agar itu digunakan, dan saat terjadi masalah ada risiko berujung pada insiden kehilangan data
Ini mungkin masuk akal untuk penyedia cloud yang berfokus pada developer indie atau UKM
Ini termasuk salah satu urusan internal yang cukup menarik yang saya ketahui dari sana
Lebih aman memakai VPS yang murah dan berbiaya tetap daripada menyesal
Meminta Amazon melakukan sesuatu tidak banyak artinya
Amazon dan perusahaan lain harus dipaksa lewat hukum untuk menghormati uang pengguna
Perusahaan pada dasarnya tidak melakukan hal yang etis atau baik bagi ekonomi, melainkan hal yang menghasilkan uang
Dibandingkan ini memang sepele, tetapi ketika mencoba men-deploy aplikasi ke ECS, saya mendapat tagihan 100 dolar dan memutuskan tidak akan memakai AWS lagi
Error yang membuat layanan tidak berjalan memang masalah di aplikasi saya, tetapi log CloudWatch hanya keluar sekitar 20%, jadi untuk mendapatkan log saya harus redeploy lima kali, memperbaiki, lalu redeploy lima kali lagi
Setiap deployment yang gagal ditagih, dan setelah sekitar dua hari bergulat saya menghapus akun lalu men-deploy ke DigitalOcean App Platform
Di sana deployment juga gagal karena error aplikasi, tetapi log selalu muncul setiap kali; dalam 10 menit saya memperbaikinya dan menjalankannya, dengan total tagihan hanya beberapa sen
Sejak hari itu saya bertekad tidak akan pernah memakai AWS jika ada pilihan, dan juga tidak akan merekomendasikannya
Untuk pengembangan dan pengujian, model penagihan berbasis konsumsi sangat murah
Saya tidak tahu bagaimana untuk workload besar, tetapi ditagih per deployment itu aneh
Untuk proyek besar mungkin dukungannya lebih baik, tetapi untuk skala kecil hingga menengah, GCP jauh lebih baik
Ia punya komponen dasar yang sesuai dengan cara penggunaan container saat ini, dan juga ada BigQuery
Sepertinya ada bug yang jelas pada skrip yang dijalankan perintah
npxituPenulisnya benar; kalau ini tutorial, 100% harus memilih resource termurah, dan menjalankan sub-skrip
deleteharus membersihkan resourceTidak adil mengharapkan developer, setelah menjalankan hal seperti ini, memeriksa seluruh akun AWS secara paranoid untuk mencari resource yang tersisa
Kalau sebuah startup berperilaku seperti ini, apakah orang akan menganggapnya sekadar “memang hal seperti ini terjadi, jadi harus hati-hati”?
Saya tidak mengerti mengapa AWS diberi standar yang berbeda
Tidak ada cara mudah untuk melihat semua resource yang saat ini sedang saya bayar
Kalaupun ada, saya belum menemukannya
Tanpa ringkasan yang mudah dipahami, rasanya saya tidak sepenuhnya mengendalikan akun saya
Saya juga melihat apa yang terjadi jika pemakaian melebihi itu, dan apakah penagihan tak terduga bisa dibatasi
Kalau tidak bisa, saya mencari yang lain
Sejak perubahan billing Google Maps beberapa tahun lalu, kami juga sangat berhati-hati untuk terlalu terikat pada layanan Google yang “gratis”, dan pada akhirnya itu memakan biaya besar
Selama ini saya harus mengecek per layanan dan per region, dan itu membosankan sekaligus rawan error
Bahkan kalau mereka menganggapnya bug, prioritasnya pasti jauh lebih rendah daripada hal lain yang langsung merugikan laba-rugi mereka
Namun secara realistis, itu masuk akal
Saat membuat sesuatu di AWS, saya memperlakukan AWS seperti lembaga keuangan bermusuhan yang lepas kendali
Karena kasus seperti ini, sudah bertahun-tahun saya menunda untuk mendalami AWS
Seharusnya ada kurikulum standar yang memungkinkan orang bereksperimen secara gratis tanpa meminta informasi kartu kredit
Namun sepertinya ada orang-orang kantoran yang menghitung bahwa mereka bisa menarik ribuan dolar dari sana-sini sebagai “kesalahan pengguna”
Tagihan seperti ini sulit dibantah, dan dalam beberapa kasus bahkan mustahil
Saya rasa bukan cuma saya yang menghindari lingkungan AWS karena ketakutan yang wajar bahwa suatu hari bisa bangun dan melihat tagihan besar
Kemungkinan besar mereka menilai memproses pengembalian dana lebih ringan bebannya daripada menyediakan tutorial yang akurat dan murah
Itu tidak membenarkan tindakannya, tetapi saya pernah berhasil membatalkan tagihan 600 dolar yang sebenarnya sah muncul saat menggunakan AWS Textract
Saat itu saya bekerja di perusahaan bernilai puluhan miliar dolar
Daftar harga mudah diakses dan tidak selalu mudah dipahami, tetapi sebagian besar biaya meningkat hampir secara linear, sehingga relatif mudah diuji
Sebaiknya hindari layanan wrapper seperti AWS Amplify, CloudFormation, dan berbagai jenis Stack
Gunakan layanan intinya secara langsung
Setiap layanan punya API, dan mendapatkan API key yang terikat ke pengguna IAM semudah mengklik tombol
Sisanya bisa dikelola dengan caching yang tepat dan menyesuaikan model biaya dengan model pendapatan
Buat biaya layanan yang autoscaling menjadi proporsi pendapatan yang hampir tetap, terlepas dari permintaan saat ini
Bandwidth adalah mimpi buruk yang sebenarnya di AWS, tetapi konsol menyediakan diskon jangka panjang otomatis, dan melalui perwakilan sales Anda bisa mendapatkan diskon kontrak yang sedikit lebih baik
Karena itu saya cenderung menghindari EC2; bandwidth internal EC2 juga lebih mahal, jadi menurut saya lebih baik memakai Lambda + S3 + CloudFront secara langsung
Setelah sekitar 3 bulan, saya menjadi cukup mudah memprediksi kombinasi layanan mana yang paling hemat biaya saat mengimplementasikan fitur baru yang berhadapan dengan pengguna
Mungkin bisa dipakai untuk tujuan seperti itu, tetapi saya belum mencobanya langsung jadi tidak yakin
Dari pengalaman saya, AWS lebih cenderung menghindari masalah yang bisa menimbulkan biaya lebih besar akibat rusaknya reputasi
AWS tidak murah, dan dalam beberapa kasus sangat mahal terutama untuk biaya transfer data, tetapi menurut saya menipu pelanggan agar secara tidak sengaja menghabiskan beberapa ratus dolar lebih banyak bukanlah cara kerja mereka
Menurut saya ini sangat khas AWS
Beberapa bulan lalu saya mengikuti panduan quick start SageMaker resmi untuk menjalankan Llama 2; memang benar-benar cepat menyala, tetapi keesokan harinya saya melihat biaya 400 dolar per hari sedang berjalan
Tagihannya berhasil dibatalkan, tetapi saya jelas belajar bahwa panduan resmi tidak boleh dipercaya begitu saja
Pada masa awal produk, sekitar 2017–2018, pengaturannya cukup intuitif
Notebook instance, inference, REST API untuk serving, sedikit EFS, dan fakta bahwa pusat layanannya adalah S3 semuanya jelas
Harganya juga tertutup, jadi tidak ada kejutan
Secara keseluruhan rasanya seperti DigitalOcean, dan data scientist dengan pengetahuan dasar infrastruktur serta rasa ingin tahu pun bisa membuat konfigurasi yang murah, dapat diprediksi, dan sederhana
Sekarang ada Wrangler, Feature Store, RStudio; pengalaman pengguna konsol notebook buruk sekali, dan di dalamnya berbagai layanan memindahkan data lalu menagihnya
Karena keadaan tertentu saya harus mengirim permintaan HTTP mentah alih-alih SDK AWS yang bongsor, dan gagal dengan header
content-type: application/jsontetapi berhasil dengancontent-type: application/x-amz-json-1.0Saya benar-benar berharap nonsense seperti ini berhenti
Terlalu bongsor tanpa manfaat yang jelas, terlalu rumit, atau banyak implementasi buatan sendiri yang aneh
Secara internal sebagian besar aplikasi memakai framework Coral lama, dan menggunakan format JSON ini yang memiliki bentuk input, output, dan error yang terdefinisi dengan baik
Semua panduan resmi AWS dirancang agar Anda memakai sebanyak mungkin layanan AWS, dan risiko pengeluaran pun meningkat sebanding dengan itu
Anda harus sangat kritis terhadap apa pun yang direkomendasikan AWS: default GUI, tool CLI, panduan, arsitektur rekomendasi, dan sebagainya
Ada alasan mengapa perusahaan punya posisi bergaji tinggi untuk memandu rekan kerja agar menggunakan AWS secara hemat biaya dan berisiko rendah
Dalam deployment kecil atau pengujian, bagian paling mahal hampir selalu hal-hal sampingan, atau layanan terbaru yang direkomendasikan alih-alih alternatif yang lebih sederhana
Jika Anda memakai OpenSearch karena kueri bounding box
geo_point, bagaimana dengan PostgreSQL + PostGIS?https://postgis.net/docs/using_postgis_query.html
Menurut saya setup yang tanpa hambatan seperti ini, pengalaman dan antarmuka pengguna yang tidak intuitif, rendahnya kewaspadaan terhadap pendaftaran kartu kredit, serta penagihan terbundel antar layanan seperti AWS Batch + Lambda + EC2 adalah bagian dari model bisnisnya
Saya tidak tahu harus menggambarkannya bagaimana, tetapi ini mirip taman hiburan modern: setelah membayar tiket masuk, semua wahana dan bahkan toilet pun harus dibayar terpisah
Model penagihan cloud memindahkan tanggung jawab ke pengguna atas nama “fleksibilitas” dan “kustomisasi”
Bayangkan perusahaan rental mobil menagih setiap komponen dalam satuan milidetik—putaran camshaft mesin, putaran ban, kerja wiper, waktu pemanas kursi—lalu berkata pelanggan “mengendalikan” pemakaian dan anggarannya karena bisa memasang notifikasi untuk tiap item
Sejak default-nya, ini adalah model biaya yang berbahaya dan memusuhi pengguna