Servidor de lenguaje de AWS CloudFormation - AWS CloudFormation

Servidor de lenguaje de AWS CloudFormation

El servidor de lenguaje de AWS CloudFormation ofrece capacidades para acelerar la creación de la Infraestructura como código (IaC) y la implementación de recursos de AWS de forma segura y confiable. Sigue el protocolo de servidor de lenguaje (LSP) para proporcionar documentación sobre cómo pasar el ratón, completar automáticamente, realizar diagnósticos mediante validación estática, ir a la definición y codificar acciones. Además de estas capacidades de servidor de lenguaje tradicional, el servidor añade características en línea para explorar e implementar recursos de AWS a través de CloudFormation. Esto incluye la capacidad de validar e implementar plantillas mediante conjuntos de cambios; ver las diferencias, los eventos, los recursos y las salidas de las pilas; enumerar las pilas y buscar los recursos por tipo, e insertar el estado de los recursos en tiempo real directamente en las plantillas de CloudFormation.

Los IDE se integran con el servidor de lenguaje de AWS CloudFormation

AWS ofrece una integración disponible con el servidor de lenguaje de CloudFormation mediante el Kit de herramientas de AWS para los siguientes IDE:

Los siguientes IDE también son compatibles con el servidor de lenguaje de CloudFormation:

  • Kiro

  • Cursor

  • La mayoría de los forks y las distribuciones de VS Code

El servidor de lenguaje de CloudFormation se adhiere al Language Server Protocol (LSP) y, por lo tanto, se pueden configurar otras integraciones. Para obtener instrucciones sobre cómo integrar el servidor de lenguaje con otros editores, consulte la guía de instalación.

Introducción

Requisitos previos

Antes de comenzar, asegúrese de que:

  • Está utilizando un IDE compatible con un sistema operativo (macOS, Windows o Linux).

  • Ha instalado o actualizado a la última versión del Kit de herramientas de AWS para su IDE.

Algunas características del servidor de lenguaje de AWS CloudFormation requieren una Cuenta de AWS activa y credenciales configuradas. Debe iniciar sesión en su Cuenta de AWS a través del Kit de herramientas de AWS con credenciales válidas.

Paso 1: instalar o actualizar el Kit de herramientas de AWS

Instale o actualice a la última versión del Kit de herramientas de AWS desde el administrador de extensiones o complementos de su IDE y luego reinicie el IDE.

Tras la instalación, el Kit de herramientas de AWS habilita automáticamente la compatibilidad con el IDE de CloudFormation. La primera vez que instale o actualice el Kit de herramientas de AWS con la extensión de servidor de lenguaje de AWS CloudFormation, se le solicitará que conceda permiso a AWS para recopilar datos de uso anónimos. Estos datos ayudan a que AWS mejore el servidor de lenguaje de CloudFormation y mejoran la experiencia de creación. No se recopila información confidencial y AWS no registra ni almacena el contenido de las plantillas, las configuraciones de los recursos ni ningún dato identificable del cliente. Puede cambiar las preferencias de telemetría en cualquier momento desde la configuración del IDE. Reinicie el IDE para que los cambios surtan efecto. Los datos de uso recopilados se centran únicamente en las interacciones de las características y las métricas de rendimiento. Esta información ayuda a AWS a identificar y priorizar mejoras, como una validación más rápida, un mejor autocompletado y un mejor diagnóstico de errores.

Paso 2: acceder a CloudFormation en el Kit de herramientas de AWS

Luego de instalar el Kit de herramientas de AWS, abra el panel de CloudFormation en su IDE. En VS Code, abra el panel del Kit de herramientas de AWS desde la barra de actividades y seleccione CLOUDFORMATION. En los IDE de JetBrains, abra la ventana de herramientas del Kit de herramientas de AWS desde la barra lateral y seleccione la pestaña CloudFormation.

El panel de CloudFormation contiene las siguientes secciones:

  • Región: muestra la Región de AWS actual. En VS Code, puede cambiarla seleccionando el nombre de la región o utilizando el comando AWS CloudFormation: seleccionar región de la paleta de comandos. En los IDE de JetBrains, la región se configura mediante los ajustes de conexión del Kit de herramientas de AWS.

  • Pilas: muestra una lista paginada de las pilas de CloudFormation de su cuenta. Expanda una pila para ver su nodo de Conjuntos de cambios, que muestra los conjuntos de cambios asociados. Utilice la acción Ver detalles de la pila para abrir la vista de detalles de la pila, que muestra su descripción general, eventos, resultados y recursos.

  • Recursos: Después de agregar un tipo de recurso, el panel muestra los recursos de AWS de ese tipo en su cuenta. Puede verlos, actualizarlos, copiarlos o importarlos a su plantilla.

En los IDE de JetBrains, la barra de herramientas situada sobre el árbol otorga un acceso rápido a las acciones habituales, como Validar e implementar, Volver a ejecutar, validar e implementar, Agregar tipo de recurso y Actualizar. Las acciones también están disponibles en los menús contextuales que se abren al hacer clic derecho en los nodos del árbol.

Paso 3: validar, probar y refinar la plantilla

A medida que redacta la plantilla de CloudFormation, el IDE proporciona asistencia de creación inteligente para ayudarle a crear una infraestructura precisa y compatible con mayor rapidez. El servidor de lenguaje de CloudFormation se ejecuta en segundo plano y proporciona las siguientes características de creación:

  • Finalización de código: sugiere tipos de recursos, parámetros y propiedades en función de los esquemas de CloudFormation.

  • Añadir recursos de AWS existentes: le permite importar los recursos existentes de su Cuenta de AWS a su plantilla. El IDE usa el API de control de nube de AWS (CCAPI) para recuperar la configuración activa y las propiedades del recurso, lo que le ayuda a clonar o reutilizar la infraestructura existente en su plantilla.

  • Extraer a parámetro: cuando el cursor está sobre un valor literal de una plantilla (por ejemplo, una cadena similar a t2.micro), el IDE ofrece una acción de refactorización para extraer el valor en la sección Parameters y reemplazar el literal por !Ref para el nuevo parámetro. Si el mismo valor literal aparece en diversos lugares, puede optar por extraer todas las apariciones a la vez.

Adición de recursos a una plantilla

  • Agregue un tipo de recurso: En el panel de CloudFormation de Kit de herramientas de AWS, en Recursos, agregue un tipo de recurso para consultarlo. En VS Code, haga clic en el icono Agregar + o utilice el comando AWS CloudFormation: Agregar tipos de recursos de la paleta de comandos. En JetBrains, haga clic en el botón Agregar tipo de recurso de la barra de herramientas o haga clic derecho en el nodo de Recursos.

  • Busque un tipo de recurso: En el cuadro de diálogo de búsqueda, escriba el tipo de recurso de AWS que desee agregar. Ejemplo:

    • AWS::S3::Bucket

    • AWS::Lambda::Function

  • Explore los recursos: En la sección Recursos, se muestra una lista paginada de los recursos de AWS detectados en su cuenta. Si tiene muchos recursos, solo se muestra la primera página. Use los controles de navegación para desplazarse por páginas adicionales y ver todos los recursos disponibles.

  • Elija el recurso que desea incluir en la plantilla.

  • Puede insertar un recurso en la plantilla en dos formas, en función de su objetivo:

    • Clonar un recurso existente: para crear un recurso nuevo en su plantilla, utilice la configuración activa y las propiedades de un recurso de AWS existente.

    • Importar un recurso existente: para insertar el recurso real en su pila, añádalo a su plantilla utilizando su estado activo.

Consejos

  • Puede actualizar la sección Recursos en cualquier momento para ver la lista más reciente de recursos disponibles en su cuenta o región.

  • Si va a importar recursos, no añada un recurso que ya pertenezca a una pila de CloudFormation existente en la misma cuenta.

  • Para confirmar si CloudFormation ya administra un recurso, utilice la acción de información disponible junto al recurso. En VS Code, haga clic en el icono i. En los IDE de JetBrains, haga clic derecho en el recurso y seleccione Obtener información de administración de la pila.

En VS Code, puede agregar recursos relacionados al recurso seleccionado mediante el comando AWS CloudFormation: Agregar recursos relacionados por tipo. Una vez que haya seleccionado un tipo de recurso entre los que ya están definidos en la plantilla, el IDE muestra una lista de los recursos que normalmente están asociados a ese tipo o que dependen de él. Por ejemplo, si selecciona AWS::EC2::Instance, el IDE puede sugerirle que añada recursos relacionados, como AWS::EC2::SecurityGroup o AWS::EC2::Subnet. Esta característica le ayuda a crear rápidamente componentes de infraestructura conectados sin tener que buscar manualmente los tipos de recursos compatibles. Esta característica no se admite actualmente en los IDE de JetBrains.

Validación estática

El servicio de lenguaje de CloudFormation proporciona una validación estática integrada con la tecnología de AWS CloudFormation Linter (cfn-lint) y AWS CloudFormation Guard. Estas validaciones se llevan a cabo en segundo plano a medida que crea plantillas, lo que le ayuda a identificar los errores de sintaxis, las brechas de conformidad y los problemas relacionados con las prácticas recomendadas antes de la implementación.

Descripción general de la validación estática

Verá dos tipos de validaciones estáticas en tiempo real en el IDE:

  • CloudFormation Linter (cfn-lint): valida la plantilla según las especificaciones de recursos y las reglas del esquema de CloudFormation.

  • Guard (cfn-guard): valida la plantilla según las normas de cumplimiento y los paquetes de políticas organizacionales.

CloudFormation Linter (cfn-lint)

CloudFormation Linter está integrado en el IDE para comprobar automáticamente la sintaxis y la estructura de la plantilla a medida que escribe.

  • Validación de esquemas: detecta errores de sintaxis y esquema para garantizar que las plantillas se ajusten al esquema de recursos de CloudFormation.

  • Resaltado de error: muestra marcadores en línea debajo de los problemas, que representan advertencias o bloqueos de implementación.

  • Pase el cursor sobre la ayuda: al pasar el cursor por encima de un error, el IDE muestra el mensaje de diagnóstico asociado a ese problema. También estará disponible una solución rápida, de haber alguna.

Integración de CI/CD

Guard valida sus plantillas comparándolas con los conjuntos de reglas que definen las políticas de cumplimiento y seguridad. El IDE ejecuta las validaciones de Guard en tiempo real a través del servidor de lenguaje de CloudFormation, lo que le proporciona comentarios inmediatos mientras crea plantillas.

  • Paquetes de reglas predeterminados: el IDE incluye un conjunto de reglas de Guard previamente registradas que se centran en las prácticas recomendadas fundamentales para la seguridad de los recursos y la higiene de la configuración. Para obtener más información, consulte el registro de reglas de Guard.

  • Cómo agregar paquetes de reglas: para agregar o modificar conjuntos de reglas, abra los ajustes de su IDE y diríjase a la sección de configuración de Guard para seleccionar o cargar paquetes de reglas de Guard adicionales.

Consejos: Comprensión de los indicadores de diagnóstico

  • Indicadores azules: sugerencias de prácticas recomendadas o recomendaciones de optimización.

  • Indicadores amarillos: advertencias sobre problemas no relacionados con el bloqueo (por ejemplo, falta de etiquetas o parámetros).

  • Indicadores rojos: bloquean la implementación, como nombres de propiedades no válidos, campos obligatorios que faltan o discordancias en los esquemas.

Paso 4: navegar por la plantilla

El IDE ofrece una vista jerárquica y estructurada de la plantilla de CloudFormation, organizada en secciones como Parameters, Resources, Outputs y Mappings que muestran cada tipo de recurso e ID lógico. Esto facilita la búsqueda rápida de recursos o parámetros específicos dentro de plantillas grandes y la navegación a ellos. En VS Code, el panel Esquema de la barra lateral del Explorador muestra esta estructura. En los IDE de JetBrains, abra la ventana de herramientas Estructura para ver la estructura de la plantilla del archivo que está abierto.

Puede utilizar Ir a la definición para funciones intrínsecas, como GetAtt y Ref, que le permite ir directamente al recurso o parámetro al que se hace referencia en la plantilla. Esto le ayuda a rastrear las dependencias, comprender las relaciones entre los recursos y realizar modificaciones de manera más eficiente.

Paso 5: validar e implementar

Cuando tenga todo listo para implementar la plantilla de CloudFormation, utilice la característica Validar e implementar para crear un conjunto de cambios. El IDE valida la plantilla y, si no se encuentra ningún error de bloqueo, crea un conjunto de cambios con reconocimiento de desviación. Luego, el IDE muestra una vista de diferencias para que pueda revisar todos los cambios propuestos antes de ejecutar el conjunto de cambios.

En VS Code, abra la paleta de comandos y ejecute AWS CloudFormation: Validar e implementar. La paleta de comandos permite seleccionar una plantilla, el nombre de la pila, los parámetros, las capacidades y otras opciones de implementación. En los IDE de JetBrains, utilice el botón de la barra de herramientas Validar e implementar, haga clic derecho en un archivo de plantilla del editor o en una pila del árbol. JetBrains presenta un cuadro de diálogo con un asistente en el que se pueden configurar todas las opciones de implementación, entre ellas la selección de plantillas, el nombre de la pila, los parámetros, las capacidades, las etiquetas y las opciones avanzadas.

Cómo funciona la validación

El IDE realiza automáticamente una comprobación de validación antes de la implementación y valida la plantilla en función de las causas de error más comunes, entre las que se incluyen las siguientes:

  • Discordancias entre esquemas o sintaxis de propiedades no válidas: estos problemas suele detectarlos cfn-lint durante la creación, pero si continúa con la implementación sin solucionarlos, la validación de CloudFormation en el momento de la implementación mostrará los mismos errores antes de que se cree o actualice la pila.

  • El nombre del recurso entra en conflicto con los recursos existentes en su cuenta.

  • Restricciones específicas del servicio, como conflictos en el nombre del bucket de S3 o falta de cifrado.

Si la validación detecta errores, el IDE resalta los problemas directamente en la plantilla y enumera los errores en el panel de diagnóstico. Cada problema incluye la propiedad o el recurso específico que causó el error, junto con una sugerencia de solución. Si no hay errores de bloqueo, puede pasar a la fase de implementación.

Si se encuentran advertencias (problemas no relacionados con el bloqueo), aparece un cuadro de diálogo que le permite continuar con la implementación o cancelar y realizar las correcciones necesarias.

El IDE abre un conjunto de cambios con reconocimiento de desviación en el que se muestran las diferencias entre la plantilla actual y la configuración de la pila implementada. Esto le permite revisar, confirmar o cancelar el conjunto de cambios antes de su ejecución. Si se cancela la implementación, se elimina el conjunto de cambios.

Los conjuntos de cambios con reconocimiento de desviación mejoran el proceso de implementación de CloudFormation al permitirle gestionar la desviación de la pila de forma segura. La desviación de la pila se produce cuando el estado real de los recursos difiere del definido en la plantilla de CloudFormation, a menudo debido a cambios manuales realizados mediante la Consola de administración de AWS, la CLI o el SDK. Los conjuntos de cambios con reconocimiento de desviación de CloudFormation compara la configuración de la pila procesada con el estado actual de los recursos, y el IDE muestra estas diferencias para que pueda hacer que los recursos vuelvan a cumplir con las normas antes de la implementación.

Visualización de eventos de pilas

Cuando comience la implementación, puede supervisar el progreso en tiempo real desde el panel de CloudFormation. En Eventos de la pila, verá una lista de las operaciones realizadas durante la implementación. Cada evento incluye detalles como:

  • Marca temporal: la hora en que ocurrió el evento.

  • Recurso: el recurso de AWS específico que se crea, actualiza o elimina

  • Estado: el estado actual de la operación (por ejemplo, CREATE_IN_PROGRESS, UPDATE_COMPLETE o ROLLBACK_IN_PROGRESS)

  • Motivo: mensajes de contexto o de error adicionales, si corresponde

También puede ver los recursos y las salidas de la pila desde este panel. La vista Eventos de la pila le ayuda a realizar un seguimiento del progreso de la implementación, identificar posibles problemas y confirmar si la pila se ha completado correctamente.

Inicialización de un proyecto de CloudFormation en el IDE (solo VS Code)

La inicialización de un proyecto de CloudFormation en el IDE le ayuda a configurar un espacio de trabajo estructurado con las carpetas, la configuración del entorno y las credenciales de AWS correctas para que pueda validar e implementar sus plantillas de forma fiable. Puede inicializar un nuevo proyecto de CloudFormation directamente desde el IDE para crear la configuración recomendada. Esta característica solo está disponible en VS Code y no es compatible con los IDE de JetBrains.

Para inicializar un proyecto de CloudFormation:

  • Abra la paleta de comandos

    • Desde VS Code, abra la paleta de comandos (Ctrl+Shift+P o Cmd+Shift+P en macOS).

    • Elija AWS CloudFormation: CFN Init: inicializar proyecto.

  • Elija un directorio de proyectos

    • El IDE utiliza su directorio de trabajo actual de forma predeterminada.

    • Puede cambiar esta ruta a cualquier carpeta en la que desea almacenar las plantillas de CloudFormation.

  • Seleccione su perfil de credenciales de AWS

    • Se le pedirá que elija un perfil de credencial de AWS. El perfil seleccionado se utiliza para la detección, las validaciones y las implementaciones del entorno.

  • Configure el entorno

    • Se le pedirá que cree o seleccione un entorno.

    • Los entornos definen dónde y cómo se implementan o validan las plantillas (por ejemplo, desarrollo, versión beta o producción). Puede usar AWS CloudFormation: CFN Init: añadir entorno para seleccionar o cambiar su entorno.

    • Puede usar AWS CloudFormation: CFN Init: eliminar entorno para eliminar el entorno que ha seleccionado.

  • (Opcional) Importe archivos de parámetros

    • Si ya tiene archivos de parámetros existentes, el IDE le permite importarlos durante la inicialización.

    • El IDE detecta automáticamente los archivos compatibles y los vincula a su proyecto para utilizarlos en la validación y la implementación de la plantilla.

  • Asigne un nombre al proyecto y finalícelo

    • Proporcione un nombre de proyecto, como un entorno beta, y complete la configuración.

    • El IDE crea automáticamente la estructura inicial del proyecto y el archivo de configuración.

Puede ejecutar validaciones, previsualizar las implementaciones o cambiar de un entorno a otro directamente desde el IDE.

Código abierto

El servidor de lenguaje de AWS CloudFormation es de código abierto bajo la licencia de Apache-2.0, lo que brinda a los clientes total transparencia sobre cómo se realizan el diagnóstico de las plantillas, la validación de esquemas y el análisis estático. Esto reduce los problemas de seguridad y cumplimiento para los clientes que requieren visibilidad a nivel de origen antes de adoptar las herramientas.

La base de código está disponible públicamente en GitHub: https://github.com/aws-cloudformation/cloudformation-languageserver/.

¿Necesita ayuda?

Pruebe la comunidad de CloudFormation en AWS re:Post.