Importancia de la Infraestructura como código

1

Paso a paso para infraestructura cómo código

2

Cómo desplegar infraestructura en Cloud

3

Herramientas para desplegar infraestructura como código

4

Introducción y ventajas de usar Cloudformation

5

Laboratorio # 1: explorando la consola de Cloudformation

Funcionalidades y características en Cloudformation

6

Anatomía de un template en Cloudformation

7

Clase práctica creación de un template

8

Despliegue del template en Cloudformation

9

Caracteristícas finales del template en Cloudformation

10

Stacks: características y despliegue

11

Bonus: ejemplo de stack

12

Stack Sets: despliegues multicuenta

13

Laboratorio # 2: desplegando un Stack Set en un esquema multi-cuenta

14

Nested Stacks: composición y ejemplos

15

Laboratorio # 3: creación de recursos del Stack

16

Laboratorio #3: pruebas de funcionamiento del stack

17

Laboratorio # 4: crear nuestro primer Nested Stack

18

Laboratorio #4: pruebas de funcionamiento del Nested Stack

19

Laboratorio # 5: cómo crear un stack de forma gráfica con Designer

Funciones en Cloudformation

20

Funciones intrínsecas: GetAtt, FindInMap, Join, Split y Select

21

Funciones intrínsecas: Sub, Ref y ImportValue.

22

Funciones condicionales: If, Not, And y Equals

Automatización y despliegues de infraestructura como código

23

Importancia de la automatización de infraestructura

24

Cómo automatizar despliegues de infraestructura

25

Creación de pipelines para despliegue de infraestructura

26

Laboratorio #6: Estructura de repositorio para despliegue de función lambda

27

Laboratorio #6: prerequisitos para creación del pipeline

28

Laboratorio #6: despliegue de pre requisitos

29

Laboratorio #6: creación del pipeline para el despliegue de una función lambda

30

Laboratorio #6: verificación de recursos creados en el pipeline

Diagnostico de errores y seguridad en infraestructura como código.

31

Seguridad en templates

32

Troubleshooting

33

Seguridad en despliegues

34

Laboratorio # 7: identificación de errores en despliegues

Funciones lambda en Cloudformation

35

Cómo desplegar lambda como función

36

Cómo desplegar lambda como función serverless

37

Laboratorio # 8: puesta en producción de nuestra función lambda

Conclusiones

38

Conclusiones finales

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Infraestructura Como Código en AWS

Curso de Infraestructura Como Código en AWS

Carlos Andrés Zambrano Barrera

Carlos Andrés Zambrano Barrera

Anatomía de un template en Cloudformation

6/38
Recursos

¿Qué es un Temple en CloudFormation?

En el mundo de AWS, las plantillas de CloudFormation son el alma de la infraestructura como código. Estas plantillas ofrecen la posibilidad de definir y aprovisionar recursos de AWS de una manera organizada y sistemática, en la que los componentes clave están claramente establecidos.

¿Cuál es el propósito de la versión en un Temple?

Los Temples, o plantillas, tienen una versión específica. Si no se define explícitamente, AWS lo hará automáticamente, utilizando la versión 2010-09-09. Este campo, aunque opcional, es importante para garantizar que la plantilla pueda aprovechar todas las funcionalidades más recientes de CloudFormation.

AWSTemplateFormatVersion: '2010-09-09'

¿Para qué sirve la descripción en un Temple?

La descripción es otro campo opcional en las plantillas de CloudFormation. Su principal utilidad es permitirte identificar qué estás desplegando, funcionando como una suerte de metadata personalizada. Es altamente recomendada como una práctica para mejorar la legibilidad y comprensión del Temple.

Description: 'Esta es mi primera lambda en CloudFormation'

¿Por qué es relevante la Metadata en un Temple?

La metadata va un paso más allá en complejidad y permite definir registros específicos como Transformaciones, Init, Interfaces y Diseño. Aunque es completamente opcional, en proyectos más avanzados puede ser crucial para lograr ciertos comportamientos deseados. Sin embargo, no la usaremos en nuestro ejemplo.

¿Qué son los Parámetros en un Temple?

Los parámetros son uno de los elementos más vitales en tu plantilla. Son los datos que necesitas pasarle al Temple para personalizar los recursos que vas a desplegar. Te permiten reutilizar una misma plantilla para diferentes configuraciones.

  • Ejemplo de Parámetro en Lambda:

    Para determinar el valor de runtime en una función Lambda, se puede especificar el lenguaje como un parámetro, adaptable según las necesidades.

Parameters:
  Runtime:
    Type: String
    Default: 'Python3.8'
    AllowedValues:
      - 'Python3.6'
      - 'Python3.7'
      - 'Python3.8'
      - 'Java8'

¿Cómo funcionan los mappings en un Temple?

Los mappings funcionan como arreglos de llave valor que especifican valores específicos para diferentes configuraciones. Se utilizan comúnmente para definir valores diferencias por región.

  • Ejemplo de Mapping:

    Imagina que quieres desplegar un servidor en múltiples regiones como Frankfurt, Sao Paulo, y Virginia. Puedes definir un mapping para cada región con su correspondiente ID de imagen.

Mappings:
  RegionMap:
    us-east-1:
      "AMIID": "ami-0ff8a91507f77f867"
    eu-west-1:
      "AMIID": "ami-047bb4163c506cd98"

Recomendaciones prácticas

  1. Utilizar Descripciones: Aunque opcional, las descripciones clarifican el propósito del código y mejoran la mantenibilidad.

  2. Implementar Parámetros: Facilitan la flexibilidad y reutilización de tus plantillas a lo largo de distintas implementaciones.

  3. Definir Mappings: Estos aceleran la implementación en múltiples regiones, ajustando automáticamente configuraciones para cada caso.

Al emplear estas técnicas y comprender la esencia de cada uno de estos componentes, podrás crear plantillas de CloudFormation eficaces y versátiles, listas para escalar y adaptarse a tus necesidades de infraestructura. ¡Anímate a explorar más sobre CloudFormation y transforma tu manera de desplegar y gestionar recursos en la nube!

Aportes 12

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

También puedes colocar todos tus mappings en un documento externo y referenciarlo desde este documento utilizando:

Mappings: Fn::Transform: Name: AWS::Include Parameters: Location:

location puedes usar un bucket s3

AWSTemplateFormatVersion: '2021-09-09'

Parameters:
    DynamoAttribute:
        Type: String
    DynamoTableName:
        Type: String
    
Resources:
    DynamoSinceZero:
        Type: AWS::DynamoDB::Table
        Properties: 
          AttributeDefinitions: 
            - AttributeName: !Ref DynamoAttribute
              AttributeType: S
          KeySchema: 
            - AttributeName: !Ref DynamoAttribute
              KeyType: HASH
          BillingMode: PAY_PER_REQUEST
          SSESpecification: 
            SSEEnabled: true
          TableName: !Ref DynamoTableName

Outputs:
    DynamoTableName:
        Value: !Ref DynamoSinceZero
        Export:
            Name: DynamoTableName

TEMPLATES:
• AWSTemplateFormatVersion: “versión date”: Define las capacidades de la plantilla
• Description: String. Texto que describe la plantilla, es opcional.
• Metadata: Información adicional del template. Se pueden crear tres subregistros:

  • AWS::CloudFormation::Init
  • AWS::CloudFormation::Interface
  • AWS::CloudFormation::Designer
    • Parameters: Valores que se le pasan al template cuando se crea o actualiza un Stack. Pueden ser referenciados desde Resources u Outputs. Ejemplo:
Parameters:
	myKeryPair:
		Description: Amazon EC2 Key Pair
		Type: “AWS::EC2::KeyPair::KeyName”
	mySubnetIDs:
		Description: Subnet IDs
		Type: “List<AWS::EC2::Subnet::Id>	DbSubnetIpBlocks:
		Description: “Comma-delimited list of three CIDR blocks”
		Type: CommaDelimitedList
		Default:10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24	DBPort:
		Default: 3306
		Description: TCP/IP port for the database
		Type: Number
		MinValue: 1150
		MaxValue: 65535
	DBPwd:
		NoEcho: true
		Description: The database admin account password
		Type: String
		MinLength: 1
		MaxLength: 41
		AllowedPattern: ^[a-zA-z0-9]*$

• Mappings: Arreglos de llave valor asociados que se usan para agregar parámetros condicionales. Similar a una tabla de búsqueda. Utiliza la función Fn::FindInMap, Ej:

Mappings:
	RegionMap:
		us-east-1:
			“HVM64”: “ami-0ff8a91507f77f867”
		us-west-1:
			“HVM64”: “ami-0bdb828fd58c52235”

😃 interesante

Apuntes Templates

Que son los templates ?

Los templates tienen diferentes características que nos ayudaran a desplegar nuestros recursos en AWS entre estos se encuentran

Cual es la anatomia de un tamplate ?

  • Version de Aws: Este es el versionado de aws, si hay otra version se añadirá nuevas características

  • Description: Descripción de la plantilla, el que hace.

  • Metadata: En donde tenemos diferentes parámetros que veremos mas adelante

  • Parameters: EL mas importante, aquí pondremos nuestros distintos parámetros que se utilizaran para la creación de nuestro recurso, Podemos poner parámetros como el nombre, en el caso de lamda su runtime entre otros

  • Mappings: estos ayudan a ubicar el servidor en la region que le asignemos

Excelente contenido. Pregunta… Bajo que condiciones AWS puede actualizar la función Lambda que uno a desarrollado?. Lo pregunto por el nivel de confiabilidad que del código que uno haya desarrollado.

Parameters: (opcional)
Definicion de recursos que utilizara cloudformation para el despliegue:
Subnets, rutine, keyPairs, ips, etc.

Metadata: (Opcional)
Init
Interface
designer

Las templates son realmente un gran ahorro de tiempo

increíble 😃

La descripción cumple una función similar a un TAG

Una de las claves mas importantes para hacer un plantilla reutilizable es la parametrizacion, cloud formation implementa esto perfectamente con los parametros parameters