Automatisez le déploiement d'applications imbriquées à l'aide d'AWS SAM - Recommandations AWS

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.

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.
  1. Construisez et déployez les piles.

  2. La CloudFormation pile Auth contient Amazon Cognito.

  3. La CloudFormation pile de produits contient une fonction Lambda et Amazon API Gateway

  4. 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âcheDescriptionCompé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 aws configure commande et suivez les instructions.

$aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:

Pour plus d'informations sur la configuration de vos informations d'identification, consultez Authentification et informations d'accès.

DevOps ingénieur
TâcheDescriptionCompétences requises

Clonez le référentiel de code AWS SAM.

  1. Clonez le référentiel d'échantillons aws sam nested stack pour ce modèle en saisissant la commande suivante.

    git clone https://github.com/aws-samples/aws-sam-nested-stack-sample.git
  2. Accédez au répertoire cloné en saisissant la commande suivante.

    cd aws-sam-nested-stack-sample
DevOps ingénieur

Déployez des modèles pour initialiser le projet.

Pour initialiser le projet, exécutez la SAM init commande. Lorsque vous êtes invité à choisir une source de modèle, choisissezCustom Template Location.

DevOps ingénieur
TâcheDescriptionCompé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 :

  • auth.yaml— Ce modèle configure les ressources liées à l'authentification, telles qu'Amazon Cognito et AWS Systems Manager Parameter Store.

  • product-mock.yaml— Ce modèle déploie des ressources liées au produit, telles que les fonctions Lambda et Amazon API Gateway.

  • shoppingcart-service.yaml— Ce modèle configure les ressources liées au panier d'achat, telles que AWS Identity and Access Management (IAM), les tables DynamoDB et les fonctions Lambda.

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 esttemplate.yml. Toutes les applications distinctes sont imbriquées dans le modèle template.yml parent unique.

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.

sam build
DevOps ingénieur
TâcheDescriptionCompé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.

sam deploy --guided --stack-name shopping-cart-nested-stack --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

La commande posera quelques questions. Répondez à toutes les questions avecy.

DevOps ingénieur
TâcheDescriptionCompé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 :

  1. Connectez-vous à la console de gestion AWS, puis accédez à la CloudFormationconsole.

  2. Vérifiez que les piles pour parents et enfants sont répertoriées.

    Dans cet exemple, sam-shopping-cart il s'agit de la pile parent qui appelle les piles Auth, Product et Shopping imbriquées.

    La pile de produits fournit le lien URL de l'API Gateway du produit en sortie.

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.