#aws-lambda #lambda #cdk #bootstrap #aws #function

bin+lib bootstrap_aws_lambdas

使用 Rust 部署 AWS Lambda 二进制文件

5 个版本

0.0.5 2024年6月23日
0.0.4 2024年6月22日
0.0.3 2024年6月22日
0.0.2 2024年6月21日
0.0.1 2024年6月21日

637Web 编程

Download history 385/week @ 2024-06-21 10/week @ 2024-06-28 11/week @ 2024-07-05

每月下载量:192

MIT 许可证

9KB
136

Bootstrap AWS Lambda 函数

Crates.io

使用此包准备 Rust 二进制文件,以便与 CDK Lambda 构造函数一起使用。CDK Lambda 构造函数期望二进制文件命名为 bootstrap

用法

将包安装为 CLI 工具

cargo install bootstrap_aws_lambdas

然后运行

bootstrap_aws_lambdas <source_path> <target_path>

它将在 source_path 中查找所有可执行二进制文件,并将每个二进制文件复制到 <target_path>/<binary_name>/bootstrap

示例

创建 Rust 应用程序并构建二进制文件(例如 aws_lambdas_workspace 应用程序,该应用程序将构建 bin_onebin_two 二进制文件)。

运行

bootstrap_aws_lambdas ./target/debug ./build

此包将发现可执行二进制文件 bin_onebin_two,并将它们从 ./target/debug 复制到 ./build/<binary_name>/bootstrap

aws_lambdas_workspace/target/debug
├── bin_one
├── bin_one.d
├── bin_two
├── bin_two.d
├── build
├── deps
├── examples
└── incremental

aws_lambdas_workspace/build
├── bin_one
   └── bootstrap
└── bin_two
    └── bootstrap

现在您可以准备使用任何可以与二进制文件一起工作的 AWS CDK Lambda 构造函数。以下是一个 TypeScript 示例

import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as lambda from "aws-cdk-lib/aws-lambda";
import path = require("node:path");

export class CdkTypescriptStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Define the path to the Rust project
    const rustProjectPath = path.join(__dirname, "..", "lambdas");

    const binOneLambda = new lambda.Function(this, "MyFirstRustLambda", {
      runtime: lambda.Runtime.PROVIDED_AL2,
      handler: "bootstrap",
      // this construct expects bootstrap binary at <project_root>/lambdas/bin_one/bootstrap
      code: lambda.Code.fromAsset(path.join(rustProjectPath, "bin_one")),
      functionName: "my-bin-one-lambda",
    });

    const binTwoLambda = new lambda.Function(this, "MySecondRustLambda", {
      runtime: lambda.Runtime.PROVIDED_AL2,
      handler: "bootstrap",
      // this construct expects bootstrap binary at <project_root>/lambdas/bin_two/bootstrap
      code: lambda.Code.fromAsset(path.join(rustProjectPath, "bin_two")),
      functionName: "my-bin-two-lambda",
    });
  }
}

无运行时依赖项