¿Cómo crear y desplegar un template en AWS utilizando AWS CloudFormation?
AWS CloudFormation es una herramienta poderosa que automatiza la implementación de recursos en la nube de AWS. En este contexto, aprenderás a crear y desplegar un template desde cero usando CloudFormation, con la finalidad de gestionar tus recursos de manera eficiente. Este proceso te permitirá, con el conocimiento adecuado, construir cualquier tipo de recurso en AWS. ¡Síguenos para descubrir cada paso con precisión!
¿Cómo comenzar el proceso de despliegue en AWS CloudFormation?
Primero, es esencial tener un archivo template que contenga la información necesaria para configurar tus recursos. En este caso, el archivo may-day-in-amo es el punto de partida.
Acceder a AWS: Dirígete a la consola de AWS e inicia sesión.
Navegar a CloudFormation: En el menú superior izquierdo, selecciona "CloudFormation".
Crear stack: Haz clic en "Crear stack" y tendrás la opción de cargar tu template.
# Ejemplo de configuración de un template básico en YAML AWSTemplateFormatVersion:'2010-09-09'Resources:# Definiciones de recursos
¿Qué hacer cuando aparece un error?
Al cargar tu template en AWS CloudFormation, es posible que encuentres errores. Por ejemplo, propiedades inválidas que bloqueen el proceso de carga. La solución es revisar la documentación de AWS y corregir las propiedades específicas.
Identificar errores: AWS proporciona mensajes de error claros. Identifica la propiedad afectada, como la propiedad "Tags" o "StackPolicy".
Verificar y corregir: Consulta la documentación oficial de AWS para entender la propiedad y realizar los cambios necesarios.
¿Cómo continuar después de corregir los errores?
Después de realizar las correcciones necesarias en tu template:
Recargar el template: Carga el archivo corregido may-day-in-amo nuevamente.
Configurar el stack: Especifica detalles como el nombre del stack. Ejemplo: "Mi primer TAC Platzi".
Revisión y creación: Revisa las configuraciones y haz clic en "Crear stack". CloudFormation iniciará el proceso de creación.
¿Cómo verificar que el recurso se ha creado correctamente?
Realizar verificaciones es fundamental para asegurarse de que todo está funcionando correctamente.
Supervisar el estado: En CloudFormation, verifica el estado del stack; debería mostrar "CREATE_COMPLETE".
Consultar DynamoDB: Si implementaste una tabla en DynamoDB, abre la consola de DynamoDB y verifica que el recurso se haya creado.
¿Qué hacer si necesitas eliminar el stack?
Eliminar un stack es un proceso delicado que requiere confirmación para evitar la pérdida de recursos importantes.
Seleccionar y eliminar el stack: En la consola de CloudFormation, selecciona el stack y haz clic en "Eliminar".
Confirmación: AWS solicita confirmar la eliminación para evitar errores.
Monitorear el proceso de eliminación: El estado cambiará a "DELETE_IN_PROGRESS". Una vez complete, verifica en DynamoDB que el recurso ya no exista.
AWS CloudFormation no solo facilita la creación de recursos complejos de forma automática, sino que optimiza el manejo mediante la reutilización eficiente de templates. Este conocimiento te empodera para avanzar en tus proyectos en la nube. ¡Continúa explorando y aprendiendo del vasto universo de AWS!
AWSTemplateFormatVersion:"2010-09-09"Parameters:DynamoAtributo:Type:StringNombreDynamo:Type:StringResources:DynamoDesdeCero:Type:AWS::DynamoDB::TableProperties:AttributeDefinitions: # Esquema de claves para la tabla y los índices
# !Ref=Parameters-AttributeName:!RefDynamoAtributo #Nombre del atributo,Obligatorio,Lo obtenemos como parametro
AttributeType:S # S= string
KeySchema: #
-AttributeName:!RefDynamoAtributoKeyType:HASH # Como nos va a cobrar el recurso
BillingMode:PAY_PER_REQUESTSSESpecification: # Cifra la base de datos
SSEEnabled:trueTableName:!RefNombreDynamo #Tags: #-Tag #TimeToLiveSpecification: #TimeToLiveSpecification# ExportarNombresOutputs:NombreDynamo:Value:!RefDynamoDesdeCeroExport:Name:NombreDynamo
Gracias, me sirvió de mucho el código que compartiste, en mi template estaba todo bien, "Según Yo" pero no funcionaba, la consola de aws marcaba error "ajax error 401"... hice copy & paste de tu template y todo chido... despues de analizar mi error fue que puse...
AwsTemplateFormatVersion:
en vez de:
AWSTemplateFormatVersion:
Para los que utilicen Visual Studio Code, como editor. Instalen una extensión llamada CloudFormation e indent-rainbow, les va ayudar muchisimo a la hora de escribir codigo .yaml
Me arrojaba un error de ROLL_BACK ya que me habia quedado "Hash" en minuscula debe ser mayuscula
KeySchema:
- AttributeName: !Ref DynamoAtributo
KeyType: HASH
Oka, pero pudiste desplegar adecuadamente?
Sip sin mas problema!
Para recientes versiones, es necesario agregar el campo DeletionPolicy en el recurso, así:
Sumado a esto , el dia de hoy, tampoco me deja agregar output. Me da el mensaje:
Se ha producido un error al crear este conjunto de cambiosAs part of the import operation, you cannot modify or add [Outputs]
Tambien me da este error:
Esta plantilla no incluye ningún recurso para importar.Más información
no pude desplegar el template =(
Wohooo <3 que genial
Me quedó la duda para que sirve el Output que le pusimos al final del template 🤔🤔
Está desactualizado el curso. Complicado seguirlo así.
Yo les recomendaría la extensión de CloudFormation Linter para VSCode, me ha sudo super útil para evitar errores en la sintaxis
En mi caso me dio el siguiente error:
Alguna sugerencia?
Al parecer tienes mal un nombre de atributo y le pusiste AttrubuteType en lugar de AttributeType
Por que la columna se llama dni en la tabla? en que momento se especifico ese nombre?
En el minuto 1.35 se ingresa el valor del atributo DynamoAtributo=dni y del NombreDynamo=platziprimer
Tengo el siguiente problema: me pide el campo "Números de cuenta" como obligatorio. Por lo visto el curso está desactualizado :(
<AWSTemplateFormatVersion:"2010-09-09"Parameters:TableName:Type:StringDefault:MyTableDescription:Nombre de la tabla de DynamoDBResources:MyDynamoDBTable:Type:AWS::DynamoDB::TableProperties:TableName:!RefTableNameAttributeDefinitions:-AttributeName:IDAttributeType:N-AttributeName:UsernameAttributeType:SKeySchema:-AttributeName:IDKeyType:HASHProvisionedThroughput:ReadCapacityUnits:5WriteCapacityUnits:5GlobalSecondaryIndexes:-IndexName:UsernameIndexKeySchema:-AttributeName:UsernameKeyType:HASHProjection:ProjectionType:ALLProvisionedThroughput:ReadCapacityUnits:2WriteCapacityUnits:2StreamSpecification:StreamViewType:NEW_AND_OLD_IMAGESSSESpecification:SSEEnabled:trueSSEType:KMSKMSMasterKeyId: alias/aws/dynamodb
MyDynamoDBTablePolicy:Type:AWS::IAM::PolicyProperties:PolicyName:DynamoDBTablePolicyPolicyDocument:Version:'2012-10-17'Statement:-Effect:AllowAction:- dynamodb:Query- dynamodb:Scan- dynamodb:GetItem- dynamodb:PutItem- dynamodb:UpdateItem- dynamodb:DeleteItemResource:-Fn::GetAtt:-MyDynamoDBTable-ArnRoles:-Ref:MyDynamoDBTableRoleMyDynamoDBTableRole:Type:AWS::IAM::RoleProperties:AssumeRolePolicyDocument:Version:'2012-10-17'Statement:-Effect:AllowPrincipal:Service:- lambda.amazonaws.comAction:- sts:AssumeRole>
Me encata como va el curso de Iac
Yo utilice atom, lo que me di cuenta es el orden de tabulaciones que debe seguir es extricto o me equivoco, solo cuando corregi este orden me funciono correctamente.
no te equivocas, yaml, es muy pendiente de eso, ya que la indentación define si un atributo pertenece o no al elemento que lo procede. o si defines un arreglo, los elementos que pertenecen al mismo.
Somprendente 😮
Las clases de Carlos son excelentes pero estan fallando con el audio
Los problemas de audio de esta clase han sido solucionados, por favor vuelve a probar.
:)
check and verify all the docs in aws webpage
ejale veamos como funciona los template en CloudFormation :)
El volumen del video ... suena muy muy pasito
Los problemas de audio de esta clase han sido solucionados, por favor vuelve a probar.
Me lanza un error AttributeDefinitions:
AttributeType must be a list.
voy a buscar en la documentacion a ver porque ahora es diferente la verificacion
que alguien me avise si le paso lo mismo
Hola, alguien tiene la presentación del curso??
no hay, o simplemente el profe no las subio. ahi se usan son los screenshots de los apuntes de los temas que el explica en cada clase. y que cada persona le guste o extraiga
Error : unknown tag !<!Ref> at line 14, column 45:
... tributeName: !Ref DynamoAtributo
^
Line : undefined undefined