Guía de Inicio Rápido
Esta guía te lleva a través de los conceptos básicos de instalación y uso de @aws/nx-plugin para construir proyectos rápidamente en AWS.
Requisitos Previos
Sección titulada «Requisitos Previos»Las siguientes dependencias globales son necesarias antes de continuar:
Requeridos
Sección titulada «Requeridos»- Git
- Node >= 22 (Recomendamos usar algo como NVM para gestionar tus versiones de node)
- verifica ejecutando
node --version
- verifica ejecutando
- UV >= 0.5.29
- instala Python 3.14 ejecutando:
uv python install 3.14.0 - verifica con
uv python list --only-installed
- instala Python 3.14 ejecutando:
Recomendados
Sección titulada «Recomendados»- PNPM >= 11 (también puedes usar Yarn >= 4, Bun >= 1, o NPM >= 10 si lo prefieres)
- verifica ejecutando
pnpm --version,yarn --version,bun --versiononpm --version
- verifica ejecutando
- AWS Credentials configuradas para tu cuenta de AWS de destino son necesarias para desplegar tu aplicación (así como para algunos flujos de trabajo de desarrollo local).
- Docker o Finch >= 1.6.0 es necesario para algunos generadores. Para Docker, las compilaciones multiplataforma deben estar configuradas; Finch soporta compilaciones multiplataforma de forma predeterminada.
- Terraform >= 1.12 es necesario si eliges usar esto para infraestructura como código en lugar de CDK
- verifica ejecutando
terraform --version
- verifica ejecutando
- Si estás usando VSCode, recomendamos instalar el Nx Console VSCode Plugin.
Paso 1: Inicializar un Nuevo Espacio de Trabajo Nx
Sección titulada «Paso 1: Inicializar un Nuevo Espacio de Trabajo Nx»Ejecuta el siguiente comando para crear un espacio de trabajo Nx con el gestor de paquetes de tu elección:
pnpm create @aws/nx-workspace my-projectyarn create @aws/nx-workspace my-projectnpm create @aws/nx-workspace -- my-projectbun create @aws/nx-workspace my-projectUna vez completado, navega al directorio del proyecto:
cd my-projectPaso 2: Usar Generadores para Estructurar tu Proyecto
Sección titulada «Paso 2: Usar Generadores para Estructurar tu Proyecto»Agregaremos una API tRPC, un Sitio Web React, Autenticación Cognito e Infraestructura CDK o Terraform en esta guía de inicio rápido. Dependiendo del tipo de proyecto que estés construyendo, puedes elegir cualquier combinación de generadores para inicializar rápidamente tu proyecto. Consulta los Generadores en la barra de navegación a la izquierda para ver la lista completa de opciones, o prueba el constructor de grafos para construir tu espacio de trabajo visualmente.
Como atajo, puedes usar el botón a continuación para copiar los comandos para estructurar la aplicación completa.
De lo contrario, sigue los pasos a continuación para ejecutar cada generador tú mismo.
Agregar una API tRPC
Sección titulada «Agregar una 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-interactiveTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - ts#api - Complete los parámetros requeridos
- name: demo-api
- framework: trpc
- auth: iam
- Haga clic en
Generate
Esto creará la API dentro de la carpeta packages/demo-api.
Agregar un Sitio Web React
Sección titulada «Agregar un Sitio 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-interactiveTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - ts#website - Complete los parámetros requeridos
- name: demo-website
- Haga clic en
Generate
Esto estructura un nuevo sitio web React en packages/demo-website.
Agregar Autenticación Cognito
Sección titulada «Agregar Autenticación 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-interactiveTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - ts#website#auth - Complete los parámetros requeridos
- project: @my-project/demo-website
- cognitoDomain: my-demo
- Haga clic en
Generate
Esto configura la infraestructura necesaria y el código React para agregar Autenticación Cognito a tu sitio web.
Conectar Frontend con Backend
Sección titulada «Conectar Frontend con 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-interactiveTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - connection - Complete los parámetros requeridos
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- Haga clic en
Generate
Esto configura los proveedores necesarios para asegurar que tu sitio web pueda llamar a tu API tRPC.
Agregar Infraestructura
Sección titulada «Agregar Infraestructura»Agrega el proyecto de infraestructura basado en tu proveedor IAC elegido.
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-interactiveTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - ts#infra - Complete los parámetros requeridos
- name: infra
- Haga clic en
Generate
Esto configura una Aplicación CDK que puedes usar para desplegar tu infraestructura en 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-interactiveTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - terraform#project - Complete los parámetros requeridos
- name: infra
- Haga clic en
Generate
Esto configura un proyecto Terraform que puedes usar para desplegar tu infraestructura en AWS.
Paso 3: Ejecutar tu Sitio Web y API Localmente
Sección titulada «Paso 3: Ejecutar tu Sitio Web y API Localmente»Usa el siguiente comando para iniciar servidores de desarrollo locales para tu sitio web y sus APIs conectadas:
pnpm devyarn devnpm run devbun devTu sitio web estará disponible en http://localhost:4200.
Los cambios tanto en tu sitio web como en la API se reflejarán en tiempo real ya que tanto el sitio web local como los servidores de API se recargarán automáticamente.
Paso 4: Definir Recursos en la Nube y Desplegar en AWS
Sección titulada «Paso 4: Definir Recursos en la Nube y Desplegar en AWS»Abre packages/infra/src/stacks/application-stack.ts y agrega el siguiente código:
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'); }}Esto es todo el CDK que necesitamos escribir para desplegar nuestra aplicación full stack.
Abre packages/infra/src/main.tf y agrega el siguiente código:
# 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]}Esto es todo el Terraform que necesitamos escribir para desplegar nuestra aplicación full stack.
Construir y Desplegar la Infraestructura
Sección titulada «Construir y Desplegar la Infraestructura»A continuación, ejecuta el siguiente comando para construir tu proyecto:
pnpm buildyarn buildnpm run buildbun buildInicializa tu infraestructura:
pnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infrapnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infraDespliega tu proyecto:
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 infraPaso 5: Probar el Sitio Web con Recursos en la Nube Desplegados
Sección titulada «Paso 5: Probar el Sitio Web con Recursos en la Nube Desplegados»-
Obtén el archivo
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 -
Inicia el servidor del sitio 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
Tu sitio web estará disponible en http://localhost:4200, y apuntará a los recursos que desplegaste para la API y la autenticación.
¡Felicitaciones! 🎉 ¡Has construido y desplegado exitosamente una aplicación full-stack usando @aws/nx-plugin!