Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Bekerja dengan lapisan untuk fungsi TypeScript Lambda

Mode fokus
Bekerja dengan lapisan untuk fungsi TypeScript Lambda - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Lapisan Lambda adalah arsip file.zip yang berisi kode atau data tambahan. Lapisan biasanya berisi dependensi pustaka, runtime kustom, atau file konfigurasi. Membuat layer melibatkan tiga langkah umum:

  1. Package konten layer Anda. Ini berarti membuat arsip file.zip yang berisi dependensi yang ingin Anda gunakan dalam fungsi Anda.

  2. Buat layer di Lambda.

  3. Tambahkan layer ke fungsi Anda.

Topik ini berisi langkah-langkah dan panduan tentang cara mengemas dan membuat lapisan Lambda Node.js dengan dependensi pustaka eksternal dengan benar. Selain itu, topik ini menjelaskan cara menggunakan layer Anda dengan fungsi tertulis TypeScript.

Prasyarat

Untuk mengikuti langkah-langkah di bagian ini, Anda harus memiliki yang berikut:

Sepanjang topik ini, kami mereferensikan aplikasi sampel layer-nodejs di repositori. aws-lambda-developer-guide GitHub Aplikasi ini berisi skrip yang akan mengemas pustaka lodash ke dalam lapisan Lambda. layerDirektori berisi skrip untuk menghasilkan lapisan. Aplikasi ini juga berisi fungsi TypeScript sampel dalam function-ts direktori yang menggunakan dependensi dari lapisan. Setelah membuat layer, Anda dapat mentranspile, menyebarkan, dan memanggil fungsi yang sesuai untuk memverifikasi bahwa semuanya berfungsi. Dokumen ini berjalan melalui cara membuat, mengemas, menyebarkan, dan menguji lapisan ini menggunakan fungsi TypeScript sampel.

Contoh aplikasi ini menggunakan runtime Node.js 20. Jika Anda menambahkan dependensi tambahan ke lapisan Anda, mereka harus kompatibel dengan Node.js 20.

Kompatibilitas lapisan Node.js dengan lingkungan runtime Lambda

Saat Anda mengemas kode dalam lapisan Node.js, Anda menentukan lingkungan runtime Lambda yang kompatibel dengan kode tersebut. Untuk menilai kompatibilitas kode dengan runtime, pertimbangkan versi Node.js, sistem operasi apa, dan arsitektur set instruksi apa yang dirancang untuk kode tersebut.

Runtime Lambda Node.js menentukan versi Node.js dan sistem operasi mereka. Dalam dokumen ini, Anda akan menggunakan runtime Node.js 20, yang didasarkan pada AL2 023. Untuk informasi selengkapnya tentang versi runtime, lihatWaktu aktif yang didukung. Saat Anda membuat fungsi Lambda, Anda menentukan arsitektur set instruksi. Dalam dokumen ini, Anda akan menggunakan arm64 arsitektur. Untuk informasi lebih lanjut tentang arsitektur di Lambda, lihat. Memilih dan mengonfigurasi arsitektur set instruksi untuk fungsi Lambda Anda

Bila Anda menggunakan kode yang disediakan dalam sebuah paket, setiap pengelola paket secara independen mendefinisikan kompatibilitasnya. Sebagian besar pengembangan Node.js dirancang untuk bekerja secara independen dari sistem operasi dan arsitektur set instruksi. Selain itu, melanggar ketidakcocokan dengan versi Node.js baru tidak begitu umum. Berharap untuk menghabiskan lebih banyak waktu Anda untuk menilai kompatibilitas antar paket daripada menilai kompatibilitas paket dengan versi Node.js, sistem operasi, atau arsitektur set instruksi.

Terkadang paket Node.js menyertakan kode yang dikompilasi, yang mengharuskan Anda mempertimbangkan kompatibilitas arsitektur sistem operasi dan set instruksi. Jika Anda perlu menilai kompatibilitas kode untuk paket Anda, Anda perlu memeriksa paket dan dokumentasinya. Paket di NPM dapat menentukan kompatibilitasnya melaluiengines,os, dan cpu bidang file package.json manifes mereka. Untuk informasi selengkapnya tentang package.json file, lihat package.json di dokumentasi NPM.

Jalur lapisan untuk runtime Node.js

Saat Anda menambahkan layer ke fungsi, Lambda memuat konten layer ke dalam lingkungan eksekusi. Jika layer Anda mengemas dependensi di jalur folder tertentu, lingkungan eksekusi Node.js akan mengenali modul, dan Anda dapat mereferensikan modul dari kode fungsi Anda.

Untuk memastikan bahwa modul Anda diambil, paketkan ke dalam file layer .zip Anda di salah satu jalur folder berikut. File-file ini disimpan di/opt, dan jalur folder dimuat ke dalam variabel PATH lingkungan.

  • nodejs/node_modules

  • nodejs/nodeX/node_modules

Misalnya, file layer .zip yang dihasilkan yang Anda buat dalam tutorial ini memiliki struktur direktori berikut:

layer_content.zip └ nodejs └ node20 └ node_modules └ lodash └ <other potential dependencies> └ ...

Anda akan menempatkan lodashperpustakaan di nodejs/node20/node_modules direktori. Ini memastikan bahwa Lambda dapat menemukan pustaka selama pemanggilan fungsi.

Mengemas konten lapisan

Dalam contoh ini, Anda mengemas lodash pustaka dalam file layer .zip. Selesaikan langkah-langkah berikut untuk menginstal dan mengemas konten lapisan.

Untuk menginstal dan mengemas konten lapisan Anda
  1. Kloning aws-lambda-developer-guiderepositori dari GitHub, yang berisi kode sampel yang Anda butuhkan di direktori. sample-apps/layer-nodejs

    git clone https://github.com/awsdocs/aws-lambda-developer-guide.git
  2. Arahkan ke layer direktori aplikasi layer-nodejs sampel. Direktori ini berisi skrip yang Anda gunakan untuk membuat dan mengemas lapisan dengan benar.

    cd aws-lambda-developer-guide/sample-apps/layer-nodejs/layer
  3. Pastikan daftar package.json filelodash. File ini mendefinisikan dependensi yang ingin Anda sertakan dalam layer. Anda dapat memperbarui file ini untuk menyertakan dependensi apa pun yang Anda inginkan di lapisan Anda.

    catatan

    Yang package.json digunakan dalam langkah ini tidak disimpan atau digunakan dengan dependensi Anda setelah diunggah ke lapisan Lambda. Ini hanya digunakan dalam proses pengemasan lapisan, dan tidak menentukan perintah run dan kompatibilitas seperti file dalam aplikasi Node.js atau paket yang diterbitkan.

  4. Pastikan Anda memiliki izin shell untuk menjalankan skrip di layer direktori.

    chmod 744 1-install.sh && chmod 744 2-package.sh
  5. Jalankan skrip 1-install.sh menggunakan perintah berikut:

    ./1-install.sh

    Skrip ini berjalannpm install, yang membaca Anda package.json dan mengunduh dependensi yang ditentukan di dalamnya.

    contoh 1-install.sh
    npm install .
  6. Jalankan skrip 2-package.sh menggunakan perintah berikut:

    ./2-package.sh

    Script ini menyalin isi dari node_modules direktori ke direktori baru bernamanodejs/node20. Kemudian zip isi nodejs direktori ke dalam file bernamalayer_content.zip. Ini adalah file.zip untuk layer Anda. Anda dapat membuka zip file dan memverifikasi bahwa itu berisi struktur file yang benar, seperti yang ditunjukkan pada Jalur lapisan untuk runtime Node.js bagian.

    contoh 2-package.sh
    mkdir -p nodejs/node20 cp -r node_modules nodejs/node20/ zip -r layer_content.zip nodejs

Membuat layer

Ambil layer_content.zip file yang Anda buat di bagian sebelumnya dan unggah sebagai lapisan Lambda. Anda dapat mengunggah layer menggunakan AWS Management Console atau Lambda API melalui AWS Command Line Interface ()AWS CLI. Saat Anda mengunggah file layer .zip Anda, dalam PublishLayerVersion AWS CLI perintah berikut, tentukan nodejs20.x sebagai runtime yang kompatibel dan arm64 sebagai arsitektur yang kompatibel.

aws lambda publish-layer-version --layer-name nodejs-lodash-layer \ --zip-file fileb://layer_content.zip \ --compatible-runtimes nodejs20.x \ --compatible-architectures "arm64"

Dari tanggapan, perhatikanLayerVersionArn, yang terlihat sepertiarn:aws:lambda:us-east-1:123456789012:layer:nodejs-lodash-layer:1. Anda akan memerlukan Amazon Resource Name (ARN) ini di langkah berikutnya dari tutorial ini, ketika Anda menambahkan layer ke fungsi Anda.

Menambahkan layer ke fungsi Anda

Menyebarkan contoh fungsi Lambda yang menggunakan lodash pustaka dalam kode fungsinya, lalu lampirkan layer yang Anda buat. Untuk membuat fungsi Lambda menggunakan kode fungsi tertulis TypeScript, Anda harus mentranspile TypeScript to JavaScript untuk digunakan oleh runtime Node.js. Untuk informasi lebih lanjut tentang proses ini, lihatTentukan penangan fungsi Lambda di TypeScript. Untuk kompatibilitas yang lebih baik, gunakan tsc untuk mentranspilasi TypeScript modul Anda saat Anda mendistribusikan dependensi Anda dengan lapisan. Jika Anda menggabungkan dependensi Anda, pertimbangkan untuk menggunakan esbuild. Untuk informasi lebih lanjut tentang bundling dengan esbuild, lihat. Terapkan TypeScript kode yang ditranspilasikan di Lambda dengan arsip file.zip

Untuk menerapkan fungsi, Anda memerlukan peran eksekusi. Untuk informasi selengkapnya, lihat Mendefinisikan izin fungsi Lambda dengan peran eksekusi. Jika Anda tidak memiliki peran eksekusi yang ada, ikuti langkah-langkah di bagian yang dapat dilipat. Jika tidak, lewati ke bagian berikutnya untuk menyebarkan fungsi.

Untuk membuat peran eksekusi
  1. Buka halaman peran di konsol IAM.

  2. Pilih Buat peran.

  3. Buat peran dengan properti berikut.

    • Entitas tepercayaLambda.

    • IzinAWSLambdaBasicExecutionRole.

    • Nama peranlambda-role.

    AWSLambdaBasicExecutionRoleKebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

Untuk membuat peran eksekusi
  1. Buka halaman peran di konsol IAM.

  2. Pilih Buat peran.

  3. Buat peran dengan properti berikut.

    • Entitas tepercayaLambda.

    • IzinAWSLambdaBasicExecutionRole.

    • Nama peranlambda-role.

    AWSLambdaBasicExecutionRoleKebijakan ini memiliki izin yang diperlukan fungsi untuk menulis log ke CloudWatch Log.

Kode fungsi sampel menggunakan _.findLastIndex metode lodash untuk membaca melalui array objek. Ini membandingkan objek dengan kriteria untuk menemukan indeks kecocokan. Kemudian, ia mengembalikan indeks dan nilai objek dalam respons Lambda.

import { Handler } from 'aws-lambda'; import * as _ from 'lodash'; type User = { user: string; active: boolean; } type UserResult = { statusCode: number; body: string; } const users: User[] = [ { 'user': 'Carlos', 'active': true }, { 'user': 'Gil-dong', 'active': false }, { 'user': 'Pat', 'active': false } ]; export const handler: Handler<any, UserResult> = async (): Promise<UserResult> => { let out = _.findLastIndex(users, (user: User) => { return user.user == 'Pat'; }); const response = { statusCode: 200, body: JSON.stringify(out + ", " + users[out].user), }; return response; };
Untuk menyebarkan fungsi Lambda
  1. Arahkan ke function-ts/ direktori aplikasi layer-nodejs sampel. Jika saat ini Anda berada di layer/ direktori aplikasi layer-nodejs sampel, maka jalankan perintah berikut:

    cd ../function-ts
  2. Instal dependensi pengembangan yang tercantum dalam package.json menggunakan perintah berikut:

    npm install
  3. Jalankan build tugas yang ditentukan dalam package.json untuk mentranspile dan mengemas kode fungsi Anda ke dalam file.zip. Gunakan perintah berikut ini.

    npm run build
  4. Menyebarkan fungsi. Dalam AWS CLI perintah berikut, ganti --role parameter dengan peran eksekusi ARN Anda:

    aws lambda create-function --function-name nodejs_function_with_layer \ --runtime nodejs20.x \ --architectures "arm64" \ --handler index.handler \ --role arn:aws:iam::123456789012:role/lambda-role \ --zip-file fileb://dist/index.zip
  5. Pasang layer ke fungsi Anda. Dalam AWS CLI perintah berikut, ganti --layers parameter dengan versi lapisan ARN yang Anda catat sebelumnya:

    aws lambda update-function-configuration --function-name nodejs_function_with_layer \ --cli-binary-format raw-in-base64-out \ --layers "arn:aws:lambda:us-east-1:123456789012:layer:nodejs-lodash-layer:1"
  6. Panggil fungsi Anda untuk memverifikasi itu berfungsi menggunakan AWS CLI perintah berikut:

    aws lambda invoke --function-name nodejs_function_with_layer \ --cli-binary-format raw-in-base64-out \ --payload '{}' response.json

    Anda akan melihat output seperti ini:

    { "StatusCode": 200, "ExecutedVersion": "$LATEST" }

    response.jsonFile output berisi rincian tentang respon.

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 layer Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih layer yang Anda buat.

  3. Pilih Hapus, lalu pilih Hapus lagi.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm kolom input teks dan pilih Hapus.

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 layer Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih layer yang Anda buat.

  3. Pilih Hapus, lalu pilih Hapus lagi.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm kolom input teks dan pilih Hapus.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.