Déployez des applications à piles multiples à l'aide d'AWS CDK avec TypeScript - 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.

Déployez des applications à piles multiples à l'aide d'AWS CDK avec TypeScript

Créée par le Dr Rahul Sharad Gaikwad (AWS)

Environnement : Production

Technologies : modernisation ; migration ; DevOps

Charge de travail : toutes les autres charges de travail

Services AWS : Amazon API Gateway ; AWS Lambda ; Amazon Kinesis

Récapitulatif

Ce modèle fournit une step-by-step approche pour le déploiement d'applications sur Amazon Web Services (AWS) à l'aide d'AWS Cloud Development Kit (AWS CDK) avec TypeScript. À titre d'exemple, le modèle déploie une application d'analyse en temps réel sans serveur.

Le modèle crée et déploie des applications imbriquées. La CloudFormation pile AWS parent appelle les piles enfants, ou piles imbriquées.  Chaque pile enfant crée et déploie les ressources AWS définies dans la CloudFormation pile. AWS CDK Toolkit, la commande d'interface de ligne de commande (CLI)cdk, est l'interface principale pour les CloudFormation piles.

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif

  • Cloud privé virtuel (VPC) et sous-réseaux existants

  • AWS CDK Toolkit installé et configuré

  • Un utilisateur doté d'autorisations d'administrateur et d'un ensemble de clés d'accès.

  • Node.js

  • Interface de ligne de commande AWS (AWS CLI)

Limites

  • Comme AWS CDK utilise AWS CloudFormation, les applications AWS CDK sont soumises à des quotas de CloudFormation service. Pour plus d'informations, consultez la section CloudFormation Quotas AWS.

Versions du produit

Ce modèle a été créé et testé à l'aide des outils et versions suivants.

  • Boîte à outils AWS CDK 1.83.0

  • Node.js 14,13.0

  • npm 7,0,14

Le modèle doit fonctionner avec n'importe quelle version d'AWS CDK ou de npm. Notez que les versions 13.0.0 à 13.6.0 de Node.js ne sont pas compatibles avec le CDK AWS.

Architecture

Pile technologique cible

  • Console AWS Amplify

  • Amazon API Gateway

  • AWS CDK

  • Amazon CloudFront

  • Amazon Cognito

  • Amazon DynamoDB

  • Amazon Data Firehose

  • Amazon Kinesis Data Streams

  • AWS Lambda

  • Amazon Simple Storage Service (Amazon S3)

Architecture cible

Le schéma suivant montre le déploiement d'applications à piles multiples à l'aide d'AWS CDK avec. TypeScript

Architecture de pile dans le VPC, avec une pile parent et deux piles enfants contenant des ressources.

Le schéma suivant montre l'architecture de l'exemple d'application temps réel sans serveur.

Architecture des applications dans la région.

Outils

Outils

  • La console AWS Amplify est le centre de contrôle pour les déploiements complets d'applications Web et mobiles dans AWS. L'hébergement Amplify Console fournit un flux de travail basé sur Git pour héberger des applications Web sans serveur Fullstack avec un déploiement continu. L'interface utilisateur d'administration est une interface visuelle permettant aux développeurs Web et mobiles de créer et de gérer des backends d'applications en dehors de la console AWS.

  • Amazon API Gateway est un service AWS permettant de créer, de publier, de gérer, de surveiller et de sécuriser REST, HTTP et des WebSocket API à n'importe quelle échelle.

  • AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.

  • AWS CDK Toolkit est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre application AWS CDK. La commande cdk CLI est le principal outil d'interaction avec votre application AWS CDK. Il exécute votre application, interroge le modèle d'application que vous avez défini et produit et déploie les CloudFormation modèles AWS générés par le CDK AWS.

  • Amazon CloudFront est un service Web qui accélère la distribution de contenus Web statiques et dynamiques, tels que les fichiers .html, .css, .js et les fichiers image. CloudFront diffuse votre contenu via un réseau mondial de centres de données appelés emplacements périphériques pour réduire la latence et améliorer les performances.

  • Amazon Cognito fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour vos applications Web et mobiles. Vos utilisateurs peuvent se connecter directement ou par l'intermédiaire d'un tiers.

  • Amazon DynamoDB est un service de base de données NoSQL entièrement géré qui fournit des performances rapides et prévisibles avec une évolutivité sans faille.

  • Amazon Data Firehose est un service entièrement géré permettant de diffuser des données de streaming en temps réel vers des destinations telles qu'Amazon S3, Amazon Redshift, OpenSearch Amazon Service, Splunk et tout point de terminaison HTTP personnalisé ou appartenant à des fournisseurs de services tiers pris en charge.

  • Amazon Kinesis Data Streams est un service permettant de collecter et de traiter de grands flux d'enregistrements de données en temps réel.

  • AWS Lambda est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l'échelle automatiquement, qu'il s'agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Vous payez uniquement le temps de calcul que vous utilisez. Vous n'exposez aucuns frais quand votre code n'est pas exécuté.

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

Code

Le code de ce modèle est joint.

Épopées

TâcheDescriptionCompétences requises

Installez le kit d'outils AWS CDK.

Pour installer AWS CDK Toolkit dans le monde entier, exécutez la commande suivante.

npm install -g aws-cdk

DevOps

Vérifiez la version.

Pour vérifier la version d'AWS CDK Toolkit, exécutez la commande suivante. 

cdk --version

DevOps
TâcheDescriptionCompétences requises

Configurez les informations d'identification.

Pour configurer les informations d'identification, exécutez la aws configure commande et suivez les instructions.

$aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:
DevOps
TâcheDescriptionCompétences requises

Téléchargez le code de projet ci-joint.

Pour plus d'informations sur le répertoire et la structure des fichiers, consultez la section Informations supplémentaires.

DevOps
TâcheDescriptionCompétences requises

Démarrez l'environnement.

Pour déployer le CloudFormation modèle AWS sur le compte et la région AWS que vous souhaitez utiliser, exécutez la commande suivante.

cdk bootstrap <account>/<Region>

Pour plus d'informations, consultez la documentation AWS.

DevOps
TâcheDescriptionCompétences requises

Générez le projet.

Pour créer le code du projet, exécutez la npm run build commande.

DevOps

Déployez le projet.

Pour déployer le code du projet, exécutez la cdk deploy commande.

TâcheDescriptionCompétences requises

Vérifiez la création de la pile.

Sur la console de gestion AWS, choisissez CloudFormation. Dans les piles du projet, vérifiez qu'une pile parent et deux piles enfants ont été créées.

DevOps
TâcheDescriptionCompétences requises

Envoyez des données vers Kinesis Data Streams.

Configurez votre compte AWS pour envoyer des données à Kinesis Data Streams à l'aide d'Amazon Kinesis Data Generator (KDG). Pour plus d'informations, consultez Amazon Kinesis Data Generator.

DevOps

Créez un utilisateur Amazon Cognito.

Pour créer un utilisateur Amazon Cognito, téléchargez le modèle cognito-setup.json depuis la section Créer un utilisateur Amazon Cognito sur CloudFormation la page d'aide de Kinesis Data Generator. Lancez le modèle, puis entrez votre nom d'utilisateur et votre mot de passe Amazon Cognito.

L'onglet Sorties répertorie l'URL du Kinesis Data Generator.

DevOps

Connectez-vous à Kinesis Data Generator

Pour vous connecter à KDG, utilisez les informations d'identification Amazon Cognito que vous avez fournies et l'URL du générateur de données Kinesis.

DevOps

Testez l'application.

Dans KDG, dans Modèle d'enregistrement, Modèle 1, collez le code de test dans la section Informations supplémentaires, puis choisissez Envoyer des données.

DevOps

Testez API Gateway.

Une fois les données ingérées, testez API Gateway en utilisant la GET méthode de récupération des données.

DevOps

Ressources connexes

Références

Informations supplémentaires

Détails du répertoire et du fichier

Ce modèle définit les trois piles suivantes.

  • parent-cdk-stack.ts— Cette pile agit en tant que pile parent et appelle les deux applications enfants en tant que piles imbriquées. 

  • real-time-analytics-poc-stack.ts— Cette pile imbriquée contient l'infrastructure et le code de l'application.

  • real-time-analytics-web-stack.ts— Cette pile imbriquée contient uniquement le code statique de l'application Web.

Les fichiers importants et leurs fonctionnalités

  • bin/real-time-analytics-poc.ts— Point d'entrée de l'application AWS CDK. Il charge toutes les piles définies lib/ ci-dessous.

  • lib/real-time-analytics-poc-stack.ts— Définition de la pile de l'application AWS CDK (real-time-analytics-poc).

  • lib/real-time-analytics-web-stack.ts— Définition de la pile de l'application AWS CDK (real-time-analytics-web-stack).

  • lib/parent-cdk-stack.ts— Définition de la pile de l'application AWS CDK (parent-cdk).

  • package.json— le manifeste du module npm, qui inclut le nom, la version et les dépendances de l'application.

  • package-lock.json— Maintenu par npm.

  • cdk.json— Boîte à outils pour exécuter l'application.

  • tsconfig.json— La TypeScript configuration du projet.

  • .gitignore— Liste des fichiers que Git doit exclure du contrôle de source.

  • node_modules— Maintenu par npm ; inclut les dépendances du projet.

La section de code suivante de la pile parent appelle les applications enfants sous la forme de piles AWS CDK imbriquées.

import * as cdk from '@aws-cdk/core'; import { Construct, Stack, StackProps } from '@aws-cdk/core'; import { RealTimeAnalyticsPocStack } from './real-time-analytics-poc-stack'; import { RealTimeAnalyticsWebStack } from './real-time-analytics-web-stack'; export class CdkParentStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new RealTimeAnalyticsPocStack(this, 'RealTimeAnalyticsPocStack'); new RealTimeAnalyticsWebStack(this, 'RealTimeAnalyticsWebStack'); } }

Code pour les tests

session={{date.now('YYYYMMDD')}}|sequence={{date.now('x')}}|reception={{date.now('x')}}|instrument={{random.number(9)}}|l={{random.number(20)}}|price_0={{random.number({"min":10000, "max":30000})}}|price_1={{random.number({"min":10000, "max":30000})}}|price_2={{random.number({"min":10000, "max":30000})}}|price_3={{random.number({"min":10000, "max":30000})}}|price_4={{random.number({"min":10000, "max":30000})}}|price_5={{random.number({"min":10000, "max":30000})}}|price_6={{random.number({"min":10000, "max":30000})}}|price_7={{random.number({"min":10000, "max":30000})}}|price_8={{random.number({"min":10000, "max":30000})}}|

Test de l'API Gateway

Sur la console API Gateway, testez API Gateway à l'aide de la GET méthode.

Console API Gateway avec GET sélectionné sous OPTIONS.

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip