Guida Rapida
Questa guida ti accompagna attraverso le basi dell’installazione e dell’utilizzo di @aws/nx-plugin per costruire rapidamente progetti su AWS.
Prerequisiti
Sezione intitolata “Prerequisiti”Le seguenti dipendenze globali sono necessarie prima di procedere:
Richiesti
Sezione intitolata “Richiesti”- Git
- Node >= 22 (Consigliamo di utilizzare qualcosa come NVM per gestire le versioni di node)
- verifica eseguendo
node --version
- verifica eseguendo
- UV >= 0.5.29
- installa Python 3.14 eseguendo:
uv python install 3.14 - verifica con
uv python list --only-installed
- installa Python 3.14 eseguendo:
Consigliati
Sezione intitolata “Consigliati”- PNPM >= 11 (puoi anche usare Yarn >= 4, Bun >= 1, o NPM >= 11 se preferisci)
- verifica eseguendo
pnpm --version,yarn --version,bun --versiononpm --version
- verifica eseguendo
- AWS Credentials configurate per il tuo account AWS di destinazione sono necessarie per distribuire la tua applicazione (così come per alcuni flussi di lavoro di sviluppo locale).
- Docker o Finch >= 1.6.0 è richiesto per alcuni generatori. Per Docker, le build multi-piattaforma devono essere configurate; Finch supporta le build multi-piattaforma di default.
- Terraform >= 1.12 è richiesto se scegli di usarlo per l’infrastruttura come codice invece di CDK
- verifica eseguendo
terraform --version
- verifica eseguendo
- Se stai usando VSCode, consigliamo di installare il Nx Console VSCode Plugin.
Passaggio 1: Creare un Workspace
Sezione intitolata “Passaggio 1: Creare un Workspace”Crea un workspace Nx con il package manager di tua scelta e apri la directory che crea:
Crea il tuo workspace@aws/nx-workspace
pnpm create @aws/nx-workspace my-project yarn create @aws/nx-workspace my-project npm create @aws/nx-workspace -- my-project bun create @aws/nx-workspace my-projectComponi il tuo comando3
Obbligatorio
cd my-projectTi viene richiesto di scegliere il tuo provider di infrastructure as code, CDK o Terraform.
Passaggio 2: Costruire la Tua Applicazione
Sezione intitolata “Passaggio 2: Costruire la Tua Applicazione”Costruiremo un’applicazione full-stack: un’API tRPC, un sito web React, l’autenticazione Cognito e l’infrastruttura CDK o Terraform. Chiedi a un assistente AI di strutturarla per te, oppure esegui tu stesso i generatori — entrambi i percorsi portano allo stesso workspace.
Con l’AI
Sezione intitolata “Con l’AI”-
Apri il workspace nel tuo assistente di codifica AI.
I nuovi workspace vengono forniti con il server MCP del plugin già configurato per Kiro, Claude Code, Cursor, Gemini CLI, GitHub Copilot e OpenAI Codex, quindi il tuo assistente può cercare i generatori del plugin ed eseguirli senza alcuna configurazione.
-
Chiedi l’applicazione:
Prompt Create a tRPC API called demo-api, and a React website called demo-website. Add Cognito authentication to the website, connect the website to the API, and add an infrastructure project called infra. Then instantiate the generated infrastructure components so the website and API deploy, granting authenticated users access to the API.
Il tuo assistente scopre i generatori attraverso il server MCP e li esegue, nell’ordine richiesto dalle loro dipendenze. Rivedi le modifiche che apporta, quindi continua al Passaggio 3.
Con la CLI
Sezione intitolata “Con la CLI”Esegui i generatori che strutturano l’applicazione. Usa il pulsante qui sotto per copiarli tutti, oppure esegui ciascuno tu stesso come descritto sotto il diagramma.
A seconda del tipo di progetto che stai costruendo, puoi scegliere qualsiasi combinazione di generatori per avviare rapidamente il tuo progetto. Consulta i Generatori nella barra di navigazione a sinistra per vedere l’elenco completo delle opzioni, oppure prova il graph builder per costruire il tuo workspace visivamente.
Aggiungere un’API tRPC
Sezione intitolata “Aggiungere un’API tRPC”Esegui questo generatore@aws/nx-plugin:ts#api
pnpm nx g @aws/nx-plugin:ts#api --no-interactive yarn nx g @aws/nx-plugin:ts#api --no-interactive npx nx g @aws/nx-plugin:ts#api --no-interactive bunx nx g @aws/nx-plugin:ts#api --no-interactive- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - ts#api - Compila i parametri richiesti
- Clicca su
Generate
Opzioni di questo passaggio2
Obbligatorio
Questo creerà l’API all’interno della cartella packages/demo-api.
Aggiungere un Sito Web React
Sezione intitolata “Aggiungere un Sito Web React”Esegui questo generatore@aws/nx-plugin:ts#website
pnpm nx g @aws/nx-plugin:ts#website --no-interactive yarn nx g @aws/nx-plugin:ts#website --no-interactive npx nx g @aws/nx-plugin:ts#website --no-interactive bunx nx g @aws/nx-plugin:ts#website --no-interactive- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - ts#website - Compila i parametri richiesti
- Clicca su
Generate
Opzioni di questo passaggio1
Obbligatorio
Questo crea un nuovo sito web React in packages/demo-website.
Aggiungere l’Autenticazione Cognito
Sezione intitolata “Aggiungere l’Autenticazione Cognito”Esegui questo generatore@aws/nx-plugin:ts#website#auth
pnpm nx g @aws/nx-plugin:ts#website#auth --no-interactive yarn nx g @aws/nx-plugin:ts#website#auth --no-interactive npx nx g @aws/nx-plugin:ts#website#auth --no-interactive bunx nx g @aws/nx-plugin:ts#website#auth --no-interactive- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - ts#website#auth - Compila i parametri richiesti
- Clicca su
Generate
Opzioni di questo passaggio1
Obbligatorio
Questo configura l’infrastruttura necessaria e il codice React per aggiungere l’autenticazione Cognito al tuo sito web.
Connettere Frontend e Backend
Sezione intitolata “Connettere Frontend e Backend”Esegui questo generatore@aws/nx-plugin:connection
pnpm nx g @aws/nx-plugin:connection --no-interactive yarn nx g @aws/nx-plugin:connection --no-interactive npx nx g @aws/nx-plugin:connection --no-interactive bunx nx g @aws/nx-plugin:connection --no-interactive- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - connection - Compila i parametri richiesti
- Clicca su
Generate
Opzioni di questo passaggio2
Obbligatorio
Obbligatorio
Questo configura i provider necessari per garantire che il tuo sito web possa chiamare la tua API tRPC.
Aggiungere l’Infrastruttura
Sezione intitolata “Aggiungere l’Infrastruttura”Aggiungi il progetto di infrastruttura in base al tuo provider IAC scelto.
Esegui questo generatore@aws/nx-plugin:ts#infra
pnpm nx g @aws/nx-plugin:ts#infra --no-interactive yarn nx g @aws/nx-plugin:ts#infra --no-interactive npx nx g @aws/nx-plugin:ts#infra --no-interactive bunx nx g @aws/nx-plugin:ts#infra --no-interactive- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - ts#infra - Compila i parametri richiesti
- Clicca su
Generate
Opzioni di questo passaggio1
Obbligatorio
Questo configura un’app CDK che puoi utilizzare per distribuire la tua infrastruttura su AWS.
Esegui questo generatore@aws/nx-plugin:terraform#project
pnpm nx g @aws/nx-plugin:terraform#project --no-interactive yarn nx g @aws/nx-plugin:terraform#project --no-interactive npx nx g @aws/nx-plugin:terraform#project --no-interactive bunx nx g @aws/nx-plugin:terraform#project --no-interactive- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - terraform#project - Compila i parametri richiesti
- Clicca su
Generate
Opzioni di questo passaggio1
Obbligatorio
Questo configura un progetto Terraform che puoi utilizzare per distribuire la tua infrastruttura su AWS.
Passaggio 3: Eseguire il Sito Web e l’API Localmente
Sezione intitolata “Passaggio 3: Eseguire il Sito Web e l’API Localmente”Utilizza il seguente comando per avviare i server di sviluppo locali per il tuo sito web e le sue API connesse:
pnpm devyarn devnpm run devbun devIl tuo sito web sarà disponibile all’indirizzo http://localhost:4200.
Le modifiche sia al tuo sito web che all’API si rifletteranno in tempo reale poiché sia il sito web locale che i server API si ricaricheranno automaticamente.
Chiamare l'API dal tuo sito web
Connettere il sito web all’API ha aggiunto un hook useDemoApi, che restituisce un tRPC options proxy: ogni procedura sulla tua API offre queryOptions e mutationOptions da passare a TanStack Query.
Aggiorna packages/demo-website/src/routes/index.tsx per chiamare la procedura echo dell’API, mostrando uno spinner mentre la richiesta è in corso:
import { useQuery } from '@tanstack/react-query';import { createFileRoute } from '@tanstack/react-router';import { Spinner } from '../components/spinner';import { useDemoApi } from '../hooks/useDemoApi';
export const Route = createFileRoute('/')({ component: RouteComponent,});
function RouteComponent() { const trpc = useDemoApi(); const echo = useQuery( trpc.echo.queryOptions({ message: 'Hello from the API!' }), );
return ( <div className="text-center"> <header> <h1>Welcome</h1> <p>Welcome to your new React website!</p> </header> {echo.isLoading ? ( <Spinner /> ) : echo.error ? ( <p>Error: {echo.error.message}</p> ) : ( <p>{echo.data?.message}</p> )} </div> );}Salva il file e la pagina si ricarica con il messaggio che la tua API ha restituito. La chiamata è type-safe end-to-end — rinomina message in packages/demo-api/src/schema/echo.ts e il tuo sito web smette di compilare finché non segui la modifica.
Consulta la guida alla connessione React a tRPC per mutazioni, sottoscrizioni, gestione degli errori e aggiornamenti ottimistici.
Passaggio 4: Definire le Risorse Cloud e Distribuire su AWS
Sezione intitolata “Passaggio 4: Definire le Risorse Cloud e Distribuire su AWS”Apri packages/infra/src/stacks/application-stack.ts e aggiungi il seguente codice:
import { DemoApi, DemoWebsite, UserIdentity,} from '@my-project/common-constructs';import { Stack, StackProps } from 'aws-cdk-lib';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'); }}Questo è tutto il CDK che dobbiamo scrivere per distribuire la nostra applicazione full-stack.
Apri packages/infra/src/main.tf e aggiungi il seguente codice:
# 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]}
# Print the website URL and user pool id when the deployment finishesoutput "website_url" { value = module.demo_website.website_url}
output "user_pool_id" { value = module.user_identity.user_pool_id}Questo è tutto il Terraform che dobbiamo scrivere per distribuire la nostra applicazione full-stack.
Costruire e Distribuire l’Infrastruttura
Sezione intitolata “Costruire e Distribuire l’Infrastruttura”Successivamente, esegui il seguente comando per costruire il tuo progetto:
pnpm buildyarn buildnpm run buildbun buildEsegui il bootstrap della tua infrastruttura:
pnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infrapnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infraDistribuisci il tuo progetto:
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 infraPassaggio 5: Testare il Sito Web con le Risorse Cloud Distribuite
Sezione intitolata “Passaggio 5: Testare il Sito Web con le Risorse Cloud Distribuite”-
Recupera il file
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 -
Avvia il server del sito web locale
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
Il tuo sito web sarà disponibile all’indirizzo http://localhost:4200 e punterà alle risorse che hai distribuito per l’API e l’autenticazione.
Per accedere, dovrai creare un utente nel pool di utenti Cognito.
Creare un utente con AWS CLI
Il seguente comando crea un utente in un pool di utenti. Puoi trovare l’ID del pool di utenti negli output della distribuzione o nella console Amazon Cognito. Sostituisci i valori per username, email, nome e cognome e la password temporanea.
aws cognito-idp admin-create-user \ --user-pool-id <user pool id> \ --username <username> \ --user-attributes Name=email,Value=<email> Name=email_verified,Value=true Name=given_name,Value=<first name> Name=family_name,Value=<last name> \ --temporary-password '<temporary password>' \ --message-action SUPPRESSLa prima volta che accedi come questo utente ti verrà richiesto di scegliere una nuova password, quindi di configurare l’autenticazione a più fattori con un codice inviato tramite SMS o una password monouso basata sul tempo da un’app di autenticazione.
Il tuo sito web è anche servito da CloudFront. Apri il nome di dominio della sua distribuzione (che viene stampato sul tuo terminale dopo la distribuzione) per utilizzare la versione in esecuzione interamente su AWS.
Congratulazioni! 🎉 Hai costruito e distribuito con successo un’applicazione full-stack utilizzando @aws/nx-plugin!
Passaggio 6: Pulizia
Sezione intitolata “Passaggio 6: Pulizia”Quando hai finito, elimina le risorse che hai distribuito per evitare costi continui:
pnpm nx destroy-sandbox infrayarn nx destroy-sandbox infranpx nx destroy-sandbox infrabunx nx destroy-sandbox infrapnpm nx destroy infrayarn nx destroy infranpx nx destroy infrabunx nx destroy infraPer rimuovere le risorse di bootstrap, segui le istruzioni qui sotto:
Elimina lo stack di bootstrap in ogni regione di cui hai eseguito il bootstrap, inclusa us-east-1. Questo rimuove i ruoli di bootstrap e il repository delle immagini container:
aws cloudformation delete-stack --stack-name CDKToolkit --region <region>pnpm nx bootstrap-destroy infrayarn nx bootstrap-destroy infranpx nx bootstrap-destroy infrabunx nx bootstrap-destroy infraProssimi Passi
Sezione intitolata “Prossimi Passi”- Dungeon Adventure Tutorial — costruisci un gioco di avventura dungeon AI full-stack, per una guida più approfondita di questa.
- Workspaces — come è strutturato il tuo workspace e la configurazione che i generatori condividono.
- Aggiungere a un Progetto Esistente — adotta il plugin nella tua codebase esistente.