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.0 - 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 >= 10 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: Inicializar um Novo Workspace Nx
Seção intitulada “Passo 1: Inicializar um Novo Workspace Nx”Execute o seguinte comando para criar um workspace Nx com o gerenciador de pacotes de sua escolha:
pnpm create @aws/nx-workspace my-projectyarn create @aws/nx-workspace my-projectnpm create @aws/nx-workspace -- my-projectbun create @aws/nx-workspace my-projectQuando concluído, navegue até o diretório do projeto:
cd my-projectPasso 2: Usar Geradores para Estruturar seu Projeto
Seção intitulada “Passo 2: Usar Geradores para Estruturar seu Projeto”Vamos adicionar uma API tRPC, um Website React, Autenticação Cognito e Infraestrutura CDK ou Terraform neste guia de início rápido. 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.
Como atalho, você pode usar o botão abaixo para copiar os comandos para estruturar a aplicação completa.
Caso contrário, siga os passos abaixo para executar cada gerador você mesmo.
Adicionar uma API tRPC
Seção intitulada “Adicionar uma 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-interactiveVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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 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
- name: demo-api
- framework: trpc
- auth: iam
- Clique em
Generate
Isso criará a API dentro da pasta packages/demo-api.
Adicionar um Website React
Seção intitulada “Adicionar um Website 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-interactiveVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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 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
- name: demo-website
- Clique em
Generate
Isso estrutura um novo website React em packages/demo-website.
Adicionar Autenticação Cognito
Seção intitulada “Adicionar Autenticação 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-interactiveVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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 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
- project: @my-project/demo-website
- cognitoDomain: my-demo
- Clique em
Generate
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”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-interactiveVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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 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
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- Clique em
Generate
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.
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-interactiveVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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 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
- name: infra
- Clique em
Generate
Isso configura uma CDK App que você pode usar para implantar sua infraestrutura na 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-interactiveVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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 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
- name: infra
- Clique em
Generate
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.
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 { 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'); }}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:
# 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]}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.
Parabéns! 🎉 Você construiu e implantou com sucesso uma aplicação full-stack usando @aws/nx-plugin!