#aws-lambda #aws-cdk #esbuild
Вопрос:
У меня есть лямбда-функция, которая должна возвращать полезную нагрузку буфера сериализованного протокола. Для этого мне нужен файл myobject.proto
в том же каталоге, что и обработчик лямбда.
Для самой функции я использую конструкцию AWS CDK NodejsFunction
.
new NodejsFunction(this, 'LambdaThatCreatesProtobufPayload', {
entry: './src/lambda/handlers/LambdaThatCreatesProtobufPayload.ts',
handler: 'handler',
bundling: {
minify: true,
}
});
Как я могу включить файл proto в результирующий пакет или предоставить его функции lambda?
Ответ №1:
Можно объединить файл, подобный myobject.proto
файлу, с загрузчиком файлов Esbuild.
Настройте пакет для использования загрузчика файлов для файлов с .proto.
new NodejsFunction(this, 'LambdaThatCreatesProtobufPayload', {
entry: './src/lambda/handlers/LambdaThatCreatesProtobufPayload.ts',
handler: 'handler',
bundling: {
minify: true,
loader: { '.proto': 'file' }
}
});
Затем требуется файл внутри обработчика.
const pathToProto = require('./myobject.proto')
Прилагаемый файл имеет другое имя файла. Поэтому pathToProto
содержит путь с новым именем файла:
./myobject-55DNWN2R.прото
Это приводит к развертыванию лямбда-кода с файлом прото и файлом обработчика в одном каталоге.