Guide de Démarrage Rapide
Ce guide vous explique les bases de l’installation et de l’utilisation de @aws/nx-plugin pour développer rapidement des projets sur AWS.
Pour un tutoriel plus approfondi sur la création d’une application full-stack, consultez le Tutoriel de l’Aventure du Donjon.
Prérequis
Section intitulée « Prérequis »Les dépendances globales suivantes sont nécessaires avant de continuer :
- Git
- Node >= 22 (Nous recommandons d’utiliser un outil comme NVM pour gérer vos versions de Node)
- vérifiez avec
node --version
- vérifiez avec
- PNPM >= 10 (vous pouvez également utiliser Yarn >= 4, Bun >= 1 ou NPM >= 10 si vous préférez)
- vérifiez avec
pnpm --version,yarn --version,bun --versionounpm --version
- vérifiez avec
- UV >= 0.5.29
- installez Python 3.12 en exécutant :
uv python install 3.12.0 - vérifiez avec
uv python list --only-installed
- installez Python 3.12 en exécutant :
- AWS Credentials configurées pour votre compte AWS cible (où votre application sera déployée)
Recommandé
Section intitulée « Recommandé »- Docker est requis pour certains générateurs.
- Terraform >= 1.12 est requis si vous choisissez de l’utiliser pour l’infrastructure as code au lieu de CDK
- vérifiez en exécutant
terraform --version
- vérifiez en exécutant
- Si vous utilisez VSCode, nous recommandons d’installer le Nx Console VSCode Plugin.
Étape 1 : Initialiser un nouvel espace de travail Nx
Section intitulée « Étape 1 : Initialiser un nouvel espace de travail Nx »Exécutez la commande suivante pour créer un espace de travail Nx avec le gestionnaire de paquets de votre choix :
npx create-nx-workspace@21.6.8 my-project --pm=pnpm --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=yarn --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=npm --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=bun --preset=@aws/nx-plugin --ci=skip --aiAgentsVous serez invité à choisir votre fournisseur d’infrastructure as code (IaC), soit CDK soit Terraform. Vous pouvez ignorer cette étape en ajoutant --iacProvider à la commande, par exemple :
npx create-nx-workspace@21.6.8 my-project --pm=pnpm --preset=@aws/nx-plugin --iacProvider=CDK --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=yarn --preset=@aws/nx-plugin --iacProvider=CDK --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=npm --preset=@aws/nx-plugin --iacProvider=CDK --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=bun --preset=@aws/nx-plugin --iacProvider=CDK --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=pnpm --preset=@aws/nx-plugin --iacProvider=Terraform --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=yarn --preset=@aws/nx-plugin --iacProvider=Terraform --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=npm --preset=@aws/nx-plugin --iacProvider=Terraform --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=bun --preset=@aws/nx-plugin --iacProvider=Terraform --ci=skip --aiAgentsUne fois terminé, accédez au répertoire du projet :
cd my-projectÉtape 2 : Utiliser les générateurs pour structurer votre projet
Section intitulée « Étape 2 : Utiliser les générateurs pour structurer votre projet »Dans ce guide rapide, nous ajouterons une API tRPC, un site React, une authentification Cognito et une infrastructure CDK ou Terraform. Selon votre type de projet, vous pouvez choisir n’importe quelle combinaison de générateurs pour démarrer rapidement. Consultez les Guides dans la barre de navigation à gauche pour voir toutes les options disponibles.
Ajouter une API tRPC
Section intitulée « Ajouter une API tRPC »- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - ts#trpc-api - Remplissez les paramètres requis
- name: demo-api
- auth: IAM
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMyarn nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMnpx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMbunx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runyarn nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runnpx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runbunx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runCeci créera l’API dans le dossier packages/demo-api.
Ajouter un site React
Section intitulée « Ajouter un site React »- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - ts#react-website - Remplissez les paramètres requis
- name: demo-website
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:ts#react-website --name=demo-websiteyarn nx g @aws/nx-plugin:ts#react-website --name=demo-websitenpx nx g @aws/nx-plugin:ts#react-website --name=demo-websitebunx nx g @aws/nx-plugin:ts#react-website --name=demo-websiteVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runyarn nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runnpx nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runbunx nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runCeci génère un nouveau site React dans packages/demo-website.
Ajouter l’authentification Cognito
Section intitulée « Ajouter l’authentification Cognito »- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - ts#react-website#auth - Remplissez les paramètres requis
- project: @my-project/demo-website
- cognitoDomain: my-demo
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demoyarn nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demonpx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demobunx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demoVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runyarn nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runnpx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runbunx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runCeci configure l’infrastructure nécessaire et le code React pour ajouter l’authentification Cognito à votre site.
Connecter le frontend au backend
Section intitulée « Connecter le frontend au backend »- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - api-connection - Remplissez les paramètres requis
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apiyarn nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apinpx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apibunx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apiVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runyarn nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runnpx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runbunx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runCeci configure les fournisseurs nécessaires pour permettre à votre site d’appeler votre API tRPC.
Ajouter l’infrastructure
Section intitulée « Ajouter l’infrastructure »Ajoutez le projet d’infrastructure selon votre fournisseur IaC choisi.
- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - ts#infra - Remplissez les paramètres requis
- name: infra
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:ts#infra --name=infrayarn nx g @aws/nx-plugin:ts#infra --name=infranpx nx g @aws/nx-plugin:ts#infra --name=infrabunx nx g @aws/nx-plugin:ts#infra --name=infraVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#infra --name=infra --dry-runyarn nx g @aws/nx-plugin:ts#infra --name=infra --dry-runnpx nx g @aws/nx-plugin:ts#infra --name=infra --dry-runbunx nx g @aws/nx-plugin:ts#infra --name=infra --dry-runCeci configure une application CDK que vous pouvez utiliser pour déployer votre infrastructure sur AWS.
- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - terraform#project - Remplissez les paramètres requis
- name: infra
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:terraform#project --name=infrayarn nx g @aws/nx-plugin:terraform#project --name=infranpx nx g @aws/nx-plugin:terraform#project --name=infrabunx nx g @aws/nx-plugin:terraform#project --name=infraVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:terraform#project --name=infra --dry-runyarn nx g @aws/nx-plugin:terraform#project --name=infra --dry-runnpx nx g @aws/nx-plugin:terraform#project --name=infra --dry-runbunx nx g @aws/nx-plugin:terraform#project --name=infra --dry-runCeci configure un projet Terraform que vous pouvez utiliser pour déployer votre infrastructure sur AWS.
Étape 3 : Exécuter votre site et API localement
Section intitulée « Étape 3 : Exécuter votre site et API localement »Utilisez la commande suivante pour démarrer les serveurs de développement locaux pour votre site et ses APIs connectées :
pnpm nx run demo-website:serve-localyarn nx run demo-website:serve-localnpx nx run demo-website:serve-localbunx nx run demo-website:serve-localVotre site sera disponible à l’adresse http://localhost:4200.
Les modifications apportées à votre site et à votre API seront reflétées en temps réel grâce au rechargement automatique des serveurs.
Étape 4 : Définir les ressources cloud et déployer sur AWS
Section intitulée « Étape 4 : Définir les ressources cloud et déployer sur AWS »Ouvrez packages/infra/src/stacks/application-stack.ts et ajoutez le code suivant :
import * as cdk from 'aws-cdk-lib';import { DemoApi, DemoWebsite, UserIdentity } from ':my-project/common-constructs';import { Construct } from 'constructs';
export class ApplicationStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props);
const identity = new UserIdentity(this, 'identity'); const api = new DemoApi(this, 'api', { integrations: DemoApi.defaultIntegrations(this).build(), }); api.grantInvokeAccess(identity.identityPool.authenticatedRole);
new DemoWebsite(this, 'website'); }}C’est tout le code CDK nécessaire pour déployer notre application full-stack.
Ouvrez packages/infra/src/main.tf et ajoutez le code suivant :
# Include metrics tracking for @aws/nx-plugin usagemodule "metrics" { source = "../../common/terraform/src/metrics"}
# Deploy user identitymodule "user_identity" { source = "../../common/terraform/src/core/user-identity"}
# Deploy APImodule "demo_api" { source = "../../common/terraform/src/app/apis/demo-api"}
# Grant authenticated users access to invoke the APIresource "aws_iam_policy" "api_invoke_policy" { name = "DemoApiInvokePolicy" description = "Policy to allow authenticated users to invoke the API"
policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Allow" Action = "execute-api:Invoke" Resource = "${module.demo_api.api_execution_arn}/*/*" } ] })}
resource "aws_iam_role_policy_attachment" "authenticated_api_access" { role = module.user_identity.authenticated_role_name policy_arn = aws_iam_policy.api_invoke_policy.arn}
# Deploy websiteprovider "aws" { alias = "us_east_1" region = "us-east-1"}
module "demo_website" { source = "../../common/terraform/src/app/static-websites/demo-website"
providers = { aws.us_east_1 = aws.us_east_1 }
depends_on = [module.user_identity, module.demo_api]}C’est tout le code Terraform nécessaire pour déployer notre application full-stack.
Construire et déployer l’infrastructure
Section intitulée « Construire et déployer l’infrastructure »Exécutez ensuite la commande suivante pour construire votre projet :
pnpm nx run-many --target build --allyarn nx run-many --target build --allnpx nx run-many --target build --allbunx nx run-many --target build --allSi vous rencontrez des erreurs de linting, vous pouvez exécuter cette commande pour les corriger automatiquement :
pnpm nx run-many --target lint --configuration=fix --allyarn nx run-many --target lint --configuration=fix --allnpx nx run-many --target lint --configuration=fix --allbunx nx run-many --target lint --configuration=fix --allInitialisez votre infrastructure :
pnpm nx run infra:bootstrapyarn nx run infra:bootstrapnpx nx run infra:bootstrapbunx nx run infra:bootstrapLe bootstrapping CDK est requis à la fois pour votre région AWS cible et pour us-east-1 afin de permettre le déploiement du WebACL AWS WAF pour le site.
pnpm nx run infra:bootstrapyarn nx run infra:bootstrapnpx nx run infra:bootstrapbunx nx run infra:bootstrapLe bootstrapping Terraform crée un bucket S3 pour stocker vos fichiers d’état Terraform. Cette opération ne doit être effectuée qu’une fois par combinaison compte AWS/région.
Déployez votre projet :
pnpm nx run infra:deploy my-project-sandbox/*yarn nx run infra:deploy my-project-sandbox/*npx nx run infra:deploy my-project-sandbox/*bunx nx run infra:deploy my-project-sandbox/*pnpm nx run infra:applyyarn nx run infra:applynpx nx run infra:applybunx nx run infra:applyCette commande exécutera d’abord terraform plan pour afficher les modifications prévues, puis appliquera ces changements pour déployer votre infrastructure.
Étape 5 : Tester le site avec les ressources cloud déployées
Section intitulée « Étape 5 : Tester le site avec les ressources cloud déployées »-
Récupérez le fichier
runtime-config.json:Terminal window pnpm nx run demo-website:load:runtime-configTerminal window yarn nx run demo-website:load:runtime-configTerminal window npx nx run demo-website:load:runtime-configTerminal window bunx nx run demo-website:load:runtime-config -
Démarrez le serveur local du site
Terminal window pnpm nx run demo-website:serveTerminal window yarn nx run demo-website:serveTerminal window npx nx run demo-website:serveTerminal window bunx nx run demo-website:serve
Votre site sera disponible à l’adresse http://localhost:4200 et pointera vers les ressources déployées pour l’API et l’authentification.
Félicitations ! 🎉 Vous avez déployé avec succès une application full-stack en utilisant @aws/nx-plugin !