Guia de Início Rápido
Este guia orienta você pelos conceitos básicos de instalação e uso do @aws/nx-plugin para construir projetos rapidamente na AWS.
Pré-requisitos
Seção intitulada “Pré-requisitos”As seguintes dependências globais são necessárias antes de prosseguir:
Obrigatório
Seção intitulada “Obrigatório”- Git
- Node >= 22 (Recomendamos usar algo como NVM para gerenciar suas versões do node)
- verifique executando
node --version
- verifique executando
- UV >= 0.5.29
- instale o Python 3.14 executando:
uv python install 3.14 - verifique com
uv python list --only-installed
- instale o Python 3.14 executando:
Recomendado
Seção intitulada “Recomendado”- PNPM >= 11 (você também pode usar Yarn >= 4, Bun >= 1, ou NPM >= 11 se preferir)
- verifique executando
pnpm --version,yarn --version,bun --versionounpm --version
- verifique executando
- AWS Credentials configuradas para sua conta AWS de destino são necessárias para implantar sua aplicação (assim como para alguns fluxos de trabalho de desenvolvimento local).
- Docker ou Finch >= 1.6.0 é necessário para alguns geradores. Para Docker, multi-platform builds devem estar configurados; Finch suporta multi-platform builds nativamente.
- Terraform >= 1.12 é necessário se você escolher usar isso para infraestrutura como código em vez de CDK
- verifique executando
terraform --version
- verifique executando
- Se você está usando VSCode, recomendamos instalar o Nx Console VSCode Plugin.
Passo 1: Criar um Workspace
Seção intitulada “Passo 1: Criar um Workspace”Crie um workspace Nx com o gerenciador de pacotes de sua escolha e abra o diretório que ele cria:
Crie seu 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-projectMonte seu comando3
Obrigatório
cd my-projectVocê será solicitado a escolher seu provedor de infraestrutura como código, seja CDK ou Terraform.
Passo 2: Construir Sua Aplicação
Seção intitulada “Passo 2: Construir Sua Aplicação”Vamos construir uma aplicação full-stack: uma API tRPC, um website React, autenticação Cognito e infraestrutura CDK ou Terraform. Peça a um assistente de IA para estruturá-la para você, ou execute os geradores você mesmo — ambas as rotas chegam ao mesmo workspace.
-
Abra o workspace em seu assistente de codificação de IA.
Novos workspaces vêm com o servidor MCP do plugin já configurado para Kiro, Claude Code, Cursor, Gemini CLI, GitHub Copilot e OpenAI Codex, então seu assistente pode consultar os geradores do plugin e executá-los sem nenhuma configuração.
-
Peça pela aplicação:
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.
Seu assistente descobre os geradores através do servidor MCP e os executa, na ordem que suas dependências precisam. Revise as alterações que ele faz e então continue no Passo 3.
Com a CLI
Seção intitulada “Com a CLI”Execute os geradores que estruturam a aplicação. Use o botão abaixo para copiá-los todos, ou execute cada um você mesmo conforme descrito abaixo do diagrama.
Dependendo do tipo de projeto que você está construindo, você pode escolher qualquer combinação de geradores para inicializar rapidamente seu projeto. Confira os Geradores na barra de navegação à esquerda para ver a lista completa de opções, ou experimente o construtor de grafos para construir seu workspace visualmente.
Adicionar uma API tRPC
Seção intitulada “Adicionar uma API tRPC”Execute este gerador@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 o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - ts#api - Preencha os parâmetros obrigatórios
- Clique em
Generate
Opções desta etapa2
Obrigatório
Isso criará a API dentro da pasta packages/demo-api.
Adicionar um Website React
Seção intitulada “Adicionar um Website React”Execute este gerador@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 o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - ts#website - Preencha os parâmetros obrigatórios
- Clique em
Generate
Opções desta etapa1
Obrigatório
Isso estrutura um novo website React em packages/demo-website.
Adicionar Autenticação Cognito
Seção intitulada “Adicionar Autenticação Cognito”Execute este gerador@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 o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - ts#website#auth - Preencha os parâmetros obrigatórios
- Clique em
Generate
Opções desta etapa1
Obrigatório
Isso configura a infraestrutura necessária e o código React para adicionar Autenticação Cognito ao seu website.
Conectar Frontend ao Backend
Seção intitulada “Conectar Frontend ao Backend”Execute este gerador@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 o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - connection - Preencha os parâmetros obrigatórios
- Clique em
Generate
Opções desta etapa2
Obrigatório
Obrigatório
Isso configura os provedores necessários para garantir que seu website possa chamar sua API tRPC.
Adicionar Infraestrutura
Seção intitulada “Adicionar Infraestrutura”Adicione o projeto de infraestrutura com base no seu provedor IAC escolhido.
Execute este gerador@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 o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - ts#infra - Preencha os parâmetros obrigatórios
- Clique em
Generate
Opções desta etapa1
Obrigatório
Isso configura uma CDK App que você pode usar para implantar sua infraestrutura na AWS.
Execute este gerador@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 o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - terraform#project - Preencha os parâmetros obrigatórios
- Clique em
Generate
Opções desta etapa1
Obrigatório
Isso configura um projeto Terraform que você pode usar para implantar sua infraestrutura na AWS.
Passo 3: Executar seu Website e API Localmente
Seção intitulada “Passo 3: Executar seu Website e API Localmente”Use o seguinte comando para iniciar servidores de desenvolvimento locais para seu website e suas APIs conectadas:
pnpm devyarn devnpm run devbun devSeu website estará disponível em http://localhost:4200.
As alterações em seu website e API serão refletidas em tempo real, pois tanto o website local quanto os servidores de API farão hot-reload.
Chamando sua API do seu website
Conectar o website à API adicionou um hook useDemoApi, que retorna um proxy de opções tRPC: cada procedimento em sua API oferece queryOptions e mutationOptions para passar ao TanStack Query.
Atualize packages/demo-website/src/routes/index.tsx para chamar o procedimento echo da API, mostrando um spinner enquanto a requisição está em andamento:
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> );}Salve o arquivo e a página recarrega com a mensagem que sua API ecoou de volta. A chamada é type-safe de ponta a ponta — renomeie message em packages/demo-api/src/schema/echo.ts e seu website para de compilar até que você siga a mudança.
Veja o guia de conexão React para tRPC para mutações, assinaturas, tratamento de erros e atualizações otimistas.
Passo 4: Definir Recursos na Nuvem e Implantar na AWS
Seção intitulada “Passo 4: Definir Recursos na Nuvem e Implantar na AWS”Abra packages/infra/src/stacks/application-stack.ts e adicione o seguinte 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'); }}Isso é todo o CDK que precisamos escrever para implantar nossa aplicação full stack.
Abra packages/infra/src/main.tf e adicione o seguinte 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}Isso é todo o Terraform que precisamos escrever para implantar nossa aplicação full stack.
Construir e Implantar a Infraestrutura
Seção intitulada “Construir e Implantar a Infraestrutura”Em seguida, execute o seguinte comando para construir seu projeto:
pnpm buildyarn buildnpm run buildbun buildFaça o bootstrap da sua infraestrutura:
pnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infrapnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infraImplante seu projeto:
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 infraPasso 5: Testar o Website com Recursos na Nuvem Implantados
Seção intitulada “Passo 5: Testar o Website com Recursos na Nuvem Implantados”-
Busque o arquivo
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 -
Inicie o servidor de website 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
Seu website estará disponível em http://localhost:4200 e apontará para os recursos que você implantou para a API e autenticação.
Para fazer login, você precisará criar um usuário no user pool do Cognito.
Criando um usuário com a AWS CLI
O seguinte comando cria um usuário em um user pool. Você pode encontrar o id do user pool nas saídas de sua implantação, ou no console do Amazon Cognito. Substitua os valores de nome de usuário, e-mail, nome e sobrenome, e a senha temporária.
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 SUPPRESSNa primeira vez que você fizer login como este usuário, será solicitado a escolher uma nova senha e, em seguida, configurar a autenticação multifator com um código enviado por SMS ou uma senha de uso único baseada em tempo de um aplicativo autenticador.
Seu website também é servido pelo CloudFront. Abra o nome de domínio de distribuição (que é impresso no seu terminal após a implantação) para usar a versão executando inteiramente na AWS.
Parabéns! 🎉 Você construiu e implantou com sucesso uma aplicação full-stack usando @aws/nx-plugin!
Passo 6: Limpar
Seção intitulada “Passo 6: Limpar”Quando terminar, exclua os recursos que você implantou para evitar custos contínuos:
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 remover os recursos de bootstrap, siga abaixo:
Exclua a stack de bootstrap em todas as regiões que você fez bootstrap, incluindo us-east-1. Isso remove as funções de bootstrap e o repositório de imagens de contêiner:
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 Passos
Seção intitulada “Próximos Passos”- Dungeon Adventure Tutorial — construa um jogo de aventura de masmorra com IA full-stack, para um passo a passo mais aprofundado do que este guia.
- Workspaces — como seu workspace está organizado e a configuração que os geradores compartilham.
- Add to an Existing Project — adote o plugin em sua base de código existente.