0

我有一个 lambda 函数,它应该返回一个序列化的协议缓冲区有效负载。为此,我需要myobject.proto与 lambda 处理程序位于同一目录中。

对于函数本身,我使用 AWS CDK 构造NodejsFunction

new NodejsFunction(this, 'LambdaThatCreatesProtobufPayload', {
    entry: './src/lambda/handlers/LambdaThatCreatesProtobufPayload.ts',
    handler: 'handler',
    bundling: {
        minify: true,
    }
});

如何在生成的包中包含 proto 文件或将其提供给 lambda 函数?

4

1 回答 1

0

可以将文件myobject.protoEsbuild 文件加载器捆绑在一起。

将捆绑器配置为使用文件加载器来处理带有 .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.proto

这导致部署的 lambda 与 proto 文件和处理程序文件位于同一目录中。

于 2021-05-18T10:14:41.680 回答