Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AWS AppRunner: aplicaciones aún más fáciles

By Wayman SmithMar 24, 20235 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Introducción

AppRunner, lanzado en mayo de 2021, es la forma más sencilla hasta el momento de ejecutar una aplicación web completa en AWS. El ecosistema de contenedores en AWS abarca varios servicios gestionados, cada uno pensado para casos de uso específicos. Este artículo se enfoca en las aplicaciones web y en cómo pasar del código a una aplicación funcional en cuestión de minutos con AppRunner.

Qué es AppRunner

AppRunner es un servicio totalmente gestionado para aplicaciones en contenedores que te permite construir, desplegar y ejecutar aplicaciones web y servicios de API en contenedores sin tener que administrar la infraestructura. Piénsalo como un ElasticBeanStalk para contenedores. Su objetivo es simplificar y agilizar al máximo la entrega de tu aplicación, además de reducir la dependencia de conocimientos de infraestructura para gestionar load balancers, certificados y la configuración de monitoreo y logging.

Seguro ya conoces el Modelo de Responsabilidad Compartida de AWS, que define qué componentes del stack de TI son responsabilidad de AWS y cuáles del cliente (tú). Todos los servicios de AWS se ubican en algún punto de ese espectro, lo que reduce la carga operativa propia de las operaciones de TI tradicionales. En EC2, tú te encargas de los parches y actualizaciones del sistema operativo, y AWS de la infraestructura física. En RDS, tú te ocupas de tus datos y esquemas, mientras que AWS gestiona las actualizaciones de la base de datos y la infraestructura subyacente. AppRunner sigue este patrón y traslada aún más responsabilidades a AWS, de modo que el cliente solo se ocupa de su código y de la configuración del servicio, y puede concentrarse mucho más en las tareas de desarrollo. A esto se le suele llamar reducir el trabajo pesado no diferenciador, lo que te deja enfocarte en los resultados de negocio.

Lo que hace especial a AppRunner es que abstrae la mayor parte del conocimiento técnico necesario para aprovisionar los recursos que requiere ejecutar tu workload en contenedores, de manera que solo tienes que preocuparte por aportar la imagen del contenedor o el código de la aplicación.

Si quieres una explicación técnica a fondo de cómo funciona AppRunner por dentro y de cómo AWS aprovecha otros servicios internamente, te recomiendo este keynote de AWS, aquí.

Como mencioné antes, los casos de uso de los workloads determinan dónde conviene ejecutar una aplicación, y vale la pena recalcar que AppRunner no es adecuado para todos los escenarios de contenedores. AppRunner no orquesta múltiples workloads en contenedores como lo hace Kubernetes, no soporta tareas/jobs finitos al estilo de ECS, ni escala a cero como Lambda. En lo que sí brilla es en agilizar el proceso desde la generación de código hasta tener una aplicación web en marcha en unos pocos pasos. Si te preguntas por todos los servicios para workloads en contenedores que ofrece AWS y sus casos de uso, en un próximo blog repasaremos el proceso de decisión para definir cuál se adapta mejor a tu workload en contenedores.

Desplegar código en AppRunner

En AppRunner, la unidad de despliegue es el "Service", que puedes entender como tu imagen de contenedor o el código de tu aplicación.

Para desplegar un "Service", empieza haciendo clic en "Create an AppRunner Service".

Crear AppRunner Service

Aquí podrás elegir una fuente para tu aplicación. Una "source" se refiere al lugar desde donde quieres traer el código fuente: ya sea un Container Registry como ECR, o un repositorio de código fuente, que en nuestro ejemplo es Github.

Agregar repositorio de código para usar con AppRunner

Al seleccionar Source Code Repository y luego hacer clic en "Add New", se te pedirá instalar el AWS Connector for Github en tu cuenta de Github, lo que le permite a AWS recuperar el código fuente de la aplicación y desplegarlo en AppRunner.

Autorizar a AWS a conectarse al repositorio de código

Al hacer clic en "Authorize AWS Connector for Github" irás a una página de AWS donde podrás asignar un nombre a tu AWS Connector. Para esta guía asumimos que es la primera vez que instalas un connector y, en ese caso, al hacer clic en "install another" volverás a Github para elegir la cuenta u organización donde instalarlo.

Nombrar el connector e instalarlo en el repositorio

Confirmar instalación

NOTA: Esto puede requerir pasos de autenticación adicionales, por ejemplo si tienes activada la autenticación de dos factores…

Una vez instalado el connector, la ventana emergente se cerrará y volverás a la página de origen y despliegue de AppRunner. Allí verás el nombre de la aplicación de tu AWS Connector, el repositorio de origen y la rama desde la que puedes desplegar tu aplicación.

Información del connector y del repositorio

En la configuración de despliegue, para los fines de este ejemplo, usaremos el disparador "Manual" por defecto.

En la página de configuración de build, elige los ajustes que correspondan a los requisitos de tu aplicación. En este ejemplo, el runtime utilizado es Python. Los valores por defecto para el comando de build y el de start son aceptables. Tus requisitos pueden variar según el runtime.

Configuración del Service

En la página de configuración del Service, especifica los requisitos de recursos de tu aplicación y las variables de entorno que necesite.

En esa misma página también puedes configurar varias funciones del servicio, como AutoScaling, health checks, networking (endpoint público o privado), WAF y Security/IAM para conectarte a otros servicios de AWS, por ejemplo.

Requisitos del Service

Al hacer clic en siguiente, llegarás a la página de resumen, donde podrás revisar todos los ajustes y configuraciones de tu AppRunner Service.

Confirmar la configuración del servicio

Si todos los valores se ven correctos para tu aplicación, despliega tu servicio haciendo clic en Create and deploy.

A continuación, llegarás al AppRunner Service Dashboard. Desde este dashboard puedes ver el estado de tu servicio, los logs de despliegue y otra información útil. Tras unos minutos, deberías ver el estado successfully deployed junto con una URL HTTPS de dominio por defecto que sirve para acceder a tu servicio.

Servicio desplegado correctamente

URL de la aplicación

Llegados a este punto, tu aplicación web ya quedó desplegada en AppRunner en tiempo récord y con apenas unos clics.

AppRunner agiliza muchísimo el proceso de desplegar tu aplicación (tanto código como contenedores). Se requieren muy pocos conocimientos de containerización, load balancing, generación de certificados, autoscaling y otros temas técnicos para poner tu aplicación en marcha. Si quieres desplegar una aplicación web directamente desde código o desde un contenedor existente de forma rápida y segura, te recomiendo considerar AppRunner como una opción viable.

Por último, si vas siguiendo esta guía con fines demostrativos, no olvides eliminar todos los recursos creados durante este post y desvincular cualquier aplicación, por motivos de costo y seguridad.