【问题标题】:Include proto file in NodejsFunction constructs target bundle在 NodejsFunction 构造目标包中包含 proto 文件
【发布时间】:2021-05-17 15:19:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: aws-lambda aws-cdk esbuild


    【解决方案1】:

    可以将myobject.proto 之类的文件与Esbuild file loader 捆绑在一起。

    将捆绑器配置为使用文件加载器来处理带有 .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 文件和处理程序文件位于同一目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多