使用 SAM AWS 本機測試 AWS CDK 應用程式 - AWS 雲端開發套件 (AWS CDK) v2

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。

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

使用 SAM AWS 本機測試 AWS CDK 應用程式

您可以使用 AWS SAM CLI,從 AWS CDK 應用程式的專案根目錄執行下列命令,在本機測試您的 AWS CDK 應用程式:

在使用 AWS CDK 應用程式執行任何sam local命令之前,您必須執行 cdk synth

執行時sam local invoke,您需要要叫用的函數建構識別符,以及合成 AWS CloudFormation 範本的路徑。如果您的應用程式使用巢狀堆疊,為了解決命名衝突,您也需要定義函數的堆疊名稱。

用途
# Invoke the function FUNCTION_IDENTIFIER declared in the stack STACK_NAME $ sam local invoke <OPTIONS> <STACK_NAME/FUNCTION_IDENTIFIER> # Start all APIs declared in the AWS CDK application $ sam local start-api -t <./cdk.out/CdkSamExampleStack.template.json> <OPTIONS> # Start a local endpoint that emulates AWS Lambda $ sam local start-lambda -t <./cdk.out/CdkSamExampleStack.template.json> <OPTIONS>

範例

請考慮使用下列範例宣告的堆疊和函數:

app = new HelloCdkStack(app, "HelloCdkStack", ... ) class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { ... new lambda.Function(this, 'MyFunction', { ... }); new HelloCdkNestedStack(this, 'HelloNestedStack' ,{ ... }); } } class HelloCdkNestedStack extends cdk.NestedStack { constructor(scope: Construct, id: string, props?: cdk.NestedStackProps) { ... new lambda.Function(this, 'MyFunction', { ... }); new lambda.Function(this, 'MyNestedFunction', { ... }); } }

下列命令會在本機叫用上述範例中定義的 Lambda 函數:

# Invoke MyFunction from the HelloCdkStack $ sam local invoke -t <./cdk.out/HelloCdkStack.template.json> <MyFunction>
# Invoke MyNestedFunction from the HelloCdkNestedStack $ sam local invoke -t <./cdk.out/HelloCdkStack.template.json> <MyNestedFunction>
# Invoke MyFunction from the HelloCdkNestedStack $ sam local invoke -t <./cdk.out/HelloCdkStack.template.json> <HelloNestedStack/MyFunction>