Implementación de una función de Lambda utilizando el AWS CDK en CloudShell - AWS CloudShell

Implementación de una función de Lambda utilizando el AWS CDK en CloudShell

En este tutorial, se muestra cómo implementar una función de Lambda en su cuenta mediante AWS Cloud Development Kit (AWS CDK) en CloudShell.

Requisitos previos

  • Arranque su cuenta para usarla con AWS CDK. Para obtener más información acerca del proceso de arranque con AWS CDK, consulte Proceso de arranque en la Guía para desarrolladores de AWS CDK v2. Si no ha arrancado la cuenta, puede ejecutar cdk bootstrap en CloudShell.

  • Asegúrese de tener los permisos adecuados para implementar recursos en la cuenta. Se recomiendan permisos de administrador.

Procedimiento del tutorial

El siguiente tutorial describe cómo implementar una función de Lambda basada en contenedores de Docker mediante AWS CDK en CloudShell.

  1. Cree una carpeta en el directorio principal.

    mkdir ~/docker-cdk-tutorial
  2. Vaya a la carpeta que ha creado.

    cd ~/docker-cdk-tutorial
  3. Instale las dependencias de AWS CDK de forma local.

    npm install aws-cdk aws-cdk-lib
    Imagen del comando utilizado para instalar las dependencias de AWS CDK.
  4. Cree un proyecto de AWS CDK básico en la carpeta que ha creado.

    touch cdk.json mkdir lib touch lib/docker-tutorial.js lib/Dockerfile lib/hello.js
  5. Con un editor de texto, por ejemplo, nano cdk.json, abra el archivo y pegue el siguiente contenido en este.

    { "app": "node lib/docker-tutorial.js" }
  6. Abra el archivo lib/docker-tutorial.js y pegue en este el siguiente contenido.

    // this file defines the CDK constructs we want to deploy const { App, Stack } = require('aws-cdk-lib'); const { DockerImageFunction, DockerImageCode } = require('aws-cdk-lib/aws-lambda'); const path = require('path'); // create an application const app = new App(); // define stack class DockerTutorialStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // define lambda that uses a Docker container const dockerfileDir = path.join(__dirname); new DockerImageFunction(this, 'DockerTutorialFunction', { code: DockerImageCode.fromImageAsset(dockerfileDir), functionName: 'DockerTutorialFunction', }); } } // instantiate stack new DockerTutorialStack(app, 'DockerTutorialStack');
  7. Abra lib/Dockerfile y pegue en este el siguiente contenido.

    # Use a NodeJS 20.x runtime FROM public.ecr.aws/lambda/nodejs:20 # Copy the function code to the LAMBDA_TASK_ROOT directory # This environment variable is provided by the lambda base image COPY hello.js ${LAMBDA_TASK_ROOT} # Set the CMD to the function handler CMD [ "hello.handler" ]
  8. Abra el archivo lib/hello.js y pegue en este el siguiente contenido.

    // define the handler exports.handler = async (event) => { // simply return a friendly success response const response = { statusCode: 200, body: JSON.stringify('Hello, World!'), }; return response; };
  9. Utilice la CLI de AWS CDK para sintetizar el proyecto e implementar los recursos. Debe arrancar su cuenta.

    npx cdk synth npx cdk deploy --require-approval never
    Imagen del comando para usar la CLI de AWS CDK para sintetizar el proyecto e implementar los recursos.
  10. Invoque la función de Lambda para confirmar y verifíquela.

    aws lambda invoke --function-name DockerTutorialFunction out.json jq . out.json
    Imagen del comando que se usa para invocar la función de Lambda.

    Acaba de implementar correctamente una función de Lambda basada en contenedores de Docker mediante AWS CDK. Para obtener más información sobre AWS CDK, consulte la Guía para desarrolladores de AWS CDK v2. Si encuentra errores o tiene problemas al intentar completar este tutorial, consulte la sección Solución de problemas de esta guía para obtener ayuda.

Limpieza

Acaba de implementar correctamente una función de Lambda basada en contenedores de Docker mediante AWS CDK. Dentro del proyecto de AWS CDK, ejecute el siguiente comando para eliminar los recursos asociados. Se le pedirá que confirme la eliminación.

  • npx cdk destroy DockerTutorialStack
  • Para quitar de su entorno de AWS CloudShell los archivos y los recursos que ha creado en este tutorial, ejecute el siguiente comando.

    cd ~ rm -rf ~/docker-cli-tutorial