AWS Untuk Pemula: S3, Pendeduplikasian, dan Presigned URLs
Berhenti membina aplikasi mainan. Mula membina sistem production.
Jika pelayan anda boleh dibuang (disposable), fail anda tidak boleh disimpan di dalam cakera kerasnya. Anda memerlukan AWS S3. S3 ialah storan objek. Ia berfungsi secara bebas daripada pelayan anda. Ini memastikan fail anda tetap selamat walaupun pelayan anda terhenti (crash) atau hilang.
Berikut adalah cara untuk membina aliran muat naik fail yang profesional:
Gunakan S3 Buckets dan Keys Bucket ialah bekas (container) anda. Key ialah laluan penuh ke fail anda. S3 tidak mempunyai folder sebenar. Ia menggunakan awalan (prefixes) dalam struktur rata (flat structure). Anda boleh menyusun fail mengikut jenis, seperti
images/ataudocuments/, untuk memastikan semuanya kemas.Laksanakan Pendeduplikasian Kandungan Jangan bayar untuk fail yang sama dua kali. Gunakan algoritma SHA-256 untuk mencipta cap jari (fingerprint) unik bagi setiap fail. Jika dua pengguna memuat naik imej yang sama tepat, hash tersebut akan menjadi serupa. Semak pangkalan data anda untuk hash ini sebelum memuat naik ke S3. Jika hash sudah wujud, gunakan semula fail sedia ada.
Alirkan (Stream) Fail Besar Jangan sesekali memuatkan video 200MB ke dalam RAM pelayan anda hanya untuk melakukan hashing. Gunakan Node.js streams untuk memproses fail dalam cebisan (chunks) kecil. Ini memastikan pelayan anda kekal pantas dan mengelakkan kegagalan (crash).
Tetapkan Had Saiz Fail Semakan di bahagian hadapan (frontend) hanyalah untuk pengalaman pengguna (UX). Ia bukan keselamatan. Anda mesti menetapkan had saiz dalam tiga lapisan: • Pihak klien untuk UX. • Pengesahan backend untuk menolak permintaan yang tidak sah dengan lebih awal. • Syarat S3 melalui presigned URLs untuk menghentikan muat naik yang melebihi saiz di punca asal.
Gunakan Presigned URLs untuk Keselamatan Jangan jadikan bucket anda awam. Pastikan "Block all public access" sentiasa diaktifkan. Sebaliknya, jana presigned URL. Ini memberikan pengguna kebenaran sementara untuk memuat naik satu fail khusus. Anda boleh menetapkan masa tamat tempoh. Gunakan tempoh yang singkat untuk fail kecil dan tempoh yang lebih lama untuk muat naik video yang besar.
Sahkan Muat Naik Jangan sesekali mempercayai klien. Selepas muat naik, gunakan arahan
HeadObjectuntuk menyemak sama ada fail tersebut benar-benar wujud dalam S3 dan jika saiznya sepadan dengan rekod anda.
Aliran Production:
- Klien meminta URL muat naik.
- Backend mengesahkan saiz, jenis, dan menyemak pendua.
- Backend menjana presigned URL yang terhad (scoped).
- Klien memuat naik fail secara terus ke S3.
- Backend mengesahkan fail wujud melalui
HeadObject.
Bina sistem yang selamat secara lalai (secure by default).
Sumber: https://dev.to/surajrkhonde/aws-for-newbies-episode-2-3jg5
