Menggunakan Fungsi Lambda dengan Amazon S3

Layanan Amazon S3 digunakan untuk penyimpanan file, di mana Anda dapat mengunggah atau menghapus file. Kami dapat memicu AWS Lambda di S3 saat ada file yang diunggah di bucket S3. AWS Lambda memiliki fungsi penangan yang bertindak sebagai titik awal untuk fungsi AWS Lambda. Pawang memiliki detail acara. Di bab ini, mari kita lihat cara menggunakan AWS S3 untuk memicu fungsi AWS Lambda saat kita mengunggah file di bucket S3.

Langkah-langkah untuk Menggunakan Fungsi AWS Lambda dengan Amazon S3

Untuk mulai menggunakan AWS Lambda dengan Amazon S3, kami membutuhkan yang berikut -

  • Buat S3 Bucket
  • Buat peran yang memiliki izin untuk bekerja dengan s3 dan lambda
  • Buat fungsi lambda dan tambahkan s3 sebagai pemicu.

Contoh

Mari kita lihat langkah-langkah ini dengan bantuan contoh yang menunjukkan interaksi dasar antara Amazon S3 dan AWS Lambda.

  • Pengguna akan mengunggah file di ember Amazon S3

  • Setelah file diunggah, maka akan memicu fungsi AWS Lambda di latar belakang yang akan menampilkan output berupa pesan konsol bahwa file tersebut diunggah.

  • Pengguna akan dapat melihat pesan di log Cloudwatch setelah file diunggah.

Diagram blok yang menjelaskan aliran contoh ditampilkan di sini -

Membuat S3 Bucket

Mari kita mulai terlebih dahulu dengan membuat bucket s3 di konsol AWS menggunakan langkah-langkah yang diberikan di bawah ini -

Langkah 1

Buka layanan Amazon dan klik S3 di bagian penyimpanan seperti yang disorot pada gambar yang diberikan di bawah ini -

Langkah 2

Klik penyimpanan S3 dan Create bucket yang akan menyimpan file yang diunggah.

LANGKAH 3

Setelah Anda mengklik Create bucket tombol, Anda dapat melihat layar sebagai berikut -

LANGKAH 4

Masukkan detailnya Bucket name, Select the Region dan klik Createtombol di sisi kiri bawah. Jadi, kami telah membuat ember dengan nama:workingwithlambdaands3.

LANGKAH 5

Sekarang, klik nama bucket dan itu akan meminta Anda untuk mengunggah file seperti yang ditunjukkan di bawah ini -

Jadi, kami selesai dengan pembuatan bucket di S3.

Buat Peran yang Bekerja dengan S3 dan Lambda

Untuk membuat peran yang berfungsi dengan S3 dan Lambda, harap ikuti Langkah-langkah yang diberikan di bawah ini -

Langkah 1

Buka layanan AWS dan pilih IAM seperti yang ditunjukkan di bawah ini -

Langkah 2

Sekarang, klik IAM -> Roles seperti yang ditunjukkan di bawah ini -

LANGKAH 3

Sekarang, klik Create roledan pilih layanan yang akan menggunakan peran ini. Pilih Lambda dan klikPermission tombol.

LANGKAH 4

Tambahkan izin dari bawah dan klik Review.

LANGKAH 5

Perhatikan bahwa kami telah memilih izin berikut -

Perhatikan bahwa Kebijakan yang kami pilih adalah AmazonS3FullAccess, AWSLambdaFullAccess dan CloudWatchFullAccess.

LANGKAH 6

Sekarang, masukkan nama Peran, Deskripsi peran dan klik Create Role tombol di bagian bawah.

Jadi, peran kami dinamai lambdawiths3service dibuat.

Buat fungsi Lambda dan Tambahkan S3 Trigger

Di bagian ini, mari kita lihat cara membuat fungsi Lambda dan menambahkan pemicu S3 ke dalamnya. Untuk tujuan ini, Anda harus mengikuti Langkah-langkah yang diberikan di bawah ini -

Langkah 1

Buka Layanan AWS dan pilih Lambda seperti yang ditunjukkan di bawah ini -

Langkah 2

Klik Lambda dan ikuti proses penambahan Name. MemilihRuntime, Roledll. dan buat fungsinya. Fungsi Lambda yang telah kami buat ditunjukkan pada gambar di bawah -

LANGKAH 3

Sekarang mari kita tambahkan pemicu S3.

LANGKAH 4

Pilih pemicu dari atas dan tambahkan detail seperti yang ditunjukkan di bawah ini -

LANGKAH 5

Pilih keranjang yang dibuat dari drop-down keranjang. Jenis acara memiliki detail berikut -

Pilih Object Created (All), karena kami memerlukan pemicu AWS Lambda saat file diunggah, dihapus, dll.

LANGKAH 6

Anda dapat menambahkan Prefix dan pola File yang digunakan untuk memfilter file yang ditambahkan. Misalnya, untuk memicu lambda hanya untuk gambar .jpg. Biarkan kami tetap kosong untuk saat ini karena kami perlu memicu Lambda untuk semua file yang diunggah. KlikAdd tombol untuk menambahkan pemicu.

LANGKAH 7

Anda dapat menemukan tampilan pemicu untuk fungsi Lambda seperti yang ditunjukkan di bawah ini -

Mari tambahkan detail untuk fungsi lambda aws. Di sini, kita akan menggunakan editor online untuk menambahkan kode kita dan menggunakan nodejs sebagai lingkungan runtime.

LANGKAH 8

Untuk memicu S3 dengan AWS Lambda, kita harus menggunakan peristiwa S3 dalam kode seperti yang ditunjukkan di bawah ini -

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

Perhatikan bahwa event param memiliki detail S3event. Kami telah menghibur nama bucket dan nama file yang akan dicatat ketika Anda mengunggah gambar di S3bucket.

LANGKAH 9

Sekarang, mari kita simpan perubahan dan uji fungsi lambda dengan S3upload. Berikut ini adalah detail kode yang ditambahkan di AWS Lambda -

LANGKAH 10

Sekarang, mari kita tambahkan peran, memori, dan batas waktu.

LANGKAH 11

Sekarang, simpan fungsi Lambda. Buka layanan S3 dari Amazon dan buka bucket yang kami buat sebelumnya yaituworkingwithlambdaands3.

Unggah gambar di dalamnya seperti yang ditunjukkan di bawah ini -

LANGKAH 12

Klik Upload tombol untuk menambahkan file seperti yang ditunjukkan -

LANGKAH 13

Klik Add filesuntuk menambahkan file. Anda juga dapat menarik dan melepas file. Sekarang, klikUpload tombol.

Jadi, kami telah mengunggah satu gambar di bucket S3 kami.

LANGKAH 14

Untuk melihat detail pemicu, buka layanan AWS dan pilih CloudWatch. Buka log untuk fungsi Lambda dan gunakan kode berikut -

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

Output yang dapat Anda amati di Cloudwatch adalah seperti yang ditunjukkan -

Fungsi AWS Lambda dipicu saat file diunggah di S3 bucket dan detailnya dicatat di Cloudwatch seperti yang ditunjukkan di bawah ini -