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 de AWS SAM
Créé par le Dr Rahul Sharad Gaikwad (AWS), Dmitry Gulin (), Ishwar Chauthaiwale (AWS) et Tabby Ward () AWS 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 | AWSservices : AWS Serverless Application Repository |
Récapitulatif
Sur Amazon Web Services (AWS), le modèle d'application AWS sans serveur (AWSSAM) est un framework open source qui fournit une syntaxe abrégée pour exprimer les fonctionsAPIs, 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 deYAML. Au cours du déploiement, SAM transforme et développe la SAM syntaxe en une AWS CloudFormation syntaxe que vous pouvez utiliser pour créer des applications sans serveur plus rapidement.
AWSSAMsimplifie le développement, le déploiement et la gestion des applications sans serveur sur la AWS plateforme. 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 AWS SAM modèles 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 du Serverless Application AWS SAM 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 AWS sans serveur
Conditions préalables et limitations
Prérequis
Un AWS compte actif
Un cloud privé virtuel (VPC) et des sous-réseaux existants
Un environnement de développement intégré tel que Visual Studio Code (pour plus d'informations, voir Outils sur lesquels s'appuyer 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 est basée sur la version 1.21.1 de AWS SAM Command Line Interface (AWSSAMCLI), mais cette architecture devrait fonctionner avec AWS SAM CLI les versions ultérieures.
Architecture
Pile technologique cible
APIPasserelle Amazon
AWS SAM
Amazon Cognito
Amazon DynamoDB
AWSLambda
File d'attente Amazon Simple Queue Service (AmazonSQS)
Architecture cible
Le schéma suivant montre comment les demandes des utilisateurs sont adressées aux services d'achat en appelantAPIs. 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 le. APIs
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 SQS file d'attente, qui lance une fonction de travail pour supprimer les messages.
Dans cette configuration de solution, AWS SAM CLI sert d'interface pour les AWS CloudFormation piles. AWSSAMles modèles déploient automatiquement les applications imbriquées. Le SAM modèle parent appelle les modèles enfants, et la CloudFormation pile parent déploie les piles enfants. Chaque pile enfant crée les AWS ressources définies dans les AWS SAM CloudFormation modèles.
Construisez et déployez les piles.
La CloudFormation pile Auth contient Amazon Cognito.
La CloudFormation pile de produits contient une fonction Lambda et Amazon Gateway API
La CloudFormation pile Shopping contient une fonction Lambda, Amazon API Gateway, la SQS file d'attente et la base de données Amazon DynamoDB.
Outils
Outils
Amazon API Gateway vous aide à créer, publier, gérer, surveiller et sécuriser, et REST ceHTTP, WebSocket APIs à n'importe quelle échelle.
AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions.
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 SQL sans base de données entièrement géré qui fournit des performances rapides, prévisibles et évolutives.
AWSLambda est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner 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.
AWSLe modèle d'application sans serveur (AWSSAM) est un framework open source qui vous aide à créer des applications sans serveur dans le cloud. AWS
Amazon Simple Queue Service (AmazonSQS) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous aide à intégrer et à dissocier les systèmes et composants logiciels distribués.
Code
Le code de ce modèle est disponible dans le référentiel GitHub AWSSAMNested Stack Sample
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Installez AWS SAMCLI. | Pour procéder à l'installation AWS SAMCLI, consultez les instructions de la AWSSAMdocumentation. | DevOps ingénieur |
Configurez les AWS informations d'identification. | Pour définir les AWS informations d'identification afin qu'ils AWS SAM CLI puissent passer des appels aux AWS services 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 AWS SAM code. |
| 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 |
---|---|---|
Passez en revue les modèles de AWS SAM candidature. | 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 AWS SAM modèle. | À l'aide de AWS SAMCLI, exécutez la commande suivante.
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Déployez les applications. | Pour lancer le SAM modèle de code qui crée les CloudFormation piles d'applications imbriquées et déploie le code dans l'AWSenvironnement, 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 passer en revue les AWS CloudFormation piles et les AWS ressources définies dans les AWS SAM modèles, procédez comme suit :
| DevOps ingénieur |
Ressources connexes
Références
Microservice de panier d'achat sans serveur
(AWSexemple d'application)
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.