Guide de démarrage rapide
Ce guide vous présente les bases de l’installation et de l’utilisation de @aws/nx-plugin pour créer rapidement des projets sur AWS.
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 quelque chose comme NVM pour gérer vos versions de node)
- vérifiez en exécutant
node --version
- vérifiez en exécutant
- UV >= 0.5.29
- installez Python 3.14 en exécutant :
uv python install 3.14.0 - vérifiez avec
uv python list --only-installed
- installez Python 3.14 en exécutant :
Recommandé
Section intitulée « Recommandé »- PNPM >= 11 (vous pouvez également utiliser Yarn >= 4, Bun >= 1, ou NPM >= 10 si vous préférez)
- vérifiez en exécutant
pnpm --version,yarn --version,bun --versionounpm --version
- vérifiez en exécutant
- AWS Credentials configurées pour votre compte AWS cible sont requises pour déployer votre application (ainsi que pour certains workflows de développement local).
- Docker ou Finch >= 1.6.0 est requis pour certains générateurs. Pour Docker, les multi-platform builds doivent être configurés ; Finch prend en charge les multi-platform builds nativement.
- Terraform >= 1.12 est requis si vous choisissez de l’utiliser pour l’infrastructure en tant que 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 :
pnpm create @aws/nx-workspace my-projectyarn create @aws/nx-workspace my-projectnpm create @aws/nx-workspace -- my-projectbun create @aws/nx-workspace my-projectUne fois terminé, naviguez vers le 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 »Nous allons ajouter une API tRPC, un site web React, une authentification Cognito et une infrastructure CDK ou Terraform dans ce guide de démarrage rapide. Selon le type de projet que vous construisez, vous pouvez choisir n’importe quelle combinaison de générateurs pour démarrer rapidement votre projet. Consultez les Générateurs dans la barre de navigation à gauche pour voir la liste complète des options, ou essayez le constructeur de graphe pour construire votre espace de travail visuellement.
Comme raccourci, vous pouvez utiliser le bouton ci-dessous pour copier les commandes permettant de structurer l’application complète.
Sinon, suivez les étapes ci-dessous pour exécuter chaque générateur vous-même.
Ajouter une API tRPC
Section intitulée « Ajouter une API tRPC »pnpm nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactiveyarn nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactivenpx nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactivebunx nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactiveVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactive --dry-runyarn nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactive --dry-runnpx nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactive --dry-runbunx nx g @aws/nx-plugin:ts#api --name=demo-api --framework=trpc --auth=iam --no-interactive --dry-run- 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#api - Remplissez les paramètres requis
- name: demo-api
- framework: trpc
- auth: iam
- Cliquez sur
Generate
Cela créera l’API dans le dossier packages/demo-api.
Ajouter un site web React
Section intitulée « Ajouter un site web React »pnpm nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactiveyarn nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactivenpx nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactivebunx nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactiveVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactive --dry-runyarn nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactive --dry-runnpx nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactive --dry-runbunx nx g @aws/nx-plugin:ts#website --name=demo-website --no-interactive --dry-run- 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#website - Remplissez les paramètres requis
- name: demo-website
- Cliquez sur
Generate
Cela génère un nouveau site web React dans packages/demo-website.
Ajouter l’authentification Cognito
Section intitulée « Ajouter l’authentification Cognito »pnpm nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactiveyarn nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactivenpx nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactivebunx nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactiveVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactive --dry-runyarn nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactive --dry-runnpx nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactive --dry-runbunx nx g @aws/nx-plugin:ts#website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --no-interactive --dry-run- 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#website#auth - Remplissez les paramètres requis
- project: @my-project/demo-website
- cognitoDomain: my-demo
- Cliquez sur
Generate
Cela configure l’infrastructure nécessaire et le code React pour ajouter l’authentification Cognito à votre site web.
Connecter le frontend au backend
Section intitulée « Connecter le frontend au backend »pnpm nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactiveyarn nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactivenpx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactivebunx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactiveVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactive --dry-runyarn nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactive --dry-runnpx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactive --dry-runbunx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --no-interactive --dry-run- 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 - connection - Remplissez les paramètres requis
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- Cliquez sur
Generate
Cela configure les fournisseurs nécessaires pour garantir que votre site web peut appeler votre API tRPC.
Ajouter l’infrastructure
Section intitulée « Ajouter l’infrastructure »Ajoutez le projet d’infrastructure en fonction de votre fournisseur IAC choisi.
pnpm nx g @aws/nx-plugin:ts#infra --name=infra --no-interactiveyarn nx g @aws/nx-plugin:ts#infra --name=infra --no-interactivenpx nx g @aws/nx-plugin:ts#infra --name=infra --no-interactivebunx nx g @aws/nx-plugin:ts#infra --name=infra --no-interactiveVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:ts#infra --name=infra --no-interactive --dry-runyarn nx g @aws/nx-plugin:ts#infra --name=infra --no-interactive --dry-runnpx nx g @aws/nx-plugin:ts#infra --name=infra --no-interactive --dry-runbunx nx g @aws/nx-plugin:ts#infra --name=infra --no-interactive --dry-run- 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
Cela configure une application CDK que vous pouvez utiliser pour déployer votre infrastructure sur AWS.
pnpm nx g @aws/nx-plugin:terraform#project --name=infra --no-interactiveyarn nx g @aws/nx-plugin:terraform#project --name=infra --no-interactivenpx nx g @aws/nx-plugin:terraform#project --name=infra --no-interactivebunx nx g @aws/nx-plugin:terraform#project --name=infra --no-interactiveVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:terraform#project --name=infra --no-interactive --dry-runyarn nx g @aws/nx-plugin:terraform#project --name=infra --no-interactive --dry-runnpx nx g @aws/nx-plugin:terraform#project --name=infra --no-interactive --dry-runbunx nx g @aws/nx-plugin:terraform#project --name=infra --no-interactive --dry-run- 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
Cela configure un projet Terraform que vous pouvez utiliser pour déployer votre infrastructure sur AWS.
Étape 3 : Exécuter votre site web et votre API localement
Section intitulée « Étape 3 : Exécuter votre site web et votre API localement »Utilisez la commande suivante pour démarrer les serveurs de développement locaux pour votre site web et ses API connectées :
pnpm devyarn devnpm run devbun devVotre site web sera disponible à l’adresse http://localhost:4200.
Les modifications apportées à votre site web et à votre API seront reflétées en temps réel, car les serveurs locaux du site web et de l’API se rechargeront automatiquement.
É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 { Stack, StackProps } from 'aws-cdk-lib';import { DemoApi, DemoWebsite, UserIdentity } from '@my-project/common-constructs';import { Construct } from 'constructs';
export class ApplicationStack extends Stack { constructor(scope: Construct, id: string, props?: 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 CDK dont nous avons besoin 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"}
# Shared asset bucket — stages Lambda deployment zips for every lambda / API modulemodule "asset_bucket" { source = "../../common/terraform/src/core/asset-bucket"}
# Deploy APImodule "demo_api" { source = "../../common/terraform/src/app/apis/demo-api"
asset_bucket_name = module.asset_bucket.bucket_name}
# 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 Terraform dont nous avons besoin pour déployer notre application full-stack.
Construire et déployer l’infrastructure
Section intitulée « Construire et déployer l’infrastructure »Ensuite, exécutez la commande suivante pour construire votre projet :
pnpm buildyarn buildnpm run buildbun buildInitialisez votre infrastructure :
pnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infrapnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infraDéployez votre projet :
pnpm nx deploy-sandbox infrayarn nx deploy-sandbox infranpx nx deploy-sandbox infrabunx nx deploy-sandbox infrapnpm nx apply infrayarn nx apply infranpx nx apply infrabunx nx apply infraÉtape 5 : Tester le site web avec les ressources cloud déployées
Section intitulée « Étape 5 : Tester le site web avec les ressources cloud déployées »-
Récupérez le fichier
runtime-config.json:Terminal window pnpm nx load-runtime-config demo-websiteTerminal window yarn nx load-runtime-config demo-websiteTerminal window npx nx load-runtime-config demo-websiteTerminal window bunx nx load-runtime-config demo-website -
Démarrez le serveur de site web local
Terminal window pnpm nx serve demo-websiteTerminal window yarn nx serve demo-websiteTerminal window npx nx serve demo-websiteTerminal window bunx nx serve demo-website
Votre site web sera disponible à l’adresse http://localhost:4200 et pointera vers les ressources que vous avez déployées pour l’API et l’authentification.
Félicitations ! 🎉 Vous avez réussi à construire et déployer une application full-stack en utilisant @aws/nx-plugin !