

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Implementación de una función Lambda mediante el AWS CDK CloudShell
<a name="tutorial-docker-cdk-deploy"></a>

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

## Requisitos previos
<a name="prerequisites-docker-cdk-deploy"></a>
+ Arranque su cuenta para usarla con AWS CDK. *Para obtener información sobre el arranque con AWS CDK, consulte Bootstrapping en la Guía para desarrolladores de la [versión](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) 2.AWS CDK * Si no has iniciado la cuenta, puedes entrar corriendo. `cdk bootstrap` CloudShell
+ Asegúrese de tener los permisos adecuados para implementar recursos en la cuenta. Se recomiendan permisos de administrador.

## Procedimiento del tutorial
<a name="tutorial-docker-cdk-deploy-steps"></a>

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

1. Cree una carpeta en el directorio principal.

   ```
   mkdir ~/docker-cdk-tutorial
   ```

1. Vaya a la carpeta que ha creado.

   ```
   cd ~/docker-cdk-tutorial
   ```

1. Instale las dependencias de forma local. AWS CDK 

   ```
   npm install aws-cdk aws-cdk-lib
   ```  
![\[Imagen del comando utilizado para instalar las AWS CDK dependencias.\]](http://docs.aws.amazon.com/es_es/cloudshell/latest/userguide/images/docker-cdk-tutorial%20-%201-setup.png)

1. Cree un AWS CDK proyecto básico en la carpeta que creó.

   ```
   touch cdk.json
   mkdir lib
   touch lib/docker-tutorial.js lib/Dockerfile lib/hello.js
   ```

1. 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"
   }
   ```

1. 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');
   ```

1. 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" ]
   ```

1. 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;
   };
   ```

1. Utilice la AWS CDK CLI 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 AWS CDK CLI para sintetizar el proyecto e implementar los recursos.\]](http://docs.aws.amazon.com/es_es/cloudshell/latest/userguide/images/docker-cdk-tutorial%20-%203-cdk-deploy-build.png)

1. 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.\]](http://docs.aws.amazon.com/es_es/cloudshell/latest/userguide/images/docker-cdk-tutorial%20-%205-lambda-invoke.png)

   Acaba de implementar correctamente una función de Lambda basada en contenedores de Docker mediante AWS CDK. Para obtener más información AWS CDK, consulte la [Guía para desarrolladores de AWS CDK la versión 2](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html). Si encuentra errores o tiene problemas al intentar completar este tutorial, consulte la sección [Solución de problemas](https://docs.aws.amazon.com/cloudshell/latest/userguide/troubleshooting.html) de esta guía para obtener ayuda.

## Limpieza
<a name="clean-up-docker-cdk-deploy"></a>

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

  ```
  npx cdk destroy DockerTutorialStack
  ```
+ Para eliminar de su AWS CloudShell entorno los archivos y recursos que creó en este tutorial, ejecute el siguiente comando.

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