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 - 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 >= 11 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: Crear un Espacio de Trabajo
Sección titulada «Paso 1: Crear un Espacio de Trabajo»Crea un espacio de trabajo Nx con el gestor de paquetes de tu elección, y abre el directorio que crea:
Cree su espacio de trabajo@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-projectConstruya su comando3
Requerido
cd my-projectSe te solicita elegir tu proveedor de infraestructura como código, ya sea CDK o Terraform.
Paso 2: Construir tu Aplicación
Sección titulada «Paso 2: Construir tu Aplicación»Construiremos una aplicación full-stack: una API tRPC, un sitio web React, autenticación Cognito e infraestructura CDK o Terraform. Pídele a un asistente de IA que la estructure por ti, o ejecuta los generadores tú mismo — ambas rutas llegan al mismo espacio de trabajo.
-
Abre el espacio de trabajo en tu asistente de codificación de IA.
Los nuevos espacios de trabajo vienen con el servidor MCP del plugin ya configurado para Kiro, Claude Code, Cursor, Gemini CLI, GitHub Copilot y OpenAI Codex, por lo que tu asistente puede buscar los generadores del plugin y ejecutarlos sin ninguna configuración.
-
Solicita la aplicación:
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.
Tu asistente descubre los generadores a través del servidor MCP y los ejecuta, en el orden que sus dependencias necesitan. Revisa los cambios que realiza, luego continúa en el Paso 3.
Con el CLI
Sección titulada «Con el CLI»Ejecuta los generadores que estructuran la aplicación. Usa el botón a continuación para copiarlos todos, o ejecuta cada uno tú mismo como se describe debajo del diagrama.
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.
Agregar una API tRPC
Sección titulada «Agregar una API tRPC»Ejecute este generador@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- 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
- Haga clic en
Generate
Opciones de este paso2
Requerido
Esto creará la API dentro de la carpeta packages/demo-api.
Agregar un Sitio Web React
Sección titulada «Agregar un Sitio Web React»Ejecute este generador@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- 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
- Haga clic en
Generate
Opciones de este paso1
Requerido
Esto estructura un nuevo sitio web React en packages/demo-website.
Agregar Autenticación Cognito
Sección titulada «Agregar Autenticación Cognito»Ejecute este generador@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- 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
- Haga clic en
Generate
Opciones de este paso1
Requerido
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»Ejecute este generador@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- 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
- Haga clic en
Generate
Opciones de este paso2
Requerido
Requerido
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.
Ejecute este generador@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- 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
- Haga clic en
Generate
Opciones de este paso1
Requerido
Esto configura una Aplicación CDK que puedes usar para desplegar tu infraestructura en AWS.
Ejecute este generador@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- 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
- Haga clic en
Generate
Opciones de este paso1
Requerido
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.
Llamar a tu API desde tu sitio web
Conectar el sitio web a la API agregó un hook useDemoApi, que devuelve un proxy de opciones tRPC: cada procedimiento en tu API ofrece queryOptions y mutationOptions para pasar a TanStack Query.
Actualiza packages/demo-website/src/routes/index.tsx para llamar al procedimiento echo de la API, mostrando un spinner mientras la solicitud está en curso:
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> );}Guarda el archivo y la página se recarga con el mensaje que tu API devolvió. La llamada es segura de tipos de extremo a extremo — renombra message en packages/demo-api/src/schema/echo.ts y tu sitio web dejará de compilar hasta que sigas el cambio.
Consulta la guía de conexión de React a tRPC para mutaciones, suscripciones, manejo de errores y actualizaciones optimistas.
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 { 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'); }}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:
# 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}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.
Para iniciar sesión, necesitarás crear un usuario en el grupo de usuarios de Cognito.
Crear un usuario con el AWS CLI
El siguiente comando crea un usuario en un grupo de usuarios. Puedes encontrar el id del grupo de usuarios en las salidas de tu despliegue, o en la consola de Amazon Cognito. Sustituye los valores para nombre de usuario, correo electrónico, nombre y apellido, y la contraseña temporal.
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 primera vez que inicies sesión como este usuario, se te pedirá que elijas una nueva contraseña, luego que configures la autenticación multifactor con un código enviado por SMS o una contraseña de un solo uso basada en tiempo desde una aplicación de autenticación.
Tu sitio web también se sirve desde CloudFront. Abre el nombre de dominio de su distribución (que se imprime en tu terminal después del despliegue) para usar la versión que se ejecuta completamente en AWS.
¡Felicitaciones! 🎉 ¡Has construido y desplegado exitosamente una aplicación full-stack usando @aws/nx-plugin!
Paso 6: Limpiar
Sección titulada «Paso 6: Limpiar»Cuando hayas terminado, elimina los recursos que desplegaste para evitar costos continuos:
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 infraPara eliminar los recursos de bootstrap, sigue las instrucciones a continuación:
Elimina el stack de bootstrap en cada región que inicializaste, incluyendo us-east-1. Esto elimina los roles de bootstrap y el repositorio de imágenes de contenedor:
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 infraPróximos Pasos
Sección titulada «Próximos Pasos»- Dungeon Adventure Tutorial — construye un juego de aventura en mazmorras con IA full-stack, para un recorrido más detallado que esta guía.
- Workspaces — cómo está organizado tu espacio de trabajo, y la configuración que comparten los generadores.
- Add to an Existing Project — adopta el plugin en tu base de código existente.