Amazon S3
Tujuan
Siapkan sanitasi file otomatis di bucket Amazon S3 menggunakan Glasswall Halo API melalui fungsi notifikasi peristiwa dan fungsi lambda.
Panduan Integrasi Amazon S3
- Prasyarat
- Langkah 1 - Buat bucket S3
- Langkah 2 - Buat antrean SQS
- Langkah 3 - Aktifkan notifikasi peristiwa
- Langkah 4 - Buat fungsi Lambda
- Langkah 5 - Konfigurasikan peran eksekusi
- Langkah 6 - Unggah kode Lambda
- Langkah 7 - Tambahkan pemicu
- Langkah 8 - Uji
Prasyarat
-
Akun AWS dan peran IAM (Identity and Access Management) dengan policy izin berikut:
- Amazons3fullaccess: untuk membuat dan mengonfigurasi bucket S3.
- Amazonsqsfullaccess: untuk membuat dan mengonfigurasi antrean SQS yang digunakan untuk memicu.
- Awslambda_fullaccess: untuk membuat dan mengonfigurasi fungsi lambda yang menjalankan panggilan ke Glasswall Halo.
- (Opsional) iamfullaccess: diperlukan untuk membuat dan mengonfigurasi peran eksekusi default untuk fungsi baru. Jika peran ini tidak dapat ditetapkan, ikuti langkah-langkah yang relevan dalam panduan ini untuk meminta pembuatan peran lalu gunakan peran yang telah dibuat sebelumnya ini.
-
Akses terautentikasi ke API sinkron Glasswall Halo.
Langkah 1 - Buat bucket S3
Pertama, Anda perlu membuat bucket S3 tempat file sumber ditambahkan, dan ini akan menjadi sumber peristiwa yang memicu alur kerja.
-
Masuk ke AWS management console.
-
Buka konsol Amazon S3 dengan memasukkan “S3” di bilah pencarian atau dengan memilih S3 di menu Services > Storage.

-
Di panel navigasi kiri, pilih Buckets.
-
Klik Create bucket. Halaman Create bucket akan terbuka.

- Untuk nama bucket, masukkan nama untuk bucket Anda. Nama bucket harus:
- Unik dalam sebuah partisi. Partisi adalah pengelompokan region; AWS saat ini memiliki tiga partisi:
aws(region standar),aws-cn(region China), danaws-us-gov(region AWS govcloud (us)). - Panjangnya antara 3 dan 63 karakter.
- Hanya terdiri dari huruf kecil, angka, titik (.), dan tanda hubung (-). Untuk kompatibilitas terbaik, kami menyarankan agar Anda menghindari penggunaan titik (.) dalam nama bucket, kecuali untuk bucket yang hanya digunakan untuk hosting situs web statis.
- Diawali dan diakhiri dengan huruf atau angka.
Nama bucket bersifat unik secara global, validasi konsol AWS akan memberi tahu Anda jika nama bucket yang dimasukkan sudah digunakan.
Catatan: setelah Anda membuat bucket, Anda tidak dapat mengubah namanya. Untuk informasi selengkapnya tentang penamaan bucket, lihat aturan penamaan bucket.
- Untuk Region, pilih region AWS tempat bucket akan berada.
Catatan: untuk meminimalkan latensi dan biaya serta memenuhi persyaratan regulasi, pilih region yang dekat dengan Anda. Objek yang disimpan di suatu region tidak pernah meninggalkan region tersebut kecuali Anda secara eksplisit mentransfernya ke region lain. Untuk daftar region AWS Amazon S3, lihat endpoint layanan AWS dalam referensi umum amazon web services.
Jika Anda memerlukan pengaturan tambahan untuk bucket Anda, seperti kontrol akses, logging, versioning, atau enkripsi, Anda dapat mengonfigurasinya sesuai kebutuhan.
Selain itu, di bagian set permissions, Anda dapat menentukan siapa yang memiliki akses ke bucket dan objeknya dengan memilih opsi seperti bucket policies, access control lists (ACLs), atau block all public access. Pastikan Anda meninjau dan menetapkan konfigurasi ini sesuai kebutuhan Anda sebelum melanjutkan.
Untuk informasi yang lebih rinci tentang membuat dan mengonfigurasi bucket S3, silakan merujuk ke panduan pengguna AWS S3.
Langkah 2 - Buat antrean SQS
Setelah bucket S3 dibuat, antrean Amazon SQS (Simple Queue Service) perlu dibuat. Di sinilah notifikasi peristiwa dari bucket S3 sumber Anda akan dikirim, lalu diambil oleh fungsi Lambda.
-
Buka konsol Amazon SQS dengan mencari “SQS” di bilah pencarian atau dengan memilih Simple Queue Service di menu Services > Application integration.
-
Klik Create queue.

- Pilih di antara dua jenis antrean SQS: Standard atau FIFO.
Antrean Standard menyediakan throughput tinggi dan pengurutan best-effort, sedangkan antrean FIFO menjamin pemrosesan “exactly once” dan pengurutan ketat berdasarkan message group ID. Jenis antrean standard ditetapkan secara default.
Catatan: Anda tidak dapat mengubah jenis antrean setelah dibuat.
- Masukkan Name yang unik untuk queue Anda; misalnya s3cdrevents.
Nama queue FIFO harus diakhiri dengan sufiks .fifo. Sufiks tersebut dihitung dalam kuota nama queue 80 karakter. Untuk menentukan apakah sebuah queue adalah fifo, Anda dapat memeriksa apakah nama queue diakhiri dengan sufiks tersebut.
-
Console menetapkan nilai default untuk configuration parameters queue. Jika Anda sudah familier dengan SQS, di bawah Configuration Anda dapat menetapkan nilai baru untuk parameter tersebut. Untuk keperluan use case ini, kami akan membiarkan sebagian besar tetap default.
-
Gulir ke bagian Access policy.
-
Pilih opsi Advanced untuk mengedit JSON policy melalui advanced editor agar layanan S3 dapat memublikasikan pesan ke queue.
-
Tambahkan koma setelah elemen “__owner_statement” lalu tempel cuplikan JSON berikut:
{
"Sid": "AllowS3ToPublish",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "sqs:SendMessage",
"Resource": "<ARN-OF-QUEUE>"
}
Catatan: pastikan Anda mengganti arn-of-queue dalam cuplikan dengan ARN (Amazon Resource Name) queue; ini akan sama dengan resource ARN dari owner statement dalam JSON yang ada.

- Tinjau nilai konfigurasi yang telah Anda masukkan lalu klik Create queue.
Catat ARN untuk queue tersebut untuk digunakan nanti.
Untuk informasi yang lebih rinci tentang membuat dan mengonfigurasi Amazon SQS, silakan merujuk ke AWS S3 user guide.
Langkah 3 - Aktifkan notifikasi event
Langkah berikutnya adalah mengaktifkan notifikasi event, agar queue SQS Anda menerima notifikasi setiap kali file ditempatkan di source bucket S3.
-
Buka console Amazon S3 dan dari daftar Buckets, pilih bucket yang Anda buat sebelumnya.
-
Dari halaman Bucket overview, pilih tab Properties.
-
Gulir ke bawah ke bagian Event notifications lalu klik Create event notification.
-
Di bagian General configuration, tentukan Event name yang deskriptif untuk notifikasi event Anda. Secara opsional, Anda juga dapat menentukan Prefix dan Suffix untuk membatasi notifikasi pada objek dengan key yang diakhiri karakter yang ditentukan.
-
Di bagian Event types, Anda dapat memilih satu atau beberapa jenis event yang ingin Anda terima notifikasinya. Dalam contoh ini, kami berfokus pada event Object creation sehingga objek baru atau yang disalin menghasilkan notifikasi yang memicu CDR dijalankan pada objek tersebut.
Pilih kotak centang All object create events.

- Terakhir, di bagian Destination, pilih tujuan notifikasi event – dalam hal ini antrean SQS yang telah kita buat dan konfigurasi.
Pilih SQS queue sebagai tujuan Anda dan pilih antrean SQS yang sebelumnya telah kita buat dan konfigurasi.
- Pilih Save changes, dan Amazon S3 akan mengirim pesan uji ke tujuan notifikasi event.
Notifikasi event dibuat, dan Anda akan dikembalikan ke properti bucket S3.
Untuk informasi yang lebih rinci tentang notifikasi event, silakan lihat panduan pengguna AWS S3.
Langkah 4 - Membuat fungsi Lambda
Setelah notifikasi event diaktifkan, Anda perlu membuat fungsi Lambda baru.
-
Buka layanan Lambda dengan mencari “Lambda” di bilah pencarian atau dengan memilih Lambda di menu Services > Compute.
-
Di panel navigasi kiri, pilih Functions.
-
Klik Create function.
-
Pada halaman Create function Anda akan melihat tiga opsi; pilih Author from scratch.
-
Masukkan Function name yang sesuai untuk fungsi Lambda Anda; misalnya CDR-file.

- Berikutnya, pilih Runtime yang sesuai dengan bahasa yang ingin Anda gunakan.
Catatan: Anda dapat menemukan contoh kode melalui Glasswall github. Anda akan dapat mengunggah kode pada langkah berikutnya.
-
(Opsional) Jika Anda familier dengan fungsi Lambda, Anda dapat menetapkan konfigurasi tambahan melalui opsi General configuration di bawah tab Configurations.
-
Klik Create function. Anda akan tiba di halaman Function overview.

- Assigning the execution role can be done in two ways:
- Meminta dan menetapkan role baru menggunakan iamfullaccess
- Assigning an already existing role
- Ini dapat dilakukan melalui layanan Lambda: Function overview > Configuration > Permissions > Edit.
[Opsional] iamfullaccess
Jika Anda tidak dapat diberi izin iamfullaccess, silakan minta agar dibuatkan role dengan izin berikut:
Logs :createlogstream
Logs :putlogevents
Berikan JSON yang telah dilengkapi dari langkah Configure execution role kepada pengguna dengan hak istimewa untuk membuat role.
Role baru ini dapat dipilih dari antarmuka pengguna pembuatan Lambda sebagai pengganti mengizinkan role default baru dibuat.
- Gulir ke bagian Change default execution role.
- Pilih Use an existing role dan pilih role yang telah dibuat sebelumnya.
Langkah berikutnya untuk mengonfigurasi execution role sekarang dapat dilewati dan Anda dapat melanjutkan ke Step 6 - Upload lambda code.
Langkah 5 - Konfigurasikan execution role
Untuk mengizinkan fungsi Lambda mengakses layanan AWS (S3, SQS), Anda perlu menetapkan izin tambahan ke execution role Lambda.
-
Di konsol AWS Lambda, pilih Functions di panel navigasi kiri.
-
Pada halaman detail fungsi Lambda Anda, pilih tab Configuration, lalu klik Permissions di panel navigasi kiri.
-
Di bawah Execution role, pilih tautan nama role. Konsol IAM akan terbuka.
-
Pada halaman Summary di konsol IAM untuk execution role fungsi Lambda Anda, pilih tab Permissions.
-
Dari menu Add permissions, pilih Create inline policy.
-
Beralih ke editor JSON.
-
Dalam snippet di bawah ini, ganti bagian di bawah ini (resource) dengan ARN antrean SQS yang Anda buat dan catat dari langkah sebelumnya:
Arn:AWS:sqs:{region}:{account}:{queuename}"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "UseCaseStatement0",
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:GetQueueUrl",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes",
"sqs:ListQueueTags"
],
"Resource": [
"arn:aws:sqs:{Region}:{Account}:{QueueName}"
]
},
{
"Sid": "UseCaseStatement1",
"Effect": "Allow",
"Action": [
"sqs:ListDeadLetterSourceQueues",
"sqs:ListMessageMoveTasks",
"sqs:ListQueues",
"s3:GetObject",
"s3:CreateBucket",
"s3:PutObject"
],
"Resource": "*"
}
]
}
-
Tempelkan snippet tersebut ke editor JSON dengan resource yang telah diperbarui.
-
Klik Next.
-
Beri Name pada policy; misalnya usecasepolicy.
-
Klik Create policy.
Fungsi Lambda Anda sekarang memiliki izin untuk berinteraksi dengan layanan yang Anda perlukan.
Langkah 6 - Unggah kode Lambda
Saat file diunggah ke bucket S3 sumber, Anda memerlukan sejumlah kode untuk dijalankan agar file tersebut dapat diproses ketika Lambda dipanggil.
Bergantung pada framework Anda, ada beberapa cara untuk menjalankan fungsi Lambda dengan kode yang dimaksud, tetapi panduan ini berfokus pada fungsionalitas upload zip.
Fungsi Lambda akan memiliki logika berikut terlepas dari framework yang digunakan:
- Ambil file: interpretasikan pesan SQS untuk mengambil file dari source bucket.
- File CDR: buat permintaan terautentikasi ke Glasswall Halo Rest API.
- Tangani respons: tangani respons yang berhasil maupun yang gagal.
Jika Anda memerlukan informasi lebih lanjut untuk memulai, Anda dapat menemukan codebase contoh lengkap yang telah mengimplementasikan logika ini di Glasswall engineering github. repositori ini menyediakan kode contoh beserta instruksi untuk mengunggah ke Lambda yang dibuat di sini. Selain itu, tersedia file zip siap pakai yang dapat Anda gunakan untuk fungsi Lambda. Silakan merujuk ke instruksi di dalam file .md.
Langkah 7 - Tambahkan trigger
Pada langkah ini Anda mengonfigurasi fungsi Lambda agar dipanggil saat pesan SQS dipublikasikan ke queue dengan menambahkan trigger.
-
Di panel ringkasan Function pada halaman konsol fungsi Anda, pilih Add trigger.
-
Dari daftar trigger yang tersedia, pilih SQS.
-
Pilih queue SQS yang sebelumnya Anda buat lalu klik Add.

Prosesnya sekarang selesai dan siap untuk diuji.
Langkah 8 - Uji
Sekarang setelah semuanya siap, unggah file ke source S3 bucket dan dalam beberapa detik file dengan nama yang sama akan muncul di clean S3 bucket.


File ini adalah salinan bersih yang identik secara visual dari file asli, tanpa konten berisiko atau cacat struktural apa pun yang dapat mencakup malware.
Konfirmasi melalui Glasswall Halo Portal
-
Proses file asli menggunakan aplikasi Clean a file milik Glasswall.
- File Anda akan diberi tingkat risiko beserta item konten berisiko atau cacat struktural yang terdaftar.
-
Proses file yang telah dibersihkan dari bucket S3 bersih di aplikasi Clean a file.
- File harus dikembalikan sebagai bersih tanpa konten berisiko atau cacat struktural.