AWSEnchaînez les services en utilisant une approche sans serveur - 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.

AWSEnchaînez les services en utilisant une approche sans serveur

Créée par Aniket Braganza () AWS

Environnement : Production

Technologies : sans serveur ; ; CloudNative DevelopmentAndTesting ; Modernisation DevOps ; Infrastructure

AWSservices : Amazon S3 ; Amazon ; Amazon SNS SQS ; AWS Lambda

Récapitulatif

Ce modèle illustre une approche évolutive et sans serveur pour traiter un fichier chargé en enchaînant Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon), Amazon Simple Queue Service (Amazon SNSSQS) et Lambda. AWS L'exemple de fichier téléchargé est destiné à des fins de démonstration. Vous pouvez utiliser une approche sans serveur pour effectuer d'autres tâches en enchaînant la combinaison de AWS services nécessaires pour atteindre vos objectifs commerciaux. L'approche sans serveur utilise un flux de travail asynchrone qui repose sur des notifications pilotées par des événements, un stockage résilient et une fonction en tant que service (FaaS) pour traiter les demandes. Vous pouvez utiliser l'approche sans serveur pour évoluer afin de répondre à la demande tout en minimisant les coûts.

Remarque : Il existe plusieurs options pour enchaîner les AWS services par le biais d'une approche sans serveur. Par exemple, vous pouvez utiliser une approche qui combine Lambda avec Amazon S3 au lieu d'Amazon et SNS Amazon. SQS Cependant, ce modèle utilise Amazon SNS et Amazon SQS car cette approche permet d'ajouter plusieurs points d'intégration dans le processus d'invocation Lambda lors d'une notification d'événement et d'étendre l'implémentation pour inclure plusieurs écouteurs dans une orchestration sans serveur tout en minimisant la charge de traitement.

Conditions préalables et limitations

Prérequis

Versions du produit

  • AWSCDK2. x

  • Python 3.9

Architecture

Le schéma suivant montre comment les AWS services chaînés peuvent permettre à un utilisateur de télécharger un fichier dans un compartiment S3 pour le traiter.

Flux de travail permettant de télécharger un fichier dans un compartiment S3 à l'aide de services chaînésAWS.

Le schéma suivant illustre le flux de travail suivant :

  1. Un utilisateur télécharge un fichier dans le compartiment S3.

  2. Le téléchargement déclenche un événement S3 qui publie un message dans une SNS rubrique. Le message contient les détails de l'événement S3.

  3. Le message publié dans le SNS sujet est inséré dans une SQS file d'attente, qui est abonnée et reçoit des notifications pour ce sujet.

  4. Une fonction Lambda interroge la SQS file d'attente (en tant que source d'événements) et attend le traitement des messages.

  5. Lorsque la fonction Lambda reçoit des messages de la SQS file d'attente, elle les traite et accuse réception de ces messages.

  6. Si un message n'est pas traité par Lambda, il est renvoyé dans la SQS file d'attente et est finalement transféré dans une file d'attente de lettres SQSmortes.

Pile technologique

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWSLambda

Outils

AWSservices

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • Amazon Simple Notification Service (AmazonSNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

  • 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.

  • 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.

Autres outils

  • AWSCloud Development Kit (AWSCDK) est le principal outil permettant d'interagir avec votre AWS CDK application. Il exécute votre application, interroge le modèle d'application que vous avez défini, produit et déploie les AWS CloudFormation modèles générés par le. AWS CDK

  • AWSL'interface de ligne de commande (AWSCLI) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.

  • Python est un langage de programmation de haut niveau interprété à usage général.

Code

Le code de ce modèle est disponible dans le référentiel GitHub Chaining S3 to to SNS SQS to Lambda.

Épopées

TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Clonez le référentiel et naviguez jusqu'au python/s3-sns-sqs-lambda-chain dossier.

Développeur d'applications

Configurez un environnement virtuel.

  1. Dans le AWSCDK, exécutez la python3 -m venv .venv commande.

  2. Exécutez la source .venv/bin/activate commande sous macOS/Linux ou .venv\Scripts\activate.bat sous Windows.

Développeur d'applications

Installez les dépendances.

Exécutez la commande pip install -r requirements.txt.

Développeur d'applications
TâcheDescriptionCompétences requises

Exécutez des tests unitaires.

  1. Exécutez la commande pip install -r requirements-dev.txt.

  2. (Facultatif) Exécutez la cdk synth --no-staging > template.yml commande pour générer la CloudFormation pile. Important : vous pouvez inspecter la pile, mais évitez de générer des ressources et des artefacts intermédiaires.

  3. Exécutez la pytest commande pour exécuter tous les tests unitaires.

  4. (Facultatif) Exécutez la pytest tests/unit/<test_filename> commande pour exécuter des tests pour un fichier spécifique.

Développeur d'applications, ingénieur de test
TâcheDescriptionCompétences requises

Configurez l'environnement bootstrap.

Suivez les instructions de la section Bootstrapping de la AWS documentation pour amorcer l'environnement à AWS CDK déployer dans chaque AWS région où la CloudFormation pile sera déployée.

Remarque : Cette étape nécessite que vous disposiez d'informations d'identification avec accès par programmation.

Développeur d'applications, DevOps ingénieur, ingénieur de données

Déployez la CloudFormation pile.

Exécutez la cdk deploy commande pour créer et déployer la pile sur le AWS compte.

Développeur d'applications, DevOps ingénieur, AWS DevOps
TâcheDescriptionCompétences requises

Supprimez la CloudFormation pile et supprimez les ressources associées.

Pour supprimer la CloudFormation pile créée et supprimer toutes les ressources associées, exécutez la commande run cdk destroy.

Développeur d'applications