
Terinspirasi oleh AWSLABS AWS-Server-Server-Express Library Tailor dibuat untuk kerangka kerja Web yang mengatasinya.
Tidak menggunakan soket internal, memanfaatkan fungsi injeksi Freattify.
Tampaknya lebih cepat (seperti namanya) daripada AWS-server-express dan AWS-server-fastify
$ npm i @fastify/aws-lambda @rectify/AWS-lambda dapat mengambil opsi dengan melewatinya dengan: awsLambdaFastify(app, options)
| milik | keterangan | nilai default |
|---|---|---|
| BinaryMimetypes | Array mimetipe biner untuk ditangani | [] |
| EnforforBase64 | Fungsi yang menerima respons dan mengembalikan boolean yang menunjukkan jika konten responsnya biner atau tidak dan harus dikodekan oleh basis64 | undefined |
| Serializelambdaarguments | Aktifkan serialisasi peristiwa dan konteks Lambda di header HTTP x-apigateway-event x-apigateway-context | false ( true untuk <v2.0.0) |
| DecorateRequest | Menghias permintaan pengisian ulang dengan acara lambda dan request.awsLambda.event konteks.awslambda.event request.awsLambda.context | true |
| DecorationPropertyName | Nama properti default untuk dekorasi permintaan | awsLambda |
| CallbackWaitsForEmptyEventLoop | Lihat: Dokumentasi resmi | undefined |
| Revainstage | Mempertahankan bagian panggung dari URL Gateway API | false |
| Pathparameterusedaspath | Gunakan pathparameter yang ditentukan sebagai path (yaitu 'proxy' ) | false |
| ParSecommaseparateQueryParams | Parse QueryString dengan koma menjadi berbagai nilai. Mempengaruhi perilaku parser querystring dengan koma saat menggunakan format payload versi 2.0 | true |
const awsLambdaFastify = require ( '@fastify/aws-lambda' )
const app = require ( './app' )
const proxy = awsLambdaFastify ( app )
// or
// const proxy = awsLambdaFastify(app, { binaryMimeTypes: ['application/octet-stream'], serializeLambdaArguments: false /* default is true */ })
exports . handler = proxy
// or
// exports.handler = (event, context, callback) => proxy(event, context, callback)
// or
// exports.handler = (event, context) => proxy(event, context)
// or
// exports.handler = async (event, context) => proxy(event, context) const fastify = require ( 'fastify' )
const app = fastify ( )
app . get ( '/' , ( request , reply ) => reply . send ( { hello : 'world' } ) )
if ( require . main === module ) {
// called directly i.e. "node app"
app . listen ( { port : 3000 } , ( err ) => {
if ( err ) console . error ( err )
console . log ( 'server listening on 3000' )
} )
} else {
// required as a module => executed on aws lambda
module . exports = app
} Saat dieksekusi dalam fungsi Lambda Anda, kami tidak perlu mendengarkan port tertentu, jadi kami hanya mengekspor app dalam kasus ini. File lambda.js akan menggunakan ekspor ini.
Saat Anda menjalankan aplikasi pengisian ulang seperti biasa, IE node app.js (deteksi untuk ini bisa require.main === module .
Acara dan konteks Lambda asli dilewati melalui permintaan pengisian ulang dan dapat digunakan seperti ini:
app . get ( '/' , ( request , reply ) => {
const event = request . awsLambda . event
const context = request . awsLambda . context
// ...
} ) Jika Anda tidak menyukainya, Anda dapat menonaktifkannya dengan mengatur opsi decorateRequest menjadi false .
Atau acara dan konteks Lambda asli dilewatkan melalui header dan dapat digunakan seperti ini, jika mengatur opsi serializeLambdaArguments ke true :
app . get ( '/' , ( request , reply ) => {
const event = JSON . parse ( decodeURIComponent ( request . headers [ 'x-apigateway-event' ] ) )
const context = JSON . parse ( decodeURIComponent ( request . headers [ 'x-apigateway-context' ] ) )
// ...
} ) Karena AWS Lambda sekarang memungkinkan penggunaan modul ecmascript (ES) di node.js 14 runtimes, Anda dapat menurunkan latensi awal yang dingin ketika digunakan dengan konkurensi yang disediakan berkat fungsionalitas menunggu tingkat atas.
Kita dapat menggunakan ini dengan memanggil fungsi fastify.ready() di luar fungsi penangan lambda, seperti ini:
import awsLambdaFastify from '@fastify/aws-lambda'
import app from './app.js'
export const handler = awsLambdaFastify ( app )
await app . ready ( ) // needs to be placed after awsLambdaFastify call because of the decoration: https://github.com/fastify/aws-lambda-fastify/blob/master/index.js#L9Di sini Anda dapat menemukan masalah yang menilai mendiskusikan fitur ini.
@retifikasi/AWS-lambda (dekorateRequest: false) x 56.892 OPS/SEC ± 3,73% (79 run sampled)
@racing/AWS-Lambda x 56.571 OPS/SEC ± 3,52% (82 run sampled)
@retifikasi/AWS-lambda (serializelambdaarguments: true) x 56.499 OPS/SEC ± 3,56% (76 run sampled)
Serverless-HTTP x 45.867 OPS/SEC ± 4,42% (83 run sampled)
AWS-Server-Fastify X 17.937 OPS/SEC ± 1,83% (86 run sampled)
AWS-Serverless-Express x 16.647 OPS/SEC ± 2,88% (87 run sampled)
Tercepat adalah @retifikasi/aws-lambda (dekorateRequest: false), @ompatifikasi/AWS-lambda
Logo yang ditampilkan di halaman ini adalah properti dari masing-masing organisasi dan mereka tidak didistribusikan di bawah lisensi yang sama dengan @fitify/AWS-Lambda (MIT).