本機測試入門 - AWS 雲端開發套件 (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 應用程式

若要使用 SAM AWS CLI 在本機測試 AWS CDK 應用程式,您必須擁有包含 Lambda 函數的 AWS CDK 應用程式。使用下列步驟建立具有 Lambda 函數的基本 AWS CDK 應用程式。如需詳細資訊,請參閱《雲端開發套件 (CDK) 開發人員指南》中的使用 AWS CDK 建立無伺服器應用程式 AWS AWS

步驟 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