本地测试入门 - AWS Cloud Development Kit (AWS CDK) v2

这是 AWS CDK v2 开发者指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段,并于 2023 年 6 月 1 日终止支持。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本地测试入门

本主题介绍在 AWS CDK 应用程序中使用 AWS SAM CLI 所需的内容,并提供了构建和本地测试简单 AWS CDK 应用程序的说明。

先决条件

要在本地进行测试,必须安装 AWS SAM CLI。有关安装说明,请参阅安装 AWS SAM CLI

创建和本地测试 AWS CDK 应用程序

要使用 SA AWS M CLI 在本地测试 AWS CDK 应用程序,您必须拥有包含 Lambda 函数的 AWS CDK 应用程序。使用以下步骤创建带有 Lambda 函数的基本 AWS CDK 应用程序。有关更多信息,请参阅 C AWS loud Development Kit ( AWS CDK) 开发者指南中的使用AWS CDK 创建无服务器应用程序

步骤 1:创建 AWS CDK 应用程序

在本教程中,请初始化使用 TypeScript的 AWS CDK 应用程序。

要运行的命令:

$ mkdir cdk-sam-example $ cd cdk-sam-example $ cdk init app --language typescript
步骤 2:向您的应用程序添加 Lambda 函数

使用以下内容替换 lib/cdk-sam-example-stack.ts 中的代码:

import { Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as lambda from 'aws-cdk-lib/aws-lambda'; export class CdkSamExampleStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new lambda.Function(this, 'MyFunction', { runtime: lambda.Runtime.PYTHON_3_12, handler: 'app.lambda_handler', code: lambda.Code.fromAsset('./my_function'), }); } }
第 3 步:添加您的 Lambda 函数代码

创建名为 my_function 的目录。在此目录中,创建名为 app.py 的文件。

要运行的命令:

macOS / Linux
$ mkdir my_function $ cd my_function $ touch app.py
Windows
$ mkdir my_function $ cd my_function $ type nul > app.py
PowerShell
$ mkdir my_function $ cd my_function $ New-Item -Path "app.py”

将以下代码添加到 app.py

def lambda_handler(event, context): return "Hello from SAM and the CDK!"
第 4 步:测试您的 Lambda 函数

您可以使用 AWS SAM CLI 在本地调用您在 AWS CDK 应用程序中定义的 Lambda 函数。为此,你需要函数构造标识符和合成 AWS CloudFormation 模板的路径。

运行以下命令返回lib目录:

$ cd ..

要运行的命令:

$ cdk synth --no-staging
$ sam local invoke MyFunction --no-event -t ./cdk.out/CdkSamExampleStack.template.json

输出示例:

Invoking app.lambda_handler (python3.9)

START RequestId: 5434c093-7182-4012-9b06-635011cac4f2 Version: $LATEST
"Hello from SAM and the CDK!"
END RequestId: 5434c093-7182-4012-9b06-635011cac4f2
REPORT RequestId: 5434c093-7182-4012-9b06-635011cac4f2	Init Duration: 0.32 ms	Duration: 177.47 ms	Billed Duration: 178 ms	Memory Size: 128 MB	Max Memory Used: 128 MB