Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Dalam tutorial ini, Anda membuat dan mengonfigurasi fungsi Lambda yang mengubah ukuran gambar yang ditambahkan ke bucket Amazon Simple Storage Service (Amazon S3). Saat Anda menambahkan file gambar ke bucket, Amazon S3 akan memanggil fungsi Lambda Anda. Fungsi tersebut kemudian membuat versi thumbnail gambar dan mengeluarkannya ke bucket Amazon S3 yang berbeda.

Untuk menyelesaikan tutorial ini, Anda melakukan langkah-langkah berikut:
-
Buat bucket Amazon S3 sumber dan tujuan dan unggah gambar sampel.
-
Buat fungsi Lambda yang mengubah ukuran gambar dan mengeluarkan thumbnail ke bucket Amazon S3.
-
Konfigurasikan pemicu Lambda yang memanggil fungsi Anda saat objek diunggah ke bucket sumber Anda.
-
Uji fungsi Anda, pertama dengan acara dummy, lalu dengan mengunggah gambar ke bucket sumber Anda.
Dengan menyelesaikan langkah-langkah ini, Anda akan mempelajari cara menggunakan Lambda untuk menjalankan tugas pemrosesan file pada objek yang ditambahkan ke bucket Amazon S3. Anda dapat menyelesaikan tutorial ini menggunakan AWS Command Line Interface (AWS CLI) atau AWS Management Console.
Jika Anda mencari contoh sederhana untuk mempelajari cara mengonfigurasi pemicu Amazon S3 untuk Lambda, Anda dapat mencoba Tutorial: Menggunakan pemicu Amazon S3 untuk menjalankan fungsi Lambda.
Topik
Prasyarat
Jika Anda ingin menggunakan AWS CLI untuk menyelesaikan tutorial, instal versi terbaru dari AWS Command Line Interface.
Untuk kode fungsi Lambda Anda, Anda dapat menggunakan Python atau Node.js. Instal alat dukungan bahasa dan manajer paket untuk bahasa yang ingin Anda gunakan.
Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di Menginstal atau memperbarui versi terbaru AWS CLI untuk menginstalnya.
Tutorial ini membutuhkan terminal baris perintah atau shell untuk menjalankan perintah. Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.
catatan
Di Windows, beberapa perintah Bash CLI yang biasa Anda gunakan dengan Lambda (zip
seperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, instal Windows Subsystem untuk
Buat dua ember Amazon S3

Pertama buat dua ember Amazon S3. Bucket pertama adalah bucket sumber tempat Anda akan mengunggah gambar Anda. Bucket kedua digunakan oleh Lambda untuk menyimpan thumbnail yang diubah ukurannya saat Anda menjalankan fungsi.
Untuk membuat bucket Amazon S3 (konsol)
-
Buka konsol Amazon S3
dan pilih halaman Bucket tujuan umum. -
Pilih yang Wilayah AWS paling dekat dengan lokasi geografis Anda. Anda dapat mengubah wilayah Anda menggunakan daftar drop-down di bagian atas layar. Kemudian dalam tutorial, Anda harus membuat fungsi Lambda Anda di Wilayah yang sama.
-
Pilih Buat bucket.
-
Pada Konfigurasi umum, lakukan hal berikut:
-
Untuk jenis Bucket, pastikan Tujuan umum dipilih.
-
Untuk nama Bucket, masukkan nama unik global yang memenuhi aturan penamaan Amazon S3 Bucket. Nama bucket hanya dapat berisi huruf kecil, angka, titik (.), dan tanda hubung (-).
-
-
Biarkan semua opsi lain disetel ke nilai defaultnya dan pilih Buat bucket.
-
Ulangi langkah 1 hingga 5 untuk membuat bucket tujuan Anda. Untuk nama Bucket
, masukkan, diamzn-s3-demo-source-bucket-resized
mana nama bucket sumber yang baru saja Anda buat.amzn-s3-demo-source-bucket
Unggah gambar uji ke bucket sumber Anda

Kemudian dalam tutorial, Anda akan menguji fungsi Lambda Anda dengan memanggilnya menggunakan atau konsol Lambda. AWS CLI Untuk mengonfirmasi bahwa fungsi Anda beroperasi dengan benar, bucket sumber Anda harus berisi gambar uji. Gambar ini dapat berupa file JPG atau PNG yang Anda pilih.
Untuk mengunggah gambar uji ke bucket sumber Anda (konsol)
-
Buka halaman Bucket
konsol Amazon S3. -
Pilih bucket sumber yang Anda buat di langkah sebelumnya.
-
Pilih Unggah.
-
Pilih Tambahkan file dan gunakan pemilih file untuk memilih objek yang ingin Anda unggah.
-
Pilih Buka, lalu pilih Unggah.
Membuat kebijakan izin

Langkah pertama dalam membuat fungsi Lambda Anda adalah membuat kebijakan izin. Kebijakan ini memberi fungsi Anda izin yang diperlukan untuk mengakses AWS sumber daya lain. Untuk tutorial ini, kebijakan memberikan izin baca dan tulis Lambda untuk bucket Amazon S3 dan memungkinkannya untuk menulis ke Amazon Log. CloudWatch
Untuk membuat kebijakan (konsol)
-
Buka halaman Kebijakan
konsol AWS Identity and Access Management (IAM). -
Pilih Buat kebijakan.
-
Pilih tab JSON, lalu tempelkan kebijakan khusus berikut ke editor JSON.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::*/*" }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::*/*" } ] }
-
Pilih Berikutnya.
-
Di bawah Detail kebijakan, untuk nama Kebijakan, masukkan
.LambdaS3Policy
-
Pilih Buat kebijakan.
Membuat peran eksekusi

Peran eksekusi adalah peran IAM yang memberikan izin fungsi Lambda untuk mengakses dan sumber daya. Layanan AWS Untuk memberikan akses baca dan tulis fungsi ke bucket Amazon S3, Anda melampirkan kebijakan izin yang Anda buat di langkah sebelumnya.
Untuk membuat peran eksekusi dan melampirkan kebijakan izin Anda (konsol)
-
Buka halaman Peran
konsol (IAM). -
Pilih Buat peran.
-
Untuk jenis entitas Tepercaya, pilih Layanan AWS, dan untuk kasus Penggunaan, pilih Lambda.
-
Pilih Berikutnya.
-
Tambahkan kebijakan izin yang Anda buat di langkah sebelumnya dengan melakukan hal berikut:
-
Dalam kotak pencarian kebijakan, masukkan
.LambdaS3Policy
-
Dalam hasil pencarian, pilih kotak centang untuk
LambdaS3Policy
. -
Pilih Berikutnya.
-
-
Di bawah Rincian peran, untuk nama Peran masuk
.LambdaS3Role
-
Pilih Buat peran.
Buat paket penerapan fungsi

Untuk membuat fungsi Anda, Anda membuat paket deployment yang berisi kode fungsi dan dependensinya. Untuk CreateThumbnail
fungsi ini, kode fungsi Anda menggunakan pustaka terpisah untuk mengubah ukuran gambar. Ikuti instruksi untuk bahasa yang Anda pilih untuk membuat paket penyebaran yang berisi pustaka yang diperlukan.
Untuk membuat paket penyebaran (Node.js)
-
Buat direktori bernama
lambda-s3
untuk kode fungsi dan dependensi Anda dan navigasikan ke dalamnya.mkdir lambda-s3 cd lambda-s3
-
Buat proyek Node.js baru dengan
npm
. Untuk menerima opsi default yang disediakan dalam pengalaman interaktif, tekanEnter
.npm init
-
Simpan kode fungsi berikut dalam file bernama
index.mjs
. Pastikan untuk menggantius-east-1
dengan Wilayah AWS di mana Anda membuat ember sumber dan tujuan Anda sendiri.// dependencies import { S3Client, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'; import { Readable } from 'stream'; import sharp from 'sharp'; import util from 'util'; // create S3 client const s3 = new S3Client({region:
'us-east-1'
}); // define the handler function export const handler = async (event, context) => { // Read options from the event parameter and get the source bucket console.log("Reading options from event:\n", util.inspect(event, {depth: 5})); const srcBucket = event.Records[0].s3.bucket.name; // Object key may have spaces or unicode non-ASCII characters const srcKey = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " ")); const dstBucket = srcBucket + "-resized"; const dstKey = "resized-" + srcKey; // Infer the image type from the file suffix const typeMatch = srcKey.match(/\.([^.]*)$/); if (!typeMatch) { console.log("Could not determine the image type."); return; } // Check that the image type is supported const imageType = typeMatch[1].toLowerCase(); if (imageType != "jpg" && imageType != "png") { console.log(`Unsupported image type: ${imageType}`); return; } // Get the image from the source bucket. GetObjectCommand returns a stream. try { const params = { Bucket: srcBucket, Key: srcKey }; var response = await s3.send(new GetObjectCommand(params)); var stream = response.Body; // Convert stream to buffer to pass to sharp resize function. if (stream instanceof Readable) { var content_buffer = Buffer.concat(await stream.toArray()); } else { throw new Error('Unknown object stream type'); } } catch (error) { console.log(error); return; } // set thumbnail width. Resize will set the height automatically to maintain aspect ratio. const width = 200; // Use the sharp module to resize the image and save in a buffer. try { var output_buffer = await sharp(content_buffer).resize(width).toBuffer(); } catch (error) { console.log(error); return; } // Upload the thumbnail image to the destination bucket try { const destparams = { Bucket: dstBucket, Key: dstKey, Body: output_buffer, ContentType: "image" }; const putResult = await s3.send(new PutObjectCommand(destparams)); } catch (error) { console.log(error); return; } console.log('Successfully resized ' + srcBucket + '/' + srcKey + ' and uploaded to ' + dstBucket + '/' + dstKey); }; -
Di
lambda-s3
direktori Anda, instal perpustakaan tajam menggunakan npm. Perhatikan bahwa versi terbaru dari sharp (0.33) tidak kompatibel dengan Lambda. Instal versi 0.32.6 untuk menyelesaikan tutorial ini.npm install sharp@0.32.6
install
Perintah npm membuatnode_modules
direktori untuk modul Anda. Setelah langkah ini, struktur direktori Anda akan terlihat seperti berikut.lambda-s3 |- index.mjs |- node_modules | |- base64js | |- bl | |- buffer ... |- package-lock.json |- package.json
-
Buat paket deployment .zip yang berisi kode fungsi Anda dan dependensinya. Di macOS dan Linux, jalankan perintah berikut.
zip -r function.zip .
Di Windows, gunakan utilitas zip pilihan Anda untuk membuat file.zip. Pastikan bahwa
package-lock.json
fileindex.mjs
package.json
, dannode_modules
direktori Anda semuanya berada di root file.zip Anda.
Buat fungsi Lambda

Anda dapat membuat fungsi Lambda menggunakan konsol Lambda AWS CLI atau Lambda. Ikuti instruksi untuk bahasa yang Anda pilih untuk membuat fungsi.
Untuk membuat fungsi (konsol)
Untuk membuat fungsi Lambda menggunakan konsol, pertama-tama Anda membuat fungsi dasar yang berisi beberapa kode 'Hello world'. Anda kemudian mengganti kode ini dengan kode fungsi Anda sendiri dengan mengunggah file the.zip atau JAR yang Anda buat pada langkah sebelumnya.
-
Buka halaman Fungsi
di konsol Lambda. -
Pastikan Anda bekerja di tempat yang sama dengan saat Wilayah AWS Anda membuat bucket Amazon S3. Anda dapat mengubah wilayah Anda menggunakan daftar drop-down di bagian atas layar.
-
Pilih Buat fungsi.
-
Pilih Penulis dari scratch.
-
Di bagian Informasi dasar, lakukan hal berikut:
-
Untuk Nama fungsi, masukkan
.CreateThumbnail
-
Untuk Runtime, pilih Node.js 22.x atau Python 3.12 sesuai dengan bahasa yang Anda pilih untuk fungsi Anda.
-
Untuk Arsitektur, pilih x86_64.
-
-
Di tab Ubah peran eksekusi default, lakukan hal berikut:
-
Perluas tab, lalu pilih Gunakan peran yang ada.
-
Pilih yang
LambdaS3Role
Anda buat sebelumnya.
-
-
Pilih Buat fungsi.
Untuk mengunggah kode fungsi (konsol)
-
Di panel Sumber kode, pilih Unggah dari.
-
Pilih file.zip.
-
Pilih Unggah.
-
Di pemilih file, pilih file.zip Anda dan pilih Buka.
-
Pilih Simpan.
Konfigurasikan Amazon S3 untuk menjalankan fungsi

Agar fungsi Lambda dapat berjalan saat mengunggah gambar ke bucket sumber, Anda perlu mengonfigurasi pemicu untuk fungsi Anda. Anda dapat mengonfigurasi pemicu Amazon S3 menggunakan konsol atau. AWS CLI
penting
Prosedur ini mengonfigurasi bucket Amazon S3 untuk menjalankan fungsi Anda setiap kali objek dibuat di bucket. Pastikan untuk mengonfigurasi ini hanya di bucket sumber. Jika fungsi Lambda Anda membuat objek dalam bucket yang sama yang memanggilnya, fungsi Anda dapat dipanggil terus menerus
Untuk mengonfigurasi pemicu Amazon S3 (konsol)
-
Buka halaman Fungsi
konsol Lambda dan pilih fungsi Anda () CreateThumbnail
. -
Pilih Tambahkan pemicu.
-
Pilih S3.
-
Di bawah Bucket, pilih bucket sumber Anda.
-
Di bawah Jenis acara, pilih Semua objek membuat acara.
-
Di bawah Pemanggilan rekursif, pilih kotak centang untuk mengetahui bahwa tidak disarankan menggunakan bucket Amazon S3 yang sama untuk input dan output. Anda dapat mempelajari lebih lanjut tentang pola pemanggilan rekursif di Lambda dengan membaca pola rekursif yang menyebabkan fungsi Lambda yang tidak terkendali
di Tanah Tanpa Server. -
Pilih Tambahkan.
Saat Anda membuat pemicu menggunakan konsol Lambda, Lambda secara otomatis membuat kebijakan berbasis sumber daya untuk memberikan layanan yang Anda pilih izin untuk menjalankan fungsi Anda.
Uji fungsi Lambda Anda dengan acara dummy

Sebelum menguji seluruh penyiapan dengan menambahkan file gambar ke bucket sumber Amazon S3, Anda menguji apakah fungsi Lambda berfungsi dengan benar dengan memanggilnya dengan acara dummy. Peristiwa di Lambda adalah dokumen berformat JSON yang berisi data untuk diproses fungsi Anda. Saat fungsi Anda dipanggil oleh Amazon S3, peristiwa yang dikirim ke fungsi berisi informasi seperti nama bucket, ARN bucket, dan kunci objek.
Untuk menguji fungsi Lambda Anda dengan acara dummy (konsol)
-
Buka halaman Fungsi
konsol Lambda dan pilih fungsi Anda () CreateThumbnail
. -
Pilih tab Uji.
-
Untuk membuat acara pengujian, di panel acara Uji, lakukan hal berikut:
-
Di bawah Uji tindakan peristiwa, pilih Buat acara baru.
-
Untuk Nama peristiwa, masukkan
myTestEvent
. -
Untuk Template, pilih S3 Put.
-
Ganti nilai untuk parameter berikut dengan nilai Anda sendiri.
-
Untuk
awsRegion
, gantius-east-1
dengan bucket Amazon S3 yang Wilayah AWS Anda buat. -
Untuk
name
, gantiamzn-s3-demo-bucket
dengan nama bucket sumber Amazon S3 Anda sendiri. -
Untuk
key
, gantitest%2Fkey
dengan nama file objek pengujian yang Anda unggah ke bucket sumber di langkah tersebut. Unggah gambar uji ke bucket sumber Anda
{ "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion":
"us-east-1"
, "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name":"amzn-s3-demo-bucket"
, "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket" }, "object": { "key":"test%2Fkey"
, "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] } -
-
Pilih Simpan.
-
-
Di panel acara Uji, pilih Uji.
-
Untuk memeriksa fungsi Anda telah membuat verison yang diubah ukurannya dari gambar Anda dan menyimpannya di bucket Amazon S3 target Anda, lakukan hal berikut:
-
Buka halaman Bucket
konsol Amazon S3. -
Pilih bucket target Anda dan konfirmasikan bahwa file yang diubah ukurannya tercantum di panel Objects.
-
Uji fungsi Anda menggunakan pemicu Amazon S3

Sekarang setelah Anda mengonfirmasi bahwa fungsi Lambda Anda beroperasi dengan benar, Anda siap untuk menguji penyiapan lengkap Anda dengan menambahkan file gambar ke bucket sumber Amazon S3 Anda. Saat Anda menambahkan gambar ke bucket sumber, fungsi Lambda Anda akan dipanggil secara otomatis. Fungsi Anda membuat versi file yang diubah ukurannya dan menyimpannya di bucket target Anda.
Untuk menguji fungsi Lambda Anda menggunakan pemicu Amazon S3 (konsol)
-
Untuk mengunggah gambar ke bucket Amazon S3 Anda, lakukan hal berikut:
-
Buka halaman Bucket di
konsol Amazon S3 dan pilih bucket sumber Anda. -
Pilih Unggah.
-
Pilih Tambahkan file dan gunakan pemilih file untuk memilih file gambar yang ingin Anda unggah. Objek gambar Anda dapat berupa file.jpg atau.png.
-
Pilih Buka, lalu pilih Unggah.
-
-
Verifikasi bahwa Lambda telah menyimpan versi file gambar yang diubah ukurannya di bucket target dengan melakukan hal berikut:
-
Arahkan kembali ke halaman Bucket di
konsol Amazon S3 dan pilih bucket tujuan Anda. -
Di panel Objects, Anda sekarang akan melihat dua file gambar yang diubah ukurannya, satu dari setiap pengujian fungsi Lambda Anda. Untuk mengunduh gambar yang diubah ukurannya, pilih file, lalu pilih Unduh.
-
Bersihkan sumber daya Anda
Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.
Untuk menghapus fungsi Lambda
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi yang Anda buat.
-
Pilih Tindakan, Hapus.
-
Ketik
confirm
kolom input teks dan pilih Hapus.
Untuk menghapus kebijakan yang Anda buat.
-
Buka halaman Kebijakan
konsol IAM. -
Pilih kebijakan yang Anda buat (AWSLambdaS3Policy).
-
Pilih Tindakan kebijakan, Hapus.
-
Pilih Hapus.
Untuk menghapus peran eksekusi
-
Buka halaman Peran
dari konsol IAM. -
Pilih peran eksekusi yang Anda buat.
-
Pilih Hapus.
-
Masukkan nama peran di bidang input teks dan pilih Hapus.
Untuk menghapus bucket S3
-
Buka konsol Amazon S3
. -
Pilih bucket yang Anda buat.
-
Pilih Hapus.
-
Masukkan nama ember di bidang input teks.
-
Pilih Hapus bucket.