Pruebas locales de aplicaciones de AWS CDK con AWS SAM - AWS Cloud Development Kit (AWS CDK) v2

Esta es la segunda versión de la Guía para desarrolladores de AWS CDK. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.

Pruebas locales de aplicaciones de AWS CDK con AWS SAM

Puede usar la CLI de AWS SAM para probar sus aplicaciones de AWS CDK localmente ejecutando los siguientes comandos desde el directorio raíz del proyecto de su aplicación de AWS CDK:

Antes de ejecutar cualquiera de los comandos sam local con una aplicación de AWS CDK, debe ejecutar cdk synth.

Al ejecutar sam local invoke, necesitarás el identificador de constructo de la función que desee invocar y la ruta a la plantilla de AWS CloudFormation sintetizada. Si la aplicación utiliza pilas anidadas, para resolver conflictos de nomenclatura también necesitarás el nombre de la pila en la que se define la función.

Uso
# 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>

Ejemplo

Considerar las pilas y las funciones que se declaran en el siguiente ejemplo:

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', { ... }); } }

Los siguientes comandos invocan localmente las funciones de Lambda definidas en el siguiente ejemplo:

# 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>