Langkau ke kandungan utama

Amazon S3

Objektif

Sediakan sanitasi fail automatik dalam bucket Amazon S3 menggunakan Glasswall Halo API melalui fungsi pemberitahuan acara dan fungsi lambda.

Panduan Integrasi Amazon S3


Prasyarat

  • Akaun AWS dan peranan IAM (Identity and Access Management) dengan policy kebenaran berikut:

    • Amazons3fullaccess: untuk mencipta dan mengkonfigurasi bucket S3.
    • Amazonsqsfullaccess: untuk mencipta dan mengkonfigurasi baris gilir SQS yang digunakan untuk mencetuskan.
    • Awslambda_fullaccess: untuk mencipta dan mengkonfigurasi fungsi lambda yang melaksanakan panggilan ke Glasswall Halo.
    • (Pilihan) iamfullaccess: diperlukan untuk mencipta dan mengkonfigurasi peranan pelaksanaan lalai bagi fungsi baharu. Jika peranan ini tidak dapat diberikan, ikuti langkah yang berkaitan dalam panduan ini untuk meminta penciptaan peranan dan kemudian gunakan peranan yang telah dicipta terlebih dahulu ini.
  • Akses yang diautentikasi kepada API segerak Glasswall Halo.


Langkah 1 - Cipta bucket S3

Pertama, anda perlu mencipta bucket S3 tempat fail sumber ditambahkan, dan ini akan menjadi sumber peristiwa yang mencetuskan aliran kerja.

  1. Log masuk ke konsol pengurusan AWS.

  2. Navigasi ke konsol Amazon S3 dengan memasukkan “S3” dalam bar carian atau dengan memilih S3 di bawah menu Services > Storage.

Awss3 - step 1a

  1. Dalam anak tetingkap navigasi kiri, pilih Buckets.

  2. Klik Create bucket. Halaman Create bucket akan dibuka.

Awss3 - step 1b

  1. Untuk nama bucket, masukkan nama bagi bucket anda. Nama bucket mesti:
  • Unik dalam satu partition. Partition ialah pengelompokan rantau; AWS pada masa ini mempunyai tiga partition:aws(rantau Standard),aws-cn(rantau China), danaws-us-gov(rantau AWS govcloud (us)).
  • Panjangnya antara 3 hingga 63 aksara.
  • Hanya terdiri daripada huruf kecil, nombor, titik (.), dan tanda sempang (-). Untuk keserasian terbaik, kami mengesyorkan agar anda mengelakkan penggunaan titik (.) dalam nama bucket, kecuali untuk bucket yang digunakan hanya bagi pengehosan laman web statik.
  • Bermula dan berakhir dengan huruf atau nombor.

Nama bucket adalah unik secara global, pengesahan konsol AWS akan memaklumkan anda jika nama bucket yang dimasukkan sudah digunakan.

Nota: selepas anda mencipta bucket, anda tidak boleh menukar namanya. Untuk maklumat lanjut tentang penamaan bucket, lihat peraturan penamaan bucket.

  1. Untuk Region, pilih rantau AWS tempat anda mahu bucket tersebut berada.

Nota: untuk meminimumkan kependaman dan kos serta memenuhi keperluan kawal selia, pilih rantau yang dekat dengan anda. Objek yang disimpan dalam sesuatu rantau tidak akan meninggalkan rantau tersebut melainkan anda memindahkannya secara jelas ke rantau lain. Untuk senarai rantau AWS Amazon S3, lihat titik akhir perkhidmatan AWS dalam rujukan umum amazon web services.

Jika anda memerlukan sebarang tetapan tambahan untuk bucket anda, seperti kawalan akses, pengelogan, pemversian, atau penyulitan, anda boleh mengkonfigurasikannya dengan sewajarnya.

Selain itu, di bawah bahagian tetapkan kebenaran, anda boleh menentukan siapa yang mempunyai akses kepada bucket dan objeknya dengan memilih daripada pilihan seperti policy bucket, senarai kawalan akses (ACL), atau sekat semua akses awam. Pastikan anda menyemak dan menetapkan konfigurasi ini mengikut keperluan anda sebelum meneruskan.

Untuk maklumat yang lebih terperinci tentang mencipta dan mengkonfigurasi bucket S3, sila rujuk panduan pengguna AWS S3.


Langkah 2 - Cipta baris gilir SQS

Selepas bucket S3 dicipta, baris gilir Amazon SQS (Simple Queue Service) perlu dicipta. Di sinilah pemberitahuan peristiwa daripada bucket S3 sumber anda akan dihantar, dan diambil oleh fungsi Lambda.

  1. Navigasi ke konsol Amazon SQS dengan mencari “SQS” dalam bar carian atau dengan memilih Simple Queue Service di bawah menu Services > Application integration.

  2. Klik Create queue.

Awss3 - step 2a

  1. Pilih antara dua jenis baris gilir SQS: Standard atau FIFO.

Baris gilir Standard menyediakan throughput tinggi dan pengaturan terbaik yang diusahakan, manakala baris gilir FIFO menjamin pemprosesan “tepat sekali” dan pengaturan yang ketat berdasarkan ID kumpulan mesej. Jenis baris gilir standard ditetapkan secara lalai.

Nota: anda tidak boleh menukar jenis baris gilir setelah ia dicipta.

  1. Masukkan Name yang unik untuk queue anda; contohnya s3cdrevents.

Nama queue FIFO mesti berakhir dengan akhiran .fifo. Akhiran tersebut dikira dalam kuota nama queue 80 aksara. Untuk menentukan sama ada sesuatu queue ialah fifo, anda boleh menyemak sama ada nama queue berakhir dengan akhiran tersebut.

  1. Console menetapkan nilai lalai untuk configuration parameters queue. Jika anda biasa dengan SQS, di bawah Configuration anda boleh menetapkan nilai baharu untuk parameter tersebut. Bagi tujuan kes penggunaan ini, kami akan membiarkan kebanyakannya sebagai lalai.

  2. Tatal ke bahagian Access policy.

  3. Pilih pilihan Advanced untuk mengedit policy JSON melalui editor lanjutan bagi membenarkan perkhidmatan S3 menerbitkan mesej ke queue.

  4. Tambahkan koma selepas elemen “__owner_statement” dan tampalkan snippet JSON berikut:

{ 
"Sid": "AllowS3ToPublish",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "sqs:SendMessage",
"Resource": "<ARN-OF-QUEUE>"
}

Nota: pastikan anda menggantikan arn-of-queue dalam snippet dengan ARN (Amazon Resource Name) queue; ini akan sama seperti resource ARN bagi owner statement dalam JSON sedia ada.

Awss3 - step 2b

  1. Semak nilai konfigurasi yang telah anda masukkan dan klik Create queue.

Catat ARN untuk queue tersebut untuk digunakan kemudian.

Untuk maklumat yang lebih terperinci tentang mencipta dan mengkonfigurasi Amazon SQS, sila rujuk AWS S3 user guide.


Langkah 3 - Hidupkan pemberitahuan acara

Langkah seterusnya ialah menghidupkan pemberitahuan acara, supaya queue SQS anda menerima pemberitahuan setiap kali fail diletakkan dalam bucket S3 sumber.

  1. Navigasi ke console Amazon S3 dan daripada senarai Buckets, pilih bucket yang anda cipta sebelum ini.

  2. Daripada halaman Bucket overview, pilih tab Properties.

  3. Tatal ke bawah ke bahagian Event notifications dan klik Create event notification.

  4. Dalam bahagian General configuration, nyatakan Event name yang deskriptif untuk pemberitahuan acara anda. Secara pilihan, anda juga boleh menentukan Prefix dan Suffix untuk mengehadkan pemberitahuan kepada objek dengan kunci yang berakhir dengan aksara yang ditentukan.

  5. Dalam bahagian Event types, anda boleh memilih satu atau lebih jenis acara yang anda mahu terima pemberitahuannya. Dalam contoh ini, kami memfokuskan pada acara Object creation supaya objek baharu atau yang disalin menghasilkan pemberitahuan yang menyebabkan CDR dilaksanakan pada objek tersebut.

Pilih kotak semak All object create events.

Awss3 - step 3a

  1. Akhir sekali, dalam bahagian Destination, pilih destinasi pemberitahuan acara – dalam kes ini baris gilir SQS yang telah kami cipta dan konfigurasikan.

Pilih SQS queue sebagai destinasi anda dan pilih baris gilir SQS yang telah kami cipta dan konfigurasikan sebelum ini.

  1. Pilih Save changes, dan Amazon S3 menghantar mesej ujian ke destinasi pemberitahuan acara.

Pemberitahuan acara telah dicipta, dan anda akan dikembalikan ke sifat bucket S3.

Untuk maklumat yang lebih terperinci tentang pemberitahuan acara, sila rujuk panduan pengguna AWS S3.


Langkah 4 - Cipta fungsi Lambda

Setelah pemberitahuan acara diaktifkan, anda perlu mencipta fungsi Lambda baharu.

  1. Navigasi ke perkhidmatan Lambda dengan mencari “Lambda” dalam bar carian atau dengan memilih Lambda di bawah menu Services > Compute.

  2. Dalam anak tetingkap navigasi kiri, pilih Functions.

  3. Klik Create function.

  4. Pada halaman Create function anda akan dipaparkan dengan tiga pilihan; pilih Author from scratch.

  5. Masukkan Function name yang sesuai untuk fungsi Lambda anda; contohnya CDR-file.

Awss3 - step 4a

  1. Seterusnya, pilih Runtime yang sepadan dengan bahasa yang anda ingin gunakan.

Nota: anda boleh mendapatkan kod contoh melalui Glasswall github. Anda akan dapat memuat naik kod pada langkah seterusnya.

  1. (Pilihan) Jika anda biasa dengan fungsi Lambda, anda boleh menetapkan konfigurasi tambahan melalui pilihan General configuration di bawah tab Configurations.

  2. Klik Create function. Anda akan tiba di halaman Function overview.

Awss3 - step 4b

  1. Assigning the execution role can be done in two ways:
    • Meminta dan menetapkan role baharu menggunakan iamfullaccess
    • Assigning an already existing role
      • Ini boleh dilakukan melalui perkhidmatan Lambda: Function overview > Configuration > Permissions > Edit.

[Pilihan] iamfullaccess

Jika anda tidak dapat diberikan kebenaran iamfullaccess, sila minta agar satu role dicipta dengan kebenaran berikut:

Logs :createlogstream

Logs :putlogevents

Berikan JSON yang telah dilengkapkan daripada langkah Configure execution role kepada pengguna berkeistimewaan anda untuk mencipta role.

Role baharu ini boleh dipilih daripada antara muka pengguna penciptaan Lambda sebagai ganti membenarkan role lalai baharu dicipta.

  • Tatal ke bahagian Change default execution role.
  • Pilih Use an existing role dan pilih role yang telah dicipta terlebih dahulu.

Langkah seterusnya untuk mengkonfigurasi role pelaksanaan kini boleh dilangkau dan anda boleh terus ke Step 6 - Upload lambda code.


Langkah 5 - Konfigurasi role pelaksanaan

Untuk membolehkan fungsi Lambda mengakses perkhidmatan AWS (S3, SQS), anda perlu menetapkan kebenaran tambahan kepada role pelaksanaan Lambda.

  1. Dalam konsol AWS Lambda, pilih Functions dalam anak tetingkap navigasi kiri.

  2. Pada halaman butiran fungsi Lambda anda, pilih tab Configuration, kemudian klik Permissions dalam anak tetingkap navigasi kiri.

  3. Di bawah Execution role, pilih pautan nama peranan. Konsol IAM akan dibuka.

  4. Pada halaman Summary dalam konsol IAM untuk peranan pelaksanaan fungsi Lambda anda, pilih tab Permissions.

  5. Daripada menu Add permissions, pilih Create inline policy.

  6. Beralih ke editor JSON.

  7. Dalam petikan di bawah, gantikan bahagian di bawah (resource) dengan ARN bagi baris gilir SQS yang anda cipta dan catat daripada 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": "*"
}
]
}
  1. Tampalkan petikan ke dalam editor JSON dengan resource yang dikemas kini.

  2. Klik Next.

  3. Berikan Name kepada policy; contohnya usecasepolicy.

  4. Klik Create policy.

Fungsi Lambda anda kini mempunyai kebenaran untuk berinteraksi dengan perkhidmatan yang anda perlukan.


Langkah 6 - Muat naik kod Lambda

Apabila fail dimuat naik ke bucket S3 sumber, anda memerlukan sedikit kod untuk dijalankan bagi memprosesnya apabila Lambda dipanggil.

Bergantung pada framework anda, terdapat beberapa cara untuk menjalankan fungsi Lambda dengan kod yang dimaksudkan, tetapi panduan ini memfokuskan pada fungsi muat naik zip.

Fungsi Lambda akan mempunyai logik berikut tanpa mengira framework:

  • Dapatkan fail: tafsirkan mesej SQS untuk mendapatkan fail daripada bucket sumber.
  • Fail CDR: buat permintaan yang diautentikasi kepada Glasswall Halo Rest API.
  • Kendalikan respons: kendalikan respons yang berjaya dan juga yang tidak berjaya.

Jika anda memerlukan maklumat lanjut untuk bermula, anda boleh mendapatkan codebase sampel lengkap yang telah melaksanakan logik ini di Glasswall engineering github. repositori ini menyediakan kod sampel bersama arahan untuk memuat naik ke Lambda yang dicipta di sini. Selain itu, terdapat fail zip prabina yang boleh anda gunakan untuk fungsi Lambda. Sila rujuk arahan dalam fail .md.


Langkah 7 - Tambah trigger

Dalam langkah ini anda mengkonfigurasi fungsi Lambda supaya dipanggil apabila mesej SQS diterbitkan ke queue dengan menambahkan trigger.

  1. Dalam anak tetingkap gambaran keseluruhan Function pada halaman konsol fungsi anda, pilih Add trigger.

  2. Daripada senarai trigger yang tersedia, pilih SQS.

  3. Pilih queue SQS yang anda cipta sebelum ini dan klik Add.

Awss3 - step 7a

Proses kini selesai dan sedia untuk diuji.


Langkah 8 - Uji

Sekarang setelah semuanya tersedia, muat naik fail ke bucket S3 sumber dan dalam beberapa saat fail dengan nama yang sama akan muncul dalam bucket S3 bersih.

Awss3 - step 8a

Awss3 - step 8b

Fail ini ialah salinan bersih yang serupa secara visual dengan fail asal, tanpa sebarang kandungan berisiko atau kecacatan struktur yang mungkin termasuk malware.

Sahkan melalui Glasswall Halo Portal

  • Proses fail asal menggunakan aplikasi Clean a file Glasswall.

    • Fail anda akan diberikan tahap risiko bersama-sama sebarang item kandungan berisiko atau kecacatan struktur yang disenaraikan.
  • Proses fail yang telah dibersihkan daripada bucket S3 bersih dalam aplikasi Clean a file.

    • Fail tersebut sepatutnya dikembalikan sebagai bersih tanpa kandungan berisiko atau kecacatan struktur.