Enchaînez les services AWS 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.

Enchaînez les services AWS en utilisant une approche sans serveur

Créée par Aniket Braganza (AWS)

Environnement : Production

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

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

Récapitulatif

Ce modèle illustre une approche évolutive et sans serveur pour traiter un fichier importé en enchaînant Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon SNS), Amazon Simple Queue Service (Amazon SQS) et AWS Lambda. 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 les différents services AWS 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 services AWS 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 SNS et Amazon SQS. Toutefois, 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

  • Kit de développement logiciel AWS 2.x

  • Python 3.9

Architecture

Le schéma suivant montre comment les services AWS enchaî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 des services AWS enchaînés.

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 sur une rubrique SNS. Le message contient les détails de l'événement S3.

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

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

  5. Lorsque la fonction Lambda reçoit des messages de la file d'attente SQS, 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 file d'attente SQS et est finalement transféré dans une file d'attente de lettres mortes SQS.

Pile technologique

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

Outils

Services AWS

  • 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 (Amazon SNS) 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 (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.

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

Autres outils

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

  • L'interface de ligne de commande AWS (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell 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 SNS to 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 kit AWS CDK, 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 documentation AWS pour démarrer l'environnement de déploiement d'AWS CDK dans chaque région AWS 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 compte AWS.

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