#100DíasdeAWS | Día 11 | CloudFormation

#100DíasdeAWS | Día 11 | CloudFormation

¡Buenos días! ¡Bienvenido al día 11 de la serie #100DíasdeAWS

Hoy hablaremos sobre un servicio que le permite activar cargas de trabajo de forma rápida y segura mediante código. ¡Esto es CloudFormation!

Si está buscando implementar una gama completa de servicios de AWS para trabajar juntos para crear una aplicación funcional, este es un proceso que requiere mucho tiempo. No solo tiene que administrar la construcción y la implementación de los servicios, sino que debe detenerlos todos cuando no los esté utilizando, para no incurrir en un costo.

El mayor riesgo de configuración incorrecta de la arquitectura de seguridad puede empujar a los usuarios a optar por una forma más fácil de acelerar las cargas de trabajo de prueba, desarrollo e incluso producción utilizando algo llamado Infraestructura como código (o IaC).

¿Qué es IaC?

Infraestructura como código (IaC) utiliza varios lenguajes de codificación descriptivos para automatizar el aprovisionamiento de infraestructura en la nube. Esta automatización elimina la necesidad de aprovisionar y configurar servidores manualmente, y permite un rápido cambio y reversión a la infraestructura en la nube.

Antes de continuar, veamos alguna terminología útil de CloudFormation

Plantilla: Una plantilla es básicamente un archivo de texto, formateado de una manera particular, que define qué servicios ó recursos de AWS se deben configurar y cómo.

Pila: Una pila (ó stack) son varios recursos de AWS. Este puede ser un número de servicios de AWS que hemos visto antes.

Formateo

Las plantillas de CloudFormation deben escribirse en JSON ó YAML. Echemos un vistazo a la diferencia:

Esta es una plantilla muy simple escrita en JSON, esta plantilla muestra la creación de una instancia EC2 simple, mediante la definición de un nombre para la instancia, y AZ para colocar, así como una AMI para aplicar a EC2, todo bajo la sección 'Properties' de la plantilla.

"MyInstance" : {
 "Type" : "AWS::EC2::Instance",
 "Properties" : {
     "AvailabilityZone" : "us-east-1a",
     "ImageId" : "ami-0ff8a91507f77f867"
 }
}

¡Y aquí hay uno haciendo el mismo examen pero escrito en YAML!

MyInstance:
  Type: AWS::EC2::Instance
  Properties:
    AvailabilityZone: us-east-1a
    ImageId: ami-0ff8a91507f77f867MyInstance:
  Type: AWS::EC2::Instance
  Properties:
    AvailabilityZone: us-east-1a
    ImageId: ami-0ff8a91507f77f867

Realmente no hay un idioma preferido para escribir esto, ¡simplemente depende de su preferencia! Analicemos lo que hace cada parte de la plantilla.

Una plantilla de CloudFormation consta de 6 secciones, en su mayoría opcionales y separadas:

  1. Description: Este es un campo opcional donde puede incluir cualquier comentario general sobre la plantilla.

  2. Parameters: Esta es una sección opcional que puede usar para personalizar sus plantillas. Los parámetros le permiten ingresar valores personalizados a su plantilla cada vez que crea ó actualiza una pila. En este ejemplo, el tipo de parámetro no se declara, por lo que el valor predeterminado será que la instancia se inicie como T2.Micro. Si desea que el tipo de instancia sea diferente, debe declarar un parámetro denominado InstanceTypeParameter.

  3. Mappings: Esta es otra sección opcional en la que hace coincidir una clave con un valor correspondiente. Esto podría usarse si desea establecer valores específicos según la región ó algo similar.

  4. Conditions: ¡Otro apartado opcional! Esto le permite establecer reglas cuando crea y no crea ciertas configuraciones. Un buen ejemplo de esto sería crear una condición en la que si ocurre una ocurrencia específica en su entorno, por ejemplo. Puede especificar qué tipo de recursos desea lanzar en su plantilla dependiendo de si se trata de un entorno de producción ó de prueba, usando prod o test como parámetros.

  5. Resources: Esta sección obligatoria simplemente declara los recursos de AWS que desea incluir en la pila, como una instancia de Amazon EC2 o un depósito de Amazon S3. Por ejemplo, en el fragmento de código anterior, AWS::EC2::Instance declara la instancia de EC2 .

  6. Outputs: Una sección opcional final de una plantilla en la que puede declarar salidas tales como ARN para usarlas en la creación de otras plantillas de CloudFormation o para facilitarle un poco la vida. Por ejemplo, puede generar el nombre del depósito S3 para una pila para que el depósito sea más fácil de encontrar. Puede tener hasta 200 salidas por pila.

Lo último que debe decir es que puede escribir su código en el editor de código en la consola de CloudFormation, ó puede especificar un depósito S3 que contenga su código para usarlo en la creación de sus recursos.

Además, ¡CloudFormation en sí mismo es gratis! Solo paga por los recursos que se consumen como resultado de la implementación de sus pilas de CloudFormation.

CloudFormation puede ser una forma realmente rápida y fácil de implementar una gran cantidad de recursos de AWS con una configuración y dolores de cabeza mínimos, especialmente si es bastante nuevo en AWS.

¡Eso es! Muchas gracias por leer, y déjanos saber si tienes alguna pregunta.

¡Sigue construyendo!

Post Original Jack Lavelle