

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

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

# 开始使用本地测试
<a name="testing-locally-getting-started"></a>

本主题描述了结合使用 AWS SAM CLI 和 AWS CDK 应用程序所需的内容，并提供了构建和本地测试简单 AWS CDK 应用程序的说明。

## 先决条件
<a name="testing-locally-getting-started-prerequisites"></a>

要在本地进行测试，必须安装 AWS SAM CLI。有关安装说明，请参阅[安装 AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/getting_started.html)。

## 创建和本地测试 AWS CDK 应用程序
<a name="testing-locally-getting-started-tutorial"></a>

要使用 AWS SAM CLI 在本地测试 AWS CDK 应用程序，您必须拥有包含 Lambda 函数的 AWS CDK 应用程序。使用以下步骤创建带有 Lambda 函数的基本 AWS CDK 应用程序。有关更多信息，请参阅《AWS 云开发工具包 (AWS CDK) 开发人员指南》**中的 [Creating a serverless application using the AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/serverless_example.html)。<a name="testing-locally-getting-started-tutorial-init"></a>

 **步骤 1：创建 AWS CDK 应用程序**   
在本教程中，初始化一个使用 TypeScript 的 AWS CDK 应用程序。  
要运行的命令：  

```
$ mkdir cdk-sam-example
$ cd cdk-sam-example
$ cdk init app --language typescript
```<a name="testing-locally-getting-started-tutorial-lambda"></a>

 **第 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'),
    });
  }
}
```<a name="testing-locally-getting-started-tutorial-code"></a>

 **第 3 步：添加 Lambda 函数代码**   
创建名为 `my_function` 的目录。在此目录中，创建名为 `app.py` 的文件。  
要运行的命令：  

**Example**  

```
$ mkdir my_function
$ cd my_function
$ touch app.py
```

```
$ mkdir my_function
$ cd my_function
$ type nul > app.py
```

```
$ 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!"
```<a name="testing-locally-getting-started-tutorial-function"></a>

 **第 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
```