Usando AWS Cloud9 para probar y desplegar aplicaciones Docker: Una guía paso a paso
La guía proporciona un recorrido paso a paso sobre cómo configurar un entorno Cloud9, integrarlo con Git y preparar aplicaciones Docker para pruebas, usando dos microservicios (en Node.js y Python).
Actualización: ADVERTENCIA de deprecación del servicio AWS Cloud9.
AWS dice: “Después de una cuidadosa consideración, hemos tomado la decisión de cerrar el acceso de nuevos clientes a AWS Cloud9, efectivo desde el 25 de julio de 2024. Los clientes existentes de AWS Cloud9 pueden continuar usando el servicio normalmente. AWS continúa invirtiendo en mejoras de seguridad, disponibilidad y rendimiento para AWS Cloud9, pero no planeamos introducir nuevas características. Encontrarás más información” aquí.
TLDR
Esta es la guía que me hubiera gustado encontrar antes de comenzar a usar AWS Cloud9. Hay muchos artículos similares por ahí, pero ninguno como este, ¡o al menos, no encontré ninguno!
- AWS Cloud9 es un entorno de desarrollo integrado (IDE) basado en la nube que te permite escribir, ejecutar y depurar tu código con solo un navegador.
- Incluye un editor de código, depurador y terminal.
- Ya tienes preinstaladas las principales herramientas que necesitarás para descargar y crear tu código (incluyendo git o docker).
1. Introducción a AWS Cloud9
¿Alguna vez te has sentido frustrado por las restricciones de tu entorno de desarrollo local? Si es así, no eres el único.
Entra AWS Cloud9, un Entorno de Desarrollo Integrado (IDE) basado en la nube que se destaca por su integración perfecta con Docker y accesibilidad basada en navegador, liberándote de las restricciones de las configuraciones tradicionales. Imagina ejecutar código, depurar e integrar aplicaciones Docker directamente desde tu navegador, sin los dolores de cabeza habituales de configuración. Ese es el poder de Cloud9.
En este artículo, profundizamos en cómo Cloud9 no solo ofrece conveniencia sino que aporta un nuevo nivel de poder y versatilidad a tu experiencia de codificación. Su robusto editor de código, depurador eficiente y terminal integrado transforman la codificación en un proceso simplificado y sin complicaciones. Esto es especialmente crucial para proyectos que demandan flexibilidad, como aplicaciones serverless o aplicaciones en contenedores. Con Cloud9, el mundo del desarrollo basado en la nube está al alcance de tu mano, permitiéndote enfocarte más en crear y menos en configurar.
Ventajas y Limitaciones
Para darte una imagen clara, aquí están las principales fortalezas y debilidades.
Ventajas
Entorno de Desarrollo Integrado: Cloud9 ofrece una configuración completa de IDE directamente en la nube. Esto significa que puedes evitar el proceso a menudo tedioso de configurar tu entorno local, simplificando significativamente tu proceso de desarrollo.Accesibilidad: Con su naturaleza basada en la nube, Cloud9 proporciona la flexibilidad de codificar desde cualquier lugar. Ya sea que estés en casa, en un café o al otro lado del mundo, todo lo que necesitas es una conexión a internet y estás listo para codificar.Integración con AWS: La integración de Cloud9 con los servicios de AWS es perfecta, mejorando la eficiencia de tu flujo de trabajo. Esto incluye acceso directo a AWS CLI, fácil integración con AWS CodeCommit y más, facilitando la gestión de tareas relacionadas con AWS dentro del IDE.Características Colaborativas: La plataforma admite colaboración en tiempo real, permitiendo que múltiples desarrolladores trabajen en el mismo proyecto simultáneamente. Esta característica es invaluable para proyectos en equipo y sesiones de programación en pareja.
Limitaciones
Factor de Costo: Si bien Cloud9 ofrece un abundante conjunto de características, es importante tener en cuenta que no es completamente gratuito. El uso más allá del nivel gratuito de AWS implica costos, como ejecutar una instancia EC2 o un servidor. Por ejemplo, en Irlanda, una instancia t2.micro cuesta alrededor de $0.0126 por hora.Dependencia de Internet: Como IDE basado en la nube, Cloud9 requiere una conexión a internet estable y continua. Esto podría ser una desventaja en entornos con acceso a internet limitado o poco confiable.Personalización Limitada: En comparación con algunos IDEs locales, Cloud9 podría tener limitaciones en términos de opciones de personalización. Si bien ofrece una gama de funcionalidades, los desarrolladores acostumbrados a entornos locales altamente personalizados podrían encontrar este aspecto ligeramente restrictivo.
2. Comenzando con Cloud9
2.1. Inicializando tu Entorno Cloud9
Configurar tu entorno AWS Cloud9 es un proceso sencillo. Aquí está cómo puedes hacerlo:
Acceder al Servicio AWS Cloud9: Inicia sesión en tu cuenta de AWS y navega al servicio Cloud9.Crear un Nuevo Entorno: Selecciona la opción Crear un Nuevo Entorno. Aquí, necesitarás proporcionar algunos detalles:- Tipo de Instancia: Elige el tipo de instancia EC2 apropiado según las necesidades de tu proyecto.
- Configuración de Tiempo de Espera: Establece el tiempo de inactividad deseado después del cual la instancia debe apagarse para ahorrar recursos.
- Configuración de Red: Configura los ajustes de red según tus requisitos.
Iniciar el Entorno: Una vez que hayas configurado estas opciones, AWS iniciará la instancia EC2. Para entrar al IDE de Cloud9, haz clic en el botón Abrir, y se lanzará una nueva pestaña del navegador con tu entorno.
2.2. Gestionando tu Entorno Después del Uso
Debes saber cómo detener el entorno si quieres reutilizarlo.
Tienes diferentes opciones.
Detener la Instancia en la consola EC2: Si detienes la instancia EC2, el entorno se detendrá. Sin embargo, si dejas el IDE abierto en el navegador, la instancia se inicializará nuevamente. Ten cuidado.Cerrar el IDE en el navegador: Cerrar el IDE lleva a la detención automática de la instancia EC2después del tiempo de espera definido, ayudando a ahorrar recursos.
Nota Importante: Si terminas la instancia EC2 a través de la consola EC2,
el entorno Cloud9 permanece pero se vuelve inaccesible, lo que lleva a errores al intentar volver a acceder. Por lo tanto, termina la instancia solo si tienes la intención de eliminar permanentemente el entorno. error: unable to access
2.3. Compartiendo tu entorno
Cloud9 también permite el trabajo colaborativo. Puedes compartir tu entorno de desarrollo con otro usuario IAM dentro de AWS: En el IDE, usa la opción Compartir para otorgar acceso a otro usuario.
Estos entornos aparecerán entonces bajo ‘Mis entornos’ o ‘Compartido conmigo’ en el servicio AWS Cloud9, facilitando la colaboración fácil.
3. Trabajando con Cloud9
Ahora que tu entorno Cloud9 está configurado, exploremos algunas tareas que puedes realizar dentro de este versátil IDE.
3.1. Integración con repositorios git
La integración de control de versiones es un primer paso crucial en cualquier proyecto de desarrollo, y Cloud9 simplifica esto con su integración perfecta con Git.
Con Cloud9, puedes conectarte sin esfuerzo con AWS CodeCommit u otros repositorios Git, simplificando tu flujo de trabajo. Aquí está cómo puedes clonar un repositorio:
Clonando desde
GitHub:He creado este repositorio público con 2 microservicios, (uno en Node.js y el otro en Python). Puedes usarlo para seguir este tutorial.
Usa el comando a continuación para clonar
1
git clone https://github.com/alazaroc/microservices.gitClonando desde AWS
CodeCommit:La integración es sencilla. No tienes que gestionar permisos, usuarios ni nada por el estilo. Puedes clonar directamente el código de CodeCommit:
El siguiente es un ejemplo de cómo puedes clonar el repositorio de CodeCommit (tienes que usar tu propio repositorio):
1
git clone codecommit::eu-west-1://microservices
Después de clonar, el código de tu aplicación es inmediatamente accesible en el IDE, listo para los siguientes pasos.
3.2. Preparar la aplicación para Pruebas
Antes de sumergirnos en las pruebas, hay un par de pasos esenciales que debemos tomar para asegurar que nuestra aplicación esté lista y accesible.
Configuración del Grupo de Seguridad
Para asegurar que nuestra aplicación sea accesible y segura, primero necesitamos abordar la configuración del Grupo de Seguridad en nuestra instancia EC2 de Cloud9. Inicialmente, viene sin reglas de entrada, lo que significa que el acceso externo está restringido. Este es un aspecto crucial del enfoque de seguridad primero de AWS, minimizando vulnerabilidades.
Sin embargo, para probar nuestra aplicación desde el exterior, necesitaremos modificar estas configuraciones agregando reglas de entrada específicas, permitiendo tráfico en puertos necesarios mientras mantenemos nuestra instancia segura.
Cookies de terceros
En la configuración de tu navegador, asegúrate de que las cookies de terceros o el seguimiento entre sitios estén habilitados. Este paso es crucial para que ciertas funcionalidades dentro de Cloud9 funcionen sin problemas. Sin esta configuración, podrías encontrar problemas o mensajes de error en la fase de vista previa.
3.3. Probando tu aplicación
Ahora, procedamos a probar dos microservicios – uno construido con Node.js y el otro con Python. Puedes encontrar el código de muestra para estos microservicios aquí.
Estas dos aplicaciones están preparadas para ser ejecutadas localmente directamente (después de la instalación de los paquetes/bibliotecas), pero también contienen un Dockerfile, por lo que están en contenedores y podemos usar Docker para probarlas.
Docker y Cloud9 juntos crean un entorno robusto para el desarrollo de aplicaciones en contenedores. Docker encapsula el entorno de la aplicación, asegurando consistencia en diferentes etapas de desarrollo. Esta integración con Cloud9 mejora la productividad y
reduce el síndrome de 'funciona en mi máquina'. Profundizaremos en cómo Dockerizar nuestras aplicaciones Node.js y Python dentro de Cloud9 simplifica los procesos de desarrollo y despliegue, haciendo nuestras aplicaciones más portátiles y escalables.
3.3.1. Aplicación Node.js
Instalación
Instala los paquetes npm requeridos:
1
npm install
Ejecutando la Aplicación
Para iniciar el microservicio Node.js, usa el comando:
1
node app.js
Alternativamente, puedes abrir el archivo
app.jsy hacer clic en el botónRunen el IDE de Cloud9.
El servidor se iniciará y estará disponible en http://localhost:3000.
Accediendo a la Aplicación
Ahora que nuestra aplicación está ejecutándose, el siguiente paso es verificar su funcionalidad. AWS Cloud9 ofrece dos métodos principales para acceder a tu aplicación en ejecución:
Vista previa de la aplicación en ejecución
Si intentas previsualizar la aplicación ejecutándose en el puerto 3000, recibirás un mensaje como este:
AWS dice:
No estás obligado a ejecutar usando HTTP sobre el puerto 8080, 8081 o 8082.
Si no haces esto, no puedes previsualizar tu aplicación en ejecución desde dentro del IDE. Para más información, consulta Preview a running application.
En nuestro caso estamos usando el puerto 3000, así que no podemos usar la funcionalidad de vista previa.
Si cambias el puerto de la aplicación a 8080, entonces, puedes hacerlo:
Usando la IP pública de la instancia
Si cambiar el puerto no es una opción o si prefieres acceso externo, puedes usar la IP pública de la instancia EC2. Aquí está cómo encontrar la IP pública de tu instancia y acceder a la aplicación:
Dockerización
Para construir la imagen Docker de la aplicación, ejecuta:
1
docker build -t ms-nodejs .
Para ejecutar la aplicación como un contenedor Docker:
1
docker run -p 3000:3000 --name ms-nodejs ms-nodejs
3.3.2. Aplicación Python
Instalación
Instala los paquetes Python requeridos:
1
pip install Flask requests
Ejecutando la Aplicación
Para ejecutar el microservicio, ejecuta el siguiente comando:
1
python app.py
Por defecto, el servidor se inicia en http://localhost:5000.
Consulta la sección de aplicación Node.js para saber cómo acceder a esta URL.
Dockerización
Para construir la imagen Docker, ejecuta:
1
docker build -t ms-python .
Para ejecutar la aplicación como un contenedor Docker:
1
docker run -p 5000:5000 --name ms-python ms-python
3.4. Subiendo Imágenes Docker a Amazon ECR
El siguiente paso, después de construir y probar las imágenes Docker de estas 2 aplicaciones es subirlas a Amazon Elastic Container Registry (ECR).
3.4.1. Crear los repositorios ECR
1
2
3
4
5
6
7
8
aws ecr create-repository \
--repository-name ms-nodejs \
--image-scanning-configuration scanOnPush=true \
--region eu-west-1
aws ecr create-repository \
--repository-name ms-python \
--image-scanning-configuration scanOnPush=true \
--region eu-west-1
3.4.2. Obtener las imágenes locales
1
docker images
3.4.3. Iniciar sesión en ECR
1
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com
Reemplaza
xxxxxxxxxxxxpor tu account_number
3.4.4. Subir imágenes a ECR
1
2
3
4
5
docker tag edSae8fef003 xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/ms-python:latest
docker push xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/ms-python:latest
docker tag fa3757c48c72 xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/ms-nodejs:latest
docker push xxxxxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/ms-nodejs:latest
Reemplaza
edSae8fef003yfa3757c48c72por tus ids de imágenes ms_nodejs y ms_python
4. Conclusión
Hemos recorrido la configuración de AWS Cloud9, integrándolo con repositorios Git, probando aplicaciones Docker y finalmente, subiendo imágenes Docker a Amazon ECR. Este recorrido demuestra la integración perfecta y las poderosas capacidades de AWS Cloud9 en la gestión de proyectos basados en Docker.
Ahora, mientras te embarcas en aplicar estos conocimientos a tus esfuerzos de desarrollo, recuerda que cada proyecto es un mosaico único de desafíos y oportunidades de aprendizaje. Te animo a no solo usar Cloud9, sino a experimentar con él, moldearlo en tu flujo de trabajo y descubrir las innumerables formas en que puede amplificar tu productividad y creatividad dentro del ecosistema de AWS.
Pero no dejes que el viaje termine aquí. Tus experiencias, conocimientos e innovaciones son invaluables – y compartirlas crea un rico tapiz de conocimiento que beneficia a toda la comunidad de desarrollo. Te invito a usar la sección de comentarios a continuación como una plataforma para compartir tus propias historias con Cloud9. ¿Cómo ha transformado tu proceso de desarrollo? ¿Qué desafíos únicos has superado usándolo? Tus experiencias compartidas no son solo historias; son los puntos de referencia para otros en su viaje de desarrollo basado en la nube.
Juntos, continuemos explorando, innovando y elevando el arte del desarrollo con AWS Cloud9. Sumérgete, comparte tu historia, y crezcamos todos como una comunidad de desarrolladores con visión de futuro.
¡Feliz codificación!







