

# Desarrollo local de funciones de Lambda con VS Code
<a name="foundation-iac-local-development"></a>

Puede mover las funciones de Lambda de la consola de Lambda a Visual Studio Code, que brinda un entorno de desarrollo completo y le permite utilizar otras opciones de desarrollo local, como AWS SAM y AWS CDK.

## Beneficios clave del desarrollo local
<a name="lambda-functions-vscode-benefits"></a>

Si bien la consola de Lambda brinda una forma rápida de editar y probar funciones, el desarrollo local ofrece capacidades más avanzadas:
+ **Características avanzadas del IDE**: herramientas de depuración, finalización de código y refactorización
+ **Desarrollo sin conexión**: trabaje y pruebe los cambios de manera local antes de su implementación en la nube
+ **Integración de la infraestructura como código**: uso sin problemas con AWS SAM, AWS CDK e Infrastructure Composer
+ **Administración de dependencias**: control total sobre las dependencias de las funciones

## Requisitos previos
<a name="lambda-functions-vscode-prerequisites"></a>

Antes de desarrollar funciones de Lambda de manera local en VS Code, debe tener:
+ **VS Code**: para obtener instrucciones acerca de la instalación, consulte [Descargar VS Code](https://code.visualstudio.com/download).
+ **AWS Toolkit for Visual Studio Code**: para obtener instrucciones acerca de la instalación, consulte [Configuración de AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html). Para obtener una descripción general, consulte [AWS Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/).
+ **Credenciales de AWS**: para obtener información sobre cómo configurar las credenciales, consulte [Configuración de las credenciales de AWS](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html).
+ **AWS SAM CLI**: para obtener instrucciones acerca de la instalación, consulte [Instalación de AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html).
+ **Docker instalado (opcional, pero obligatorio para las pruebas locales)**: para obtener instrucciones acerca de la instalación, consulte [Obtener Docker](https://docs.docker.com/get-docker/).

**nota**  
Si ya tiene una cuenta y un perfil de AWS configurados de manera local, asegúrese de agregar la política administrada por AdministratorAccess al perfil de AWS configurado.

## Autenticación y control de acceso
<a name="lambda-functions-vscode-authentication-and-access-control"></a>

Para desarrollar las funciones de Lambda de manera local, necesita credenciales de AWS para acceder y administrar los recursos de AWS de forma segura en su nombre, tal como lo harían en la nube. El Toolkit de AWS para VS Code admite los siguientes métodos de autenticación:

El Toolkit de AWS para VS Code admite los siguientes métodos de autenticación:
+ Credenciales a largo plazo de usuarios de IAM
+ Credenciales temporales de roles asumidos
+ Identidad federada
+ Credenciales de usuario raíz de la cuenta de AWS (no se recomienda)

En esta sección, se explica cómo obtener y configurar estas credenciales con las credenciales a largo plazo de los usuarios de IAM.

### Obtención de credenciales de IAM
<a name="lambda-functions-vscode-iam-credentials"></a>

Si ya dispone de un usuario de IAM con claves de acceso, tenga el ID de clave de acceso y la clave de acceso secreta listos para la siguiente sección. Si no dispone de estas claves, siga estos pasos para crearlas:

**nota**  
Debe utilizar el ID de clave de acceso y la clave de acceso secreta juntos, como un nombre de usuario y contraseña, para autenticar sus solicitudes.

Para crear un usuario de IAM y claves de acceso:

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Seleccione la opción **Crear un usuario**.

1. En **Nombre de usuario**, introduzca un nombre y elija **Siguiente**.

1. En **Establecer permisos** , elija **Asociar directamente las políticas existentes**.

1. Seleccione **AdministratorAccess** y elija **Siguiente**.

1. Seleccione la opción **Crear un usuario**.

1. En el panel de éxito, elija **Ver usuario**.

1. Elija **Create access key (Crear clave de acceso)**.

1. En **Caso de uso**, seleccione **Código local**.

1. Seleccione la casilla de verificación de confirmación y elija **Siguiente**.

1. (Opcional) Introduzca un valor de etiqueta de descripción.

1. Elija **Create access key (Crear clave de acceso)**.

1. Copie su clave de acceso y su clave de acceso secreta inmediatamente. **No podrá volver a acceder a la clave de acceso secreta después de salir de esta página.**

**importante**  
Nunca comparta su clave secreta ni la envíe al control de código de origen. Guarde estas claves de forma segura y elimínelas cuando ya no las necesite.

**nota**  
Para obtener más información, consulte [Crear un usuario de IAM en su cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) y [Administrar las claves de acceso para los usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) en la *Guía del usuario de IAM*.

### Configure las credenciales de AWS mediante el Toolkit de AWS
<a name="lambda-functions-vscode-configure-credentials-vscode"></a>

En la siguiente tabla, se resume el proceso de configuración de credenciales que completará en el siguiente procedimiento.


| Qué hacer | ¿Por qué? | 
| --- | --- | 
| Abra el panel de inicio de sesión | Iniciar la autenticación | 
| Utilice la paleta de comandos y busque Agregar una nueva conexión de AWS | Acceda a la interfaz de inicio de sesión | 
| Elija la credencial de IAM | Utilice sus claves de acceso para el acceso programático | 
| Introduzca el nombre del perfil, la clave de acceso y la clave secreta | Brinde las credenciales para la conexión | 
| Consulte la actualización de AWS Explorer | Confirme que está conectado | 

Complete los siguientes pasos para autenticarse en su cuenta de AWS:

1. Abra el panel de inicio de sesión en VS Code:

   1. Para iniciar el proceso de autenticación, seleccione el icono AWS en el panel de navegación izquierdo o abra la paleta de comandos (Cmd\$1Shift\$1P en Mac o Ctrl\$1Shift\$1P en Windows/Linux) y busque y seleccione **Agregar una nueva conexión de AWS**.

1. En el panel de inicio de sesión, elija **Credenciales de IAM** y, a continuación, seleccione **Continuar**.
**nota**  
Para continuar, deberá permitir que las extensiones del IDE de AWS para VS Code puedan acceder a sus datos.

1. Introduzca el nombre de su perfil, el ID de la clave de acceso y la clave de acceso secreta y, a continuación, seleccione **Continuar**.

1. Verifique la conexión consultando AWS Explorer de VS Code para ver los servicios y recursos de AWS.

Para obtener información sobre cómo configurar la autenticación con credenciales de larga duración, consulte [Uso de credenciales de larga duración para autenticar los SDK y las herramientas de AWS](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-users.html).

Para obtener información acerca de cómo configurar la autenticación, consulte [Credenciales de IAM de AWS](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html) en la Guía del usuario de AWS Toolkit for Visual Studio Code.

## Paso de la consola al desarrollo local
<a name="moving-from-console-to-local-development"></a>

**nota**  
Si ha realizado cambios en la consola, asegúrese de no tener ningún cambio sin implementar antes de pasar al desarrollo local.

Para mover una función de Lambda de la consola de Lambda a VS Code, complete los siguientes pasos:

1. Abra la [consola de Lambda](https://console.aws.amazon.com/lambda).

1. Elija el nombre de su función.

1. Seleccione la pestaña **Código fuente**.

1. Elija **Abrir en Visual Studio Code**.
**nota**  
El botón **Abrir en Visual Studio Code** solo está disponible en la versión **3.69.0** y posteriores del Toolkit de AWS. Si tiene una versión anterior del Toolkit de AWS instalada, es posible que vea un mensaje de `Cannot open the handler` en VS Code. Para resolver esto, actualice su Toolkit de AWS a la última versión.

1. Cuando se le solicite, permita que su navegador abra VS Code.

Al abrir la función en VS Code, Lambda crea un proyecto local con el código de la función en una ubicación temporal diseñada para realizar pruebas e implementaciones rápidas. Esto incluye el código de la función, las dependencias y una estructura de proyecto básica que puede utilizar para el desarrollo local.

Para obtener más información sobre el uso de AWS en VS Code, consulte la *[Guía del usuario de AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html)*.

## Trabajo con funciones de forma local
<a name="working-with-functions-locally"></a>

Después de abrir su función en VS Code, siga estos pasos para acceder y administrar sus funciones:

1. Seleccione el icono de AWS en la barra lateral para abrir AWS Explorer:  
![\[El icono del Toolkit de AWS en la barra lateral de VS Code\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/console-to-ide-awsIcon.png)

1. En AWS Explorer, seleccione la región con la función de Lambda:  
![\[El AWS Explorer muestra la selección de regiones\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/console-to-ide-lambdaTreeView.png)

1. En la región seleccionada, expanda la sección Lambda para ver y administrar sus funciones:  
![\[Funciones de Lambda con iconos de acción para implementar, invocar y más\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/console-to-ide-lambdaActions.png)

Con la función abierta en VS Code, puede:
+ Editar el código de la función con soporte lingüístico completo y compleción de código.
+ Utilice la [integración de LocalStack en VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-localstack.html) para probar las funciones de Lambda que realizan llamadas a la API a otros Servicios de AWS durante la ejecución, como la lectura de tablas de DynamoDB o la escritura en buckets de Amazon S3. LocalStack es un emulador de servicio en la nube que proporciona un entorno de desarrollo local completo para realizar pruebas de las integraciones de servicios. También puede [usar la CLI de AWS SAM para probar su función en un contenedor local](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-invoke.html). Si la función realiza llamadas a la API a otros Servicios de AWS, esas llamadas llegarán a recursos de AWS reales, no a recursos emulados.
+ Depurar su función con puntos de interrupción e inspección de variables. Para obtener más información, consulte [Ejecución y depuración de funciones de Lambda directamente desde el código](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html) en la *Guía del usuario de AWS Toolkit for Visual Studio Code*.
+ Volver a implementar la función actualizada en AWS utilizando el icono de la nube.
+ Instalar y administrar las dependencias para su función.

Para obtener más información, consulte [Trabajar con funciones de Lambda de AWS](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html) en la Guía del usuario de AWS Toolkit for Visual Studio Code.

## Convierta su función en una plantilla de AWS SAM y utilice las herramientas de IaC
<a name="integrating-with-infrastructure-as-code"></a>

En VS Code, puede convertir la función de Lambda en una plantilla de AWS SAM al elegir el icono **Convertir en aplicación de AWS SAM** situado junto a la función de Lambda. Se le pedirá que seleccione una ubicación para el proyecto de AWS SAM. Una vez seleccionada, la función de Lambda se convertirá en un archivo `template.yaml` que se guardará en el nuevo proyecto de AWS SAM.

Con la función convertida en una plantilla de AWS SAM, puede:
+ Controlar el control de versiones de su infraestructura
+ Automatizar las implementaciones
+ Depurar de forma remota las funciones
+ Agregar recursos adicionales de AWS a la aplicación
+ Mantener entornos coherentes durante todo su ciclo de vida de desarrollo
+ Utilizar Infrastructure Composer para editar visualmente la plantilla de AWS SAM

Para obtener más información sobre el uso de herramientas de IaC, consulte las siguientes guías:
+ [La Guía para desarrolladores de AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)
+ [La Guía para desarrolladores de AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
+ [La Guía para desarrolladores de Infrastructure Composer](https://docs.aws.amazon.com/application-composer/latest/dg/what-is-composer.html)
+ [La Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)

Estas herramientas brindan capacidades adicionales para definir, probar e implementar sus aplicaciones sin servidor.

## Pasos a seguir a continuación
<a name="next-steps"></a>

Para obtener más información acerca del trabajo con funciones de Lambda en VS Code, consulte los siguientes recursos:
+ [Trabajar con funciones de Lambda de AWS](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html) en la Guía del usuario de Toolkit de AWS para VS Code
+ [Trabajar con aplicaciones sin servidor](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps.html) en la Guía del usuario de Toolkit de AWS para VS Code
+ [La infraestructura como código](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html) en la Guía para desarrolladores de Lambda