Automatisez le déploiement d'applications imbriquées à l'aide de 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 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.

POSTet PUT des opérations allant de API Gateway aux fonctions Lambda en passant par DynamoDB et Product Service.

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.

Processus en quatre étapes utilisant AWS SAM CLI des piles avec un parent et trois enfants CloudFormation .
  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 Gateway API

  4. 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âcheDescriptionCompé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 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 AWS SAM code.

  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

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 :

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

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

  • 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 AWS SAM modèle.

À l'aide de AWS SAMCLI, exécutez la commande suivante.

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

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 passer en revue les AWS CloudFormation piles et les AWS ressources définies dans les AWS SAM modèles, procédez comme suit :

  1. Connectez-vous à la console AWS de gestion, 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 URL lien Product API Gateway 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.