Creación de su primera pila
En este tema se explica cómo crear su primera pila de CloudFormation con la AWS Management Console. Si sigue este tutorial, obtendrá información sobre cómo aprovisionar recursos básicos de AWS, supervisar los eventos de la pila y generar resultados.
Para este ejemplo, la plantilla de CloudFormation está escrita en YAML. YAML es un formato legible por humanos que se usa ampliamente para definir la infraestructura como código. Al obtener más información sobre CloudFormation, es posible que también encuentre otras plantillas en formato JSON, pero para este tutorial, se elige YAML por su legibilidad.
nota
CloudFormation es gratuito, pero se le cobrarán los recursos de Amazon EC2 y Amazon S3 que cree. Sin embargo, si es la primera vez que utiliza AWS, puede aprovechar el nivel gratuito
Temas
Requisitos previos
-
Debe tener acceso a una Cuenta de AWS con un usuario o rol de IAM que tenga permisos para usar Amazon EC2, Amazon S3 y CloudFormation, o acceso de usuario administrativo.
-
Debe tener una nube privada virtual (VPC) que tenga acceso a Internet. Para la plantilla de este tutorial se necesita una VPC predeterminada, que se incluye automáticamente con las Cuentas de AWS más recientes. Si no tiene una VPC predeterminada, o si se eliminó, consulte la sección de solución de problemas de este tema para ver soluciones alternativas.
Creación de una pila de CloudFormation con la consola
Creación de una pila de CloudFormation Hello world con la consola
-
Abra la Consola de CloudFormation
. -
Elija Crear pila.
-
En la página Crear pila, seleccione Crear a partir de Infrastructure Composer y, a continuación, Cree en Infrastructure Composer. De esta forma, accederá a Infrastructure Composer en el modo de consola de CloudFormation, donde puede cargar y validar la plantilla de ejemplo.
-
Para cargar y validar la plantilla de ejemplo, haga lo siguiente:
-
Elija Plantilla. A continuación, copie y pegue la siguiente plantilla de CloudFormation en el editor de plantillas:
AWSTemplateFormatVersion: 2010-09-09 Description: CloudFormation Template for WebServer with Security Group and EC2 Instance Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' InstanceType: Description: WebServer EC2 instance type Type: String Default: t2.micro AllowedValues: - t3.micro - t2.micro ConstraintDescription: must be a valid EC2 instance type. MyIP: Description: Your IP address in CIDR format (e.g. 203.0.113.1/32). Type: String MinLength: '9' MaxLength: '18' Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. Resources: WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow HTTP access via my IP address SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP WebServer: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: !Base64 | #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html Outputs: WebsiteURL: Value: !Join - '' - - http:// - !GetAtt WebServer.PublicDnsName Description: Website URL
Antes de avanzar al siguiente paso, dediquemos un momento a echar un vistazo a la plantilla y comprender algunos conceptos clave de CloudFormation.
-
En la sección
Parameters
se declaran valores que se pueden transferir a la plantilla cuando crea la pila. Los recursos especificados más adelante en la plantilla hacen referencia a estos valores y utilizan los datos. Los parámetros son un método efectivo para especificar información que no desea almacenar en la propia plantilla. También sirven para especificar información que podría ser única de la configuración o de la aplicación específica que está implementando. -
La plantilla define los siguientes parámetros:
-
LatestAmiId
: recupera el ID de la AMI de Amazon Linux 2 más reciente del Almacén de parámetros de AWS Systems Manager. -
InstanceType
: permite seleccionar el tipo de instancia de EC2 (valor predeterminado:t2.micro
, valores permitidos:t3.micro
,t2.micro
). -
MyIP
: especifica el rango de direcciones IP para el acceso HTTP (el valor predeterminado es 0.0.0.0/0, que permite acceder desde cualquier IP).
-
-
La sección
Resources
contiene las definiciones de los recursos de AWS que desea crear con la plantilla. Las declaraciones de recursos son una forma eficaz de especificar todos estos ajustes de configuración a la vez. Cuando incluye declaraciones de recursos en una plantilla, puede crear y configurar todos los recursos declarados si utiliza la plantilla para crear una pila. También puede crear nuevas pilas a partir de la misma plantilla para lanzar configuraciones de recursos idénticas. -
Esta plantilla crea los siguientes recursos:
-
WebServerSecurityGroup
: grupo de seguridad de EC2 que permite el tráfico HTTP de entrada en el puerto 80 desde el rango de IP especificado. -
WebServer
: instancia de EC2 con la siguiente configuración:-
Usa la AMI de Amazon Linux 2 más reciente.
-
Aplica el tipo de instancia seleccionado.
-
Agrega
WebServerSecurityGroup
a la propiedadSecurityGroupIds
. -
Incluye un script de datos de usuario para instalar Apache HTTP Server.
-
-
-
Se especifica un nombre lógico al principio de cada declaración de recursos y parámetros. Por ejemplo,
WebServerSecurityGroup
es el nombre lógico asignado al recurso del grupo de seguridad de EC2. A continuación, la funciónRef
se utiliza para hacer referencia a los recursos y parámetros mediante sus nombres lógicos en otras partes de la plantilla. Cuando un recurso hace referencia a otro, se crea una dependencia entre ellos. -
En la sección
Outputs
se definen los valores personalizados que se devuelven después de crear la pila. Puede usar los valores de salida para devolver información de los recursos de la pila, como identificadores de recursos o URL. -
La plantilla define una salida:
-
WebsiteURL
: URL del servidor web implementado, que se crea con el nombre de DNS público de la instancia de EC2. La funciónJoin
ayuda a combinar el parámetro fijohttp://
con el parámetro variablePublicDnsName
en una sola cadena, lo que facilita la obtención de la URL completa del servidor web.
-
-
-
Seleccione Validate para asegurarse de que el código YAML sea válido antes de cargar la plantilla.
-
A continuación, seleccione Create template para crear la plantilla y agregarla a un bucket de S3.
-
Tome nota del nombre del bucket de S3 que aparecen en el cuadro de diálogo que se abre para poder eliminarlo posteriormente. A continuación, seleccione Confirm and continue to CloudFormation. De esta forma, accede a la consola de CloudFormation, donde ahora se especifica la ruta de S3 a su plantilla.
-
-
En la página Crear pila, seleccione Siguiente.
-
En la página Especificar los detalles de la pila, escriba un nombre en el campo Nombre de la pila. El nombre de la pila no debe contener espacios. Para este ejemplo, use
MyTestStack
. -
En Parámetros, especifique los valores de los parámetros de la siguiente manera:
-
LatestAmiId: se define de forma predeterminada en la AMI de Amazon Linux 2 más reciente.
-
InstanceType: elija t2.micro o t3.micro para el tipo de instancia de EC2.
nota
Si es la primera vez que utiliza AWS, puede usar el nivel gratuito para lanzar y usar una instancia
t2.micro
de forma gratuita durante 12 meses (en regiones dondet2.micro
no esté disponible, puede usar una instanciat3.micro
del nivel gratuito). -
MyIP: especifique su dirección IP pública real con un sufijo
/32
. El sufijo/32
se usa en la notación CIDR para especificar que se permite una sola dirección IP. Básicamente, esto significa permitir el tráfico solo hacia y desde esta dirección IP específica.
-
-
Seleccione Siguiente dos veces para ir a la página Revisar y crear. Para este tutorial, puede dejar los valores predeterminados en la página Configurar opciones de pila tal y como están.
-
Revisión de la información de la pila. Cuando esté satisfecho con la configuración, haga clic en Submit (Enviar).
Supervisión de la creación de una pila
Al seleccionar Enviar, CloudFormation comienza a crear los recursos que se especifican en la plantilla. La nueva pila, MyTestStack
, aparece en la lista en la parte superior de la consola de CloudFormation. El estado debería ser CREATE_IN_PROGRESS
. Puede ver el estado detallado de una pila visualizando sus eventos.
Visualización de los eventos de la pila
-
En la consola de CloudFormation, seleccione la pila
MyTestStack
en la lista. -
En el panel de detalles de la pila, elija la pestaña Events (Eventos).
La consola actualiza automáticamente la lista de eventos con los últimos eventos cada 60 segundos.
La pestaña Events (Eventos) muestra todos los pasos importantes de la creación de la pila ordenados por la hora de cada evento, con los últimos eventos en la parte superior.
El primer evento (en la parte inferior de la lista de eventos) es el comienzo del proceso de creación de la pila:
2024-12-23 18:54 UTC-7 MyTestStack CREATE_IN_PROGRESS User initiated
A continuación se encuentran los eventos que señalan el comienzo y la finalización de la creación de cada recurso. Por ejemplo, la creación de la instancia de EC2 produce las siguientes entradas:
2024-12-23 18:59 UTC-7 WebServer CREATE_COMPLETE
2024-12-23 18:54 UTC-7 WebServer CREATE_IN_PROGRESS Resource creation
initiated
El evento CREATE_IN_PROGRESS
se registra cuando CloudFormation informa que ha comenzado a crear el recurso. El evento CREATE_COMPLETE
se registra cuando se crea correctamente el recurso.
Una vez que CloudFormation haya creado correctamente la pila, verá el siguiente evento en la parte superior de la pestaña Events (Eventos):
2024-12-23 19:17 UTC-7 MyTestStack CREATE_COMPLETE
Si CloudFormation no puede crear un recurso, informa de un evento de CREATE_FAILED
y, de forma predeterminada, restaura la pila y elimina todos los recursos que se han creado. La columna Status Reason (Motivo del estado) muestra el problema que ha provocado el error.
Una vez creada la pila, puede ir a la pestaña Recursos para ver la instancia de EC2 y el grupo de seguridad que creó.
Prueba del servidor web
Una vez que la pila se haya creado correctamente, vaya a la pestaña Salidas de la consola de CloudFormation. Busque el campo WebsiteURL. Contendrá la URL pública de su instancia de EC2.
Abra un navegador y vaya a la URL que aparece en WebsiteURL. Debería ver un mensaje sencillo ("Hello World!") en el navegador.
De esta forma, se confirma que su instancia de EC2 ejecuta Apache HTTP Server y presenta una página web básica.
Solución de problemas
Si se produce una reversión durante la creación de la pila, es posible que se deba a la falta de una VPC. Así es como se resuelve este problema.
No hay una VPC predeterminada disponible
Para la plantilla de este tutorial se necesita una VPC predeterminada. Si la creación de la pila falla debido a errores de disponibilidad de VPC o subred, es posible que no tenga una VPC predeterminada en su cuenta. Dispone de las opciones siguientes:
-
Crear una nueva VPC predeterminada: puede crear una nueva VPC predeterminada mediante la consola de Amazon VPC. Para obtener instrucciones, consulte Crear una VPC predeterminada en la Guía del usuario de Amazon VPC.
-
Modificar la plantilla para especificar una subred: si tiene una VPC no predeterminada, puede modificar la plantilla para especificar explícitamente los ID de la VPC y la subred. Agregue el siguiente parámetro a la plantilla:
SubnetId: Description: The subnet ID to launch the instance into Type: AWS::EC2::Subnet::Id
A continuación, actualice el recurso
WebServer
para incluir el ID de la subred:WebServer: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup SubnetId: !Ref SubnetId UserData: !Base64 | #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
Al crear la pila, tendrá que especificar una subred que tenga acceso a Internet para que el servidor web sea accesible.
Limpieza
Para asegurarse de que no se le cobra por ningún servicio no deseado, puede realizar una limpieza eliminando la pila y sus recursos. También puede eliminar el bucket de S3 que almacena la plantilla de la pila.
Eliminación de la pila y sus recursos
-
Abra la Consola de CloudFormation
. -
En la página Pilas, seleccione la opción situada junto al nombre de la pila que ha creado (
MyTestStack
) y, a continuación, seleccione Eliminar. -
Cuando se le pida confirmación, seleccione Eliminar.
-
Supervise el progreso del proceso de eliminación de la pila en la pestaña Evento. El estado de
MyTestStack
cambia aDELETE_IN_PROGRESS
. Cuando CloudFormation completa la eliminación de la pila, quita la pila de la lista.
Si ha terminado de trabajar con la plantilla de ejemplo y ya no necesita el bucket de Amazon S3, elimínelo. Para eliminar un bucket, primero debe vaciarlo. Al vaciar un bucket, se eliminan todos los objetos que incluye.
Vaciado y eliminación del bucket de Amazon S3
-
Abra la consola de Amazon S3
. -
En el panel de navegación del lado izquierdo de la consola, elija Buckets (Buckets).
-
En la lista Buckets, seleccione la opción situada junto al nombre del bucket que ha creado para este tutorial y, a continuación, seleccione Vaciar.
-
En la página Vaciar bucket, confirme que desea vaciar el bucket escribiendo
permanently delete
en el campo de texto y, a continuación, elija Vaciar. -
Supervise el progreso del proceso de vaciado del bucket en la página Vaciado del bucket: estado.
-
Para volver a la lista de buckets, seleccione Salir.
-
Seleccione la opción situada junto al nombre del bucket y, a continuación, seleccione Eliminar.
-
Cuando se le pida la confirmación, escriba el nombre del bucket y, a continuación, seleccione Eliminar bucket.
-
Supervise el progreso del proceso de eliminación del bucket en la lista Buckets. Cuando Amazon S3 completa la eliminación del bucket, lo elimina de la lista.
Pasos a seguir a continuación
¡Enhorabuena! Ha creado correctamente una pila, ha supervisado su creación y ha utilizado su salida.
Para seguir aprendiendo:
-
Obtenga más información sobre las plantillas para que pueda crear la suya propia. Para obtener más información, consulte Trabajo con plantillas de CloudFormation.
-
Pruebe el taller Getting Started with AWS CloudFormation
para adquirir práctica con la creación de plantillas. -
Para ver una versión abreviada de Getting Started with AWS CloudFormation
, consulte Implementación de aplicaciones en Amazon EC2. En este tema se describe el mismo escenario de uso de un script auxiliar de CloudFormation, cfn-init
, para arrancar una instancia de Amazon EC2.