Jika Anda ingin menjalankan situs web di AWS, Anda mungkin tidak memerlukan server! CloudFront CDN AWS dapat menyajikan konten web statis langsung dari bucket S3, sehingga Anda hanya perlu membayar untuk permintaan dan data yang ditransfer (yang bisa gratis).
Bagaimana Cara Kerja Hosting Tanpa Server?
“Serverless” adalah konsep menjalankan aplikasi tanpa mengelola server Linux khusus sendiri, biasanya dengan solusi Platform-as-a-Service seperti AWS’s App Runner atau Lambda Functions. Meskipun Anda dapat menjalankan aplikasi normal seperti NGINX pada mesin virtual EC2, Anda biasanya dapat mengirimkan jenis aplikasi yang sama tanpa menjalankan server.
Solusi tanpa server khusus ini menggunakan Layanan Penyimpanan Sederhana (S3) AWS untuk menghosting konten statis untuk situs web, daripada menyajikannya dari server NGINX itu sendiri. “Statis” berarti Anda menyajikan file dan tidak membuat halaman, yang mencakup situs web HTML + CSS sederhana, serta aplikasi web JavaScript sisi klien lengkap. Khususnya, ini tidak termasuk kerangka kerja hosting sisi server seperti WordPress (PHP), Ruby on Rails, dan ASP.NET, tetapi banyak situs web hanya akan berisi konten statis.
Manfaat dari solusi ini adalah tidak ada ketergantungan pada server Anda sendiri—S3 akan selalu menanggapi permintaan, sehingga Anda dapat memiliki orang sebanyak yang Anda inginkan untuk mengakses situs Anda. Di depan S3, Anda dapat menggunakan CloudFront, solusi Jaringan Pengiriman Konten (CDN) AWS. CloudFront menjalankan ratusan cache tepi, yang semuanya di-cache di S3 untuk Anda, meningkatkan latensi dan throughput, serta mengurangi biaya.
Dalam pengaturan jaringan ini, semua yang menangani permintaan pengguna sepenuhnya tanpa server. Server CloudFront diberdayakan oleh AWS dan akan secara otomatis menyimpan konten dan mengarahkan pengguna ke titik akhir, yang hanya merupakan bucket S3.
Jika Anda perlu menjalankan semacam backend atau API untuk terhubung ke aplikasi web Anda, Anda mungkin dapat menggunakan alat tanpa server lain seperti Fungsi Lambda untuk mencapainya. Penyiapan ini lebih efisien, karena permintaan ke S3 dan API akan diskalakan secara terpisah.
Jika Anda ingin mempelajari lebih lanjut tentang menggunakan API Gateway sebagai antarmuka untuk Fungsi Lambda, Anda dapat membaca panduan kami tentang pengaturannya.
Terlepas dari kesederhanaannya, ini sebenarnya adalah pengaturan tingkat perusahaan yang baik untuk menghosting konten statis di AWS. Ini akan dapat diandalkan, diskalakan dengan sempurna, dan bahkan dapat digunakan dalam penerapan CodePipeline otomatis untuk memperbarui situs Anda dari file sumbernya.
KONEKSI: Cara Menggunakan Gateway API AWS sebagai Frontend untuk Fungsi Lambda
KONEKSI: Cara Mengatur Pipeline Penerapan Otomatis untuk Situs Web S3
Berapa banyak ini?
Karena hosting tanpa server menskalakan persis dengan penggunaan, Anda hanya membayar untuk apa yang Anda gunakan. Ini akan menghemat banyak uang untuk server yang hampir tidak melakukan apa-apa. Anda biasanya akan membayar lebih sedikit per jam CPU dibandingkan dengan melakukannya sendiri, tetapi ini biasanya diimbangi oleh fakta bahwa Anda akan dikenakan biaya yang wajar untuk penggunaan yang tepat.
Namun, ada kemungkinan bagus bahwa itu akan menjadi Gratis. “Tingkat selalu gratis” AWS mencakup bandwidth 100 GB, dan bandwidth CloudFront terabyte penuh. Sebagai perbandingan, sebagian besar tingkatan gratis lainnya dari layanan hosting situs statis (seperti Github Pages dan Firebase) akan memberi Anda sekitar 10 GB.
Bandwidth gratis 1 TB tentu sangat bagus, karena itu berarti sebagian besar situs web yang tidak menyajikan banyak konten akan memiliki buffer yang besar sebelum dikenakan biaya dalam jumlah besar.
Anda masih akan dikenakan biaya untuk permintaan S3, yang akan bertambah, dan jika situs Anda menyimpan ratusan GB konten, Anda mungkin juga akan dikenakan biaya tinggi untuk itu. Namun, penggunaan caching CloudFront yang efektif jika memungkinkan dapat mengurangi jumlah permintaan yang diperlukan ke asal (S3), dan sebagian besar situs akan relatif kecil.
Menyiapkan Situs Web Statis Bucket S3
Untuk memulai, buka S3 Management Console dan buat bucket baru. Anda harus menonaktifkan “Blokir Akses Publik” agar ini terlihat. AWS memperingatkan bahwa ini adalah ide yang buruk kecuali untuk kasus penggunaan seperti hosting situs web statis. Karena itulah yang kami lakukan, Anda dapat mengabaikannya, tetapi Anda pasti tidak ingin mengunggah rahasia ke keranjang—semuanya dapat dibaca.
Itu hanya menghilangkan blok di sini; Anda juga perlu secara eksplisit mengizinkan pembacaan publik dengan kebijakan bucket, di bawah “Izin.” Pastikan untuk mengganti nama sumber daya di sini ke keranjang yang benar.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicReadGetObject", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::example-bucket/*"] } ] }
Selanjutnya, Anda harus mengunggah konten Anda. Anda dapat menarik dan melepas, tetapi jika Anda ingin memindahkan seluruh folder secara manual, Anda dapat menggunakan AWS CLI untuk menyinkronkan bucket S3 ke direktori lokal. Anda juga dapat mengatur bucket ini sebagai output untuk penerapan CodePipeline, yang dapat membangun artefak Anda dari repositori sumber.
KONEKSI: Cara Memasang dan Mengonfigurasi AWS CLI
Kami akan menggunakan API S3 dan mengunggah dasar create-react-app
templat. Setelah disinkronkan, Anda akan melihat index.html
dalam ember S3.
aws s3 sync . s3://bucket-name
Sebelum siap, Anda harus membuka Bucket Properties, gulir ke bawah untuk menemukan “Hosting Web Statis”, dan nyalakan. Anda perlu mengonfigurasi indeks dan dokumen kesalahan, dan Anda juga dapat menulis aturan pengalihan di sini.
Setelah selesai, Anda dapat melihat titik akhir untuk situs web di bawah properti.
Menghubungkan CloudFront CDN
CloudFront memiliki banyak opsi, tetapi pengaturan default akan berfungsi dengan baik untuk situs web S3 sederhana, jadi mengonfigurasinya cukup mudah. Buka konsol CloudFront dan buat distribusi baru.
Anda dapat mengonfigurasi pengaturan untuk cache, tetapi perilaku default akan baik-baik saja bagi kebanyakan orang.
Anda perlu menghubungkan domain kustom Anda, dan ini termasuk membuat sertifikat SSL yang dikelola melalui AWS Certificate Manager (ACM). Anda dapat mengklik tombol ini untuk meminta sertifikat, yang mungkin memerlukan beberapa saat untuk memverifikasi DNS jika Anda tidak menggunakan DNS Route 53 AWS.
Tentu saja, Anda juga harus mengonfigurasi DNS Anda dengan catatan CNAME yang menunjuk ke titik akhir CloudFront.
Setelah sertifikat dan DNS Anda dikonfigurasi, buat distribusinya, dan tunggu sekitar 15 menit hingga CloudFront menerapkannya. Setelah ini selesai, Anda akan dapat mengunjungi titik akhir CloudFront atau domain kustom Anda, dan melihat situs Anda ditayangkan dari bucket S3.