入门 Amazon SAM 和 Amazon CDK - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

入门 Amazon SAM 和 Amazon CDK

本主题描述了在 Amazon CDK 应用程序中 Amazon SAMCLI使用所需的内容,并提供了构建和本地测试简单 Amazon CDK 应用程序的说明。

先决条件

要与 Amazon SAMCLI一起使用 Amazon CDK,必须安装和 Amazon SAMCLI。 Amazon CDK

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

要使用在本地测试 Amazon CDK 应用程序 Amazon SAMCLI,您必须拥有包含 Lambda 函数的 Amazon CDK 应用程序。使用以下步骤创建带有 Lambda 函数的基本 Amazon CDK 应用程序。有关更多信息,请参阅《Amazon Cloud Development Kit (Amazon CDK) 开发人员指南》中的使用 Amazon CDK创建无服务器应用程序

注意

从 1.135.0 版本开始 Amazon SAMCLI支持 Amazon CDK v1 和从 2.0.0 版本开始的 Amazon CDK v2。

第 1 步:创建 Amazon CDK 应用程序

在本教程中,初始化一个使用的 Amazon CDK 应用程序 TypeScript。

要运行的命令:

Amazon CDK v2
mkdir cdk-sam-example cd cdk-sam-example cdk init app --language typescript
Amazon CDK v1
mkdir cdk-sam-example cd cdk-sam-example cdk init app --language typescript npm install @aws-cdk/aws-lambda

第 2 步:将 Lambda 函数添加到应用程序

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

Amazon CDK v2
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_9, handler: 'app.lambda_handler', code: lambda.Code.fromAsset('./my_function'), }); } }
Amazon CDK v1
import * as cdk from '@aws-cdk/core'; import * as lambda from '@aws-cdk/aws-lambda'; export class CdkSamExampleStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new lambda.Function(this, 'MyFunction', { runtime: lambda.Runtime.PYTHON_3_9, handler: 'app.lambda_handler', code: lambda.Code.fromAsset('./my_function'), }); } }

第 3 步:添加 Lambda 函数代码

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

要运行的命令:

mkdir my_function cd my_function touch app.py

将以下代码添加到 app.py

def lambda_handler(event, context): return "Hello from SAM and the CDK!"

第 4 步:测试 Lambda 函数

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

要运行的命令:

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

有关使用 Amazon SAM CLI 测试 Amazon CDK 应用程序的可用选项的更多信息,请参阅本地测试 Amazon CDK 应用程序