Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Automatisez le déploiement d'applications imbriquées à l'aide d'AWS SAM
Créée par le Dr Rahul Sharad Gaikwad (AWS), Dmitry Gulin (AWS), Ishwar Chauthaiwale (AWS) et Tabby Ward (AWS)
Référentiel de code : aws-sam-nested-stack -sample | Environnement : PoC ou pilote | Technologies : modernisation ; sans serveur ; DevOps |
Charge de travail : toutes les autres charges de travail | Services AWS : AWS Serverless Application Repository |
Récapitulatif
Sur Amazon Web Services (AWS), AWS Serverless Application Model (AWS SAM) est un framework open source qui fournit une syntaxe abrégée pour exprimer les fonctions, les API, les bases de données et les mappages de sources d'événements. Avec seulement quelques lignes pour chaque ressource, vous pouvez définir l'application que vous souhaitez et la modéliser à l'aide de YAML. Au cours du déploiement, SAM transforme et étend la syntaxe SAM en CloudFormation syntaxe AWS, que vous pouvez utiliser pour créer des applications sans serveur plus rapidement.
AWS SAM simplifie le développement, le déploiement et la gestion des applications sans serveur sur la plateforme AWS. Il fournit un cadre standardisé, un déploiement plus rapide, des capacités de test locales, une gestion des ressources, une intégration fluide avec les outils de développement et une communauté de soutien. Ces fonctionnalités en font un outil précieux pour créer des applications sans serveur de manière efficace.
Ce modèle utilise des modèles AWS SAM pour automatiser le déploiement d'applications imbriquées. Une application imbriquée est une application intégrée à une autre application. Les applications pour parents sont appelées applications pour enfants. Il s'agit de composants faiblement couplés d'une architecture sans serveur.
À l'aide d'applications imbriquées, vous pouvez créer rapidement des architectures sans serveur très sophistiquées en réutilisant des services ou des composants créés et gérés de manière indépendante, mais composés à l'aide d'AWS SAM et du Serverless Application Repository. Les applications imbriquées vous aident à créer des applications plus puissantes, à éviter les doublons et à garantir la cohérence et les meilleures pratiques au sein de vos équipes et organisations. Pour illustrer les applications imbriquées, le modèle déploie un exemple d'application de panier d'achat sans serveur AWS
Conditions préalables et limitations
Prérequis
Un compte AWS actif
Un cloud privé virtuel (VPC) et des sous-réseaux existants
Un environnement de développement intégré, tel qu'AWS Cloud9 ou Visual Studio Code (pour plus d'informations, consultez la section Outils de création sur AWS
) bibliothèque Python Wheel installée à l'aide de pip install wheel, si elle n'est pas déjà installée
Limites
Le nombre maximal d'applications pouvant être imbriquées dans une application sans serveur est de 200.
Le nombre maximum de paramètres pour une application imbriquée peut être de 60.
Versions du produit
Cette solution repose sur l'interface de ligne de commande AWS SAM (AWS SAM CLI) version 1.21.1, mais cette architecture devrait fonctionner avec les versions ultérieures de l'interface de ligne de commande AWS SAM.
Architecture
Pile technologique cible
Amazon API Gateway
AWS SAM
Amazon Cognito
Amazon DynamoDB
AWS Lambda
File d'attente Amazon Simple Queue Service (Amazon SQS)
Architecture cible
Le schéma suivant montre comment les demandes des utilisateurs sont adressées aux services d'achat en appelant des API. La demande de l'utilisateur, y compris toutes les informations nécessaires, est envoyée à Amazon API Gateway et à l'autorisateur Amazon Cognito, qui mettent en œuvre les mécanismes d'authentification et d'autorisation pour les API.
Lorsqu'un élément est ajouté, supprimé ou mis à jour dans DynamoDB, un événement est placé dans DynamoDB Streams, qui à son tour lance une fonction Lambda. Pour éviter la suppression immédiate d'anciens éléments dans le cadre d'un flux de travail synchrone, les messages sont placés dans une file d'attente SQS, qui lance une fonction de travail pour supprimer les messages.
![Opérations POST et PUT, depuis API Gateway jusqu'aux fonctions Lambda, en passant par DynamoDB et Product Service.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5b454bae-5fd4-405d-a37d-6bafc3fcf889.png)
Dans cette configuration de solution, l'interface de ligne de commande AWS SAM sert d'interface pour les CloudFormation piles AWS. Les modèles AWS SAM déploient automatiquement des applications imbriquées. Le modèle SAM parent appelle les modèles enfants, et la CloudFormation pile parent déploie les piles enfants. Chaque pile enfant crée les ressources AWS définies dans les CloudFormation modèles AWS SAM.
![Processus en quatre étapes utilisant la CLI AWS SAM avec une pile parent et trois CloudFormation piles enfants.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5828026e-72ad-4a3f-a5f2-bffac0f13e42.png)
Construisez et déployez les piles.
La CloudFormation pile Auth contient Amazon Cognito.
La CloudFormation pile de produits contient une fonction Lambda et Amazon API Gateway
La CloudFormation pile Shopping contient une fonction Lambda, Amazon API Gateway, la file d'attente SQS et la base de données Amazon DynamoDB.
Outils
Outils
Amazon API Gateway vous aide à créer, publier, gérer, surveiller et sécuriser REST, HTTP et les WebSocket API à n'importe quelle échelle.
AWS vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
Amazon Cognito fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour les applications Web et mobiles.
Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
AWS Serverless Application Model (AWS SAM) est un framework open source qui vous aide à créer des applications sans serveur dans le cloud AWS.
Amazon Simple Queue Service (Amazon SQS) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués.
Code
Le code de ce modèle est disponible dans le référentiel d'échantillons GitHub AWS SAM Nested Stack
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Installez la CLI AWS SAM. | Pour installer l'interface de ligne de commande AWS SAM, consultez les instructions de la documentation AWS SAM. | DevOps ingénieur |
Configurez les informations d'identification AWS. | Pour définir les informations d'identification AWS afin que l'interface de ligne de commande AWS SAM puisse appeler les services AWS en votre nom, exécutez la
Pour plus d'informations sur la configuration de vos informations d'identification, consultez Authentification et informations d'accès. | DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Clonez le référentiel de code AWS SAM. |
| DevOps ingénieur |
Déployez des modèles pour initialiser le projet. | Pour initialiser le projet, exécutez la | DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Consultez les modèles d'applications AWS SAM. | Passez en revue les modèles pour les applications imbriquées. Cet exemple utilise les modèles d'application imbriqués suivants :
| DevOps ingénieur |
Passez en revue le modèle parent. | Passez en revue le modèle qui invoquera les modèles d'applications imbriqués. Dans cet exemple, le modèle parent est | DevOps ingénieur |
Compilez et créez le code du modèle AWS SAM. | À l'aide de l'interface de ligne de commande AWS SAM, exécutez la commande suivante.
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Déployez les applications. | Pour lancer le modèle de code SAM qui crée les CloudFormation piles d'applications imbriquées et déploie le code dans l'environnement AWS, exécutez la commande suivante.
La commande posera quelques questions. Répondez à toutes les questions avec | DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Vérifiez les piles. | Pour consulter les CloudFormation piles AWS et les ressources AWS définies dans les modèles AWS SAM, procédez comme suit :
| DevOps ingénieur |
Ressources connexes
Références
Tutoriels et vidéos
Informations supplémentaires
Une fois que tout le code est en place, l'exemple présente la structure de répertoire suivante :
sam_stacks — Ce dossier contient la couche.
shared.py
Une couche est une archive de fichiers contenant des bibliothèques, un environnement d'exécution personnalisé ou d'autres dépendances. Avec les couches, vous pouvez utiliser des bibliothèques dans votre fonction sans avoir à les inclure dans un package de déploiement.product-mock-service— Ce dossier contient toutes les fonctions et tous les fichiers Lambda relatifs au produit.
shopping-cart-service— Ce dossier contient toutes les fonctions et tous les fichiers Lambda liés au shopping.