開始使用 AWS SAM 和 AWS CDK - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使用 AWS SAM 和 AWS CDK

本主題說明 AWS SAMCLI搭配 AWS CDK 應用程式使用所需的內容,並提供建置和在本機測試簡單 AWS CDK 應用程式的指示。

必要條件

若要 AWS SAMCLI與一起使用 AWS CDK,您必須安裝和 AWS SAMCLI. AWS CDK

建立並在本機測試 AWS CDK 應用程式

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

注意

從版本 1.135.0 和第 AWS CDK 2 版開始,從 2.0.0 版開始 AWS SAMCLI支援 AWS CDK 第 1 版。

步驟 1:建立 AWS CDK 應用程式

在本教學課程中, AWS CDK 請初始化使用 TypeScript.

要執行的命令:

AWS CDK v2
mkdir cdk-sam-example cd cdk-sam-example cdk init app --language typescript
AWS 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的程式碼:

AWS 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'), }); } }
AWS 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 函數

您可以使用在本 AWS SAMCLI機叫用您在應用 AWS CDK 程式中定義的 Lambda 函數。為此,您需要函數構造標識符和合成 AWS 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

如需有關使用 AWS SAM CLI 測試 AWS CDK 應用程式的可用選項的詳細資訊,請參閱在本地測試 AWS CDK 應用程序 AWS SAM