Cómo utilizar Cloudformation para crear un bucket S3
Existen múltiples formas de crear un bucket S3 en AWS. Cloudformation es una de las formas de Infraestructura como Código (IaC) mediante la cual puedes crear un cubo así como tener tu código y compartirlo con otros. Antes de continuar, asumo que conoces el cubo S3 y los servicios AWS de Cloudformation. Si no conoces S3, te recomiendo que primero sigas los pasos para crear un bucket S3 utilizando la consola de AWS. Haz clic aquí para leer el artículo sobre cómo crear un bucket S3 desde la consola de AWS.
En este artículo, exploraremos varias opciones disponibles en Cloudformation para crear un bucket S3. Para conocer todas las opciones disponibles en Cloudformation para crear un bucket S3 visita la página oficial de AWS aquí.
Requisitos previos
- Cuenta de AWS(Créala si no tienes una).
- Conocimientos básicos de Plantillas de Cloudformation.
- Conocimientos básicos de los Cubos de S3
¿Qué vamos a hacer?
- Iniciar sesión en AWS.
- Crear una plantilla.
- Crea una Cloudformation Stack.
- Elimina la Cloudformation Stack.
Iniciar sesión en AWS
Haz clic aquí para ir a la página de inicio de sesión de AWS. Introduce tus credenciales de usuario para acceder a tu cuenta de AWS.
Una vez que hayas iniciado sesión con éxito en tu cuenta de AWS, verás la consola de administración de AWS como se indica a continuación.
Crear una plantilla
Antes de proceder a la creación de una pila crea un archivo en tu sistema local con el siguiente contenido.
Incluso puedes descargar la plantilla desde mi repositorio de Github, el enlace a la plantilla se menciona a continuación.
https://github.com/shivalkarrahul/DevOps/blob/master/aws/cloudformation/create-s3/create-s3.template
AWSTemplateFormatVersion: '2010-09-09' Metadata: License: Apache-2.0 Description: 'AWS CloudFormation Template to create an S3_Website_Bucket_With_Retain_On_Delete' Parameters: BucketNameParameter: Type: String Description: Bucket Name Resources: S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketNameParameter AccessControl: PublicRead WebsiteConfiguration: IndexDocument: index.html ErrorDocument: error.html DeletionPolicy: Retain Outputs: WebsiteURL: Value: !GetAtt [S3Bucket, WebsiteURL] Description: URL for website hosted on S3 S3BucketSecureURL: Value: !Join ['', ['https://', !GetAtt [S3Bucket, DomainName]]] Description: Name of AWS S3 bucket to hold website content
Crear una pila Cloudformation
Una vez que tengas una plantilla en tu máquina local ve al panel principal de AWS, Haz clic en servicios en la parte superior izquierda de la pantalla y busca «Cloudformation». Haz clic en el resultado de Cloudformation que obtengas.
Verás el panel principal de Cloudformation. Ya tengo una pila en mi cuenta en la región seleccionada.
Para crear una pila haz clic en Crear pila –> Con nuevos recursos(estándar).
Selecciona la opción «Subir un archivo de plantilla» y elige la plantilla de tu máquina local. Haz clic en el botón «Siguiente» para continuar.
Especifica un nombre a la pila, Especifica también un nombre a un bucket S3 que se creará. Asegúrate de que el nombre que especifiques sea único a nivel global y que ningún otro bucket tenga el mismo nombre en todo el mundo en AWS. Haz clic en el botón «Siguiente» para continuar.
Las etiquetas son opcionales, puedes especificarlas o no, para continuar haz clic en el botón «Siguiente».
Desplázate hacia abajo al final de la página y haz clic en el botón «Crear pila» para crear un bucket S3 utilizando la pila Cloudformation.
Si el nombre que has especificado para el bucket es único y no hay ningún otro bucket con el mismo nombre en todo el mundo en AWS, se creará tu bucket y, una vez creado con éxito, verás el estado como «CREATE_COMPLETE».
Para comprobar si se ha creado el bucket, haz clic en servicios en la parte superior izquierda de la pantalla y busca S3 para ir al panel de control de S3.
En el panel de control de S3, verás que se ha creado tu cubo de S3.
Eliminar la pila de Cloudformation
Sabemos que al eliminar la pila Cloudformation se eliminan los recursos que crea. Esta vez es un poco diferente.
Ahora, si vuelves atrás y compruebas el código que tenemos en nuestra plantilla, te darás cuenta de que tenemos «DeletionPolicy: Retain». Gracias a esta opción, tu cubo no se borrará aunque borres la pila.
Aún así, si quieres borrar la pila haz clic en el botón «Borrar».
Confirma la acción de borrado en la pantalla emergente que recibirás.
Una vez eliminada la pila, verás el estado como «PILA_ELIMINADA».
Como he mencionado antes, debido a la opción «DeletionPolicy: Retain«, la pila se borrará pero el cubo de S3 se conservará.
Puedes volver al panel de control de S3 y ver que tu cubo de S3 sigue disponible en tu cuenta.
Conclusión
En este artículo hemos visto lo fácil que es crear un bucket de S3 utilizando una pila de Cloudformation. Podemos utilizar la misma pila para crear múltiples cubos de S3. Incluso podemos almacenar nuestro código en sistemas de control de versiones y compartirlo con otras personas. Hemos visto cómo la opción«DeletionPolicy: Retain» retiene el cubo y no lo borra aunque se elimine la pila.