Introduction
Lancé en mai 2021, AppRunner est à ce jour le moyen le plus simple d'exécuter une application web complète sur AWS. L'écosystème de conteneurs sur AWS comprend plusieurs services managés, chacun adapté à des cas d'usage spécifiques. Cet article se concentre sur l'application web et sur la manière de passer du code à une application fonctionnelle en quelques minutes grâce à AppRunner.
Qu'est-ce qu'AppRunner
AppRunner est un service entièrement managé qui permet de créer, déployer et exécuter des applications web et des services API conteneurisés sans aucune gestion d'infrastructure. On peut le voir comme un ElasticBeanStalk dédié aux conteneurs. Son objectif : simplifier et fluidifier considérablement la livraison de votre application, tout en réduisant le besoin d'expertise infrastructure pour gérer les load balancers, les certificats, le monitoring et la configuration des logs.
Vous avez probablement entendu parler du modèle de responsabilité partagée d'AWS, qui définit les composants de la stack IT dont AWS est responsable, par opposition à ceux qui relèvent de votre responsabilité en tant que client. Tous les services AWS se situent quelque part sur ce spectre de responsabilité partagée, ce qui allège la charge de gestion liée aux opérations IT traditionnelles. Avec EC2, vous gérez les correctifs et mises à jour de l'OS, et AWS s'occupe de l'infrastructure matérielle. Avec RDS, vous êtes responsable de vos données et de votre schéma, tandis qu'AWS gère les mises à jour de la base et l'infrastructure sous-jacente. AppRunner pousse cette logique encore plus loin : le client n'a plus à se soucier que de son code et de la configuration du service, ce qui lui permet de se concentrer davantage sur le développement. On parle parfois de réduction de l'undifferentiated heavy lifting : moins de tâches sans valeur ajoutée, plus de focus sur les résultats métier.
La force d'AppRunner réside dans sa capacité à abstraire la majorité des connaissances techniques nécessaires au provisionnement des ressources requises pour exécuter votre workload conteneurisé. Vous n'avez plus qu'à fournir l'image du conteneur ou le code de l'application.
Pour une explication technique approfondie du fonctionnement interne d'AppRunner et de la manière dont AWS s'appuie sur d'autres services en coulisses, je vous invite à visionner cette keynote AWS, ici.
Comme évoqué plus haut, le cas d'usage du workload détermine où une application doit s'exécuter, et il faut noter qu'AppRunner ne convient pas à tous les usages liés aux conteneurs. AppRunner n'orchestre pas plusieurs workloads conteneurisés comme le fait Kubernetes, ne prend pas en charge les tâches ou jobs finis comme ECS, et ne descend pas à zéro comme Lambda. En revanche, il excelle pour passer du code à une application web opérationnelle en quelques étapes simples. Si vous vous interrogez sur l'ensemble des services pour workloads conteneurisés disponibles sur AWS et leurs cas d'usage, un prochain article détaillera la démarche à suivre pour identifier le service le mieux adapté à votre workload.
Déployer du code sur AppRunner
Sur AppRunner, l'unité de déploiement est le Service, que l'on peut assimiler à votre image de conteneur ou au code de votre application.
Pour déployer un Service, commencez par cliquer sur Create an AppRunner Service.

Création d'un service AppRunner
Vous devrez ensuite choisir une source pour votre application. Une source désigne l'emplacement depuis lequel vous souhaitez récupérer le code source — soit un registre de conteneurs comme ECR, soit un dépôt de code source — ici, GitHub dans notre exemple.

Ajout d'un dépôt de code à utiliser avec AppRunner
En sélectionnant Source Code Repository puis en cliquant sur Add New, vous serez invité à installer l'AWS Connector for Github sur votre compte GitHub, ce qui permet à AWS de récupérer le code source de l'application et de le déployer sur AppRunner.

Autoriser AWS à se connecter au dépôt de code
En cliquant sur Authorize AWS Connector for Github, vous serez redirigé vers une page AWS où vous pourrez nommer votre AWS Connector. Ce guide part du principe qu'il s'agit de votre première installation d'un connecteur ; dans ce cas, cliquer sur install another vous renverra vers GitHub pour sélectionner le compte ou l'organisation sur lequel installer le connecteur.

Nommer le connecteur et l'installer sur le dépôt

Confirmation de l'installation
NOTE : des étapes d'authentification supplémentaires peuvent être nécessaires, par exemple si vous avez activé l'authentification à deux facteurs…
Une fois le connecteur installé, la fenêtre pop-up se ferme et vous revenez à la page de source et de déploiement d'AppRunner. Vous y verrez le nom de votre AWS Connector Application, le dépôt source et la branche depuis laquelle vous pouvez déployer votre application.

Informations sur le connecteur et le dépôt
Dans les paramètres de déploiement, pour les besoins de cet exemple, nous utiliserons le déclencheur de déploiement Manual par défaut.
Sur la page de configuration du build, sélectionnez les paramètres correspondant aux exigences de votre application. Dans cet exemple, le runtime utilisé est Python. Les valeurs par défaut pour la commande de build et la commande de démarrage conviennent. Vos besoins peuvent varier selon le runtime utilisé.

Paramètres du service
Sur la page Service configuration, indiquez les besoins en ressources de votre application ainsi que les éventuelles variables d'environnement requises.
Cette page permet également de configurer plusieurs fonctionnalités du service : AutoScaling, health checks, réseau (endpoint public ou privé), WAF, ou encore Security/IAM pour vous connecter à d'autres services AWS, par exemple.

Exigences du service
Cliquez sur Next pour accéder à la page récapitulative, où vous pourrez vérifier l'ensemble des paramètres et configurations de votre service AppRunner.

Confirmation des paramètres du service
Si toutes les valeurs correspondent à votre application, déployez votre service en cliquant sur Create and deploy.
Vous arrivez alors sur le dashboard du service AppRunner. Ce dashboard vous permet de consulter le statut de votre service, les logs de déploiement et d'autres informations utiles. Après quelques minutes, le statut successfully deployed doit s'afficher, accompagné d'une URL HTTPS de domaine par défaut, utilisable pour accéder à votre service.

Service déployé avec succès

URL de l'application
À ce stade, votre application web est déployée sur AppRunner en un temps record et en quelques clics seulement.
AppRunner rend le déploiement de votre application (qu'il s'agisse de code ou de conteneurs) particulièrement fluide. Très peu de connaissances en conteneurisation, load balancing, génération de certificats, autoscaling ou autres sujets techniques sont nécessaires pour mettre votre application en production. Si vous cherchez à déployer rapidement et en toute sécurité une application web directement depuis du code ou depuis un conteneur existant, AppRunner mérite clairement d'être envisagé.
Enfin, si vous suivez ce guide à des fins de démonstration, pensez à supprimer toutes les ressources créées au cours de cet article et à délier toutes les applications, pour des raisons de coût et de sécurité.