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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)
Le schéma suivant montre l'architecture de l'exemple d'application temps réel sans serveur.
![Architecture des applications dans la région.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)
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âche | Description | Compétences requises |
---|---|---|
Installez le kit d'outils AWS CDK. | Pour installer AWS CDK Toolkit dans le monde entier, exécutez la commande suivante.
| DevOps |
Vérifiez la version. | Pour vérifier la version d'AWS CDK Toolkit, exécutez la commande suivante.
| DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Configurez les informations d'identification. | Pour configurer les informations d'identification, exécutez la
| DevOps |
Tâche | Description | Compé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âche | Description | Compé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.
Pour plus d'informations, consultez la documentation AWS. | DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Générez le projet. | Pour créer le code du projet, exécutez la | DevOps |
Déployez le projet. | Pour déployer le code du projet, exécutez la |
Tâche | Description | Compé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âche | Description | Compé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 | 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. 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 | 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éfinieslib/
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.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)