AWS Lambda:如何处理由尚不存在的环境变量定义的代码资产?

AWS Lambda : how to handle a code asset defined by an environment variable that does not exist yet?

我(尝试)使用 CDK 管道部署我当前的应用程序。

在这样做的过程中,我偶然发现了一个意外的行为(here 如果感兴趣的话),现在我正试图解决这个问题。我有一个 Lambda 函数,其资产是在 CodeBuild 步骤期间动态生成的目录。该行目前在我的 CDK 堆栈中是这样定义的:

code: lambda.Code.fromAsset(process.env.CODEBUILD_SRC_DIR_BuildLambda || "")

问题是在本地,这会触发意外和不希望的行为,因为环境变量不存在,因此会转到默认值 ""

避免此问题的正确方法是什么?

谢谢!

选项 1: 在本地设置环境变量,指向正确的源目录;

CODEBUILD_SRC_DIR_BuildLambda=path/to/lambda && cdk deploy

选项 2: 如果 CODEBUILD_SRC_DIR_BuildLambda 未定义,则定义虚拟资产

code: process.env.CODEBUILD_SRC_DIR_BuildLambda
  ? lambda.Code.fromAsset(process.env.CODEBUILD_SRC_DIR_BuildLambda)
  : new lambda.InlineCode('exports.handler = async () => console.log("NEVER")'),