Membangun fungsi Node.js Lambda dengan esbuild - AWS Serverless Application Model

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

Membangun fungsi Node.js Lambda dengan esbuild

Untuk membangun dan mengemas AWS Lambda fungsi Node.js, Anda dapat menggunakan AWS SAMCLI JavaScript bundler dengan esbuild. Bundler esbuild mendukung fungsi Lambda yang Anda tulis. TypeScript

Untuk membangun fungsi Lambda Node.js dengan esbuild, tambahkan Metadata objek ke AWS:Serverless::Function sumber daya Anda dan tentukan esbuild untuk. BuildMethod Saat Anda menjalankan sam build perintah, AWS SAM gunakan esbuild untuk menggabungkan kode fungsi Lambda Anda.

Properti metadata

MetadataObjek mendukung properti berikut untuk esbuild.

BuildMethod

Menentukan bundler untuk aplikasi Anda. Satu-satunya nilai yang di-support adalah esbuild.

BuildProperties

Menentukan properti build untuk kode fungsi Lambda Anda.

BuildPropertiesObjek mendukung properti berikut untuk esbuild. Semua properti adalah opsional. Secara default, AWS SAM gunakan penangan fungsi Lambda Anda untuk titik masuk.

EntryPoints

Menentukan titik masuk untuk aplikasi Anda.

Eksternal

Menentukan daftar paket untuk menghilangkan dari build. Untuk informasi lebih lanjut, lihat Eksternal di esbuildsitus web.

format

Menentukan format output dari JavaScript file yang dihasilkan dalam aplikasi Anda. Untuk informasi selengkapnya, lihat Format di situs web esbuild.

Loader

Menentukan daftar konfigurasi untuk memuat data untuk jenis file tertentu.

MainFields

Menentukan package.json bidang untuk mencoba mengimpor ketika menyelesaikan paket. Nilai default-nya adalah main,module.

Mengecilkan

Menentukan apakah untuk mengecilkan kode output dibundel. Nilai default-nya adalah true.

OutExtension

Kustomisasi ekstensi file dari file yang dihasilkan esBUILD. Untuk informasi lebih lanjut, lihat Ekstensi keluar di situs web esbuild.

Peta sumber

Menentukan apakah bundler menghasilkan file peta sumber. Nilai default-nya adalah false.

Ketika diatur ketrue, NODE_OPTIONS: --enable-source-maps ditambahkan ke variabel lingkungan fungsi Lambda, dan peta sumber dihasilkan dan disertakan dalam fungsi.

Atau, ketika NODE_OPTIONS: --enable-source-maps disertakan dalam variabel lingkungan fungsi, secara otomatis Sourcemap diatur ketrue.

Saat berkonflik, lebih Sourcemap: false diutamakan. NODE_OPTIONS: --enable-source-maps

catatan

Secara default, Lambda mengenkripsi semua variabel lingkungan saat istirahat dengan (). AWS Key Management Service AWS KMS Saat menggunakan peta sumber, agar penerapan berhasil, peran eksekusi fungsi Anda harus memiliki izin untuk melakukan kms:Encrypt tindakan.

SourcesContent

Menentukan apakah akan menyertakan kode sumber Anda dalam file peta sumber Anda. Konfigurasikan properti ini saat Sourcemap disetel ke'true'.

  • Tentukan SourcesContent: 'true' untuk menyertakan semua kode sumber.

  • Tentukan SourcesContent: 'false' untuk mengecualikan semua kode sumber. Ini menghasilkan ukuran file peta sumber yang lebih kecil, yang berguna dalam produksi dengan mengurangi waktu start-up. Namun, kode sumber tidak akan tersedia di debugger.

Nilai default-nya adalah SourcesContent: true.

Untuk informasi selengkapnya, lihat Konten sumber di situs web esbuild.

Target

Menentukan versi ECMAScript target. Nilai default-nya adalah es2020.

TypeScript Contoh fungsi Lambda

Contoh cuplikan AWS SAM template berikut menggunakan esbuild untuk membuat fungsi Lambda Node.js dari kode di. TypeScript hello-world/app.ts

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.handler Runtime: nodejs20.x Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Environment: Variables: NODE_OPTIONS: --enable-source-maps Metadata: BuildMethod: esbuild BuildProperties: Format: esm Minify: false OutExtension: - .js=.mjs Target: "es2020" Sourcemap: true EntryPoints: - app.ts External: - "<package-to-exclude>"