Guia de Início Rápido
Este guia orienta você através dos fundamentos 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:
Requeridos
Seção intitulada “Requeridos”- Git
- Node >= 22 (Recomendamos usar algo como NVM para gerenciar suas versões do Node)
- verifique executando
node --version
- verifique executando
- PNPM >= 10 (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
- UV >= 0.5.29
- instale o Python 3.12 executando:
uv python install 3.12.0 - verifique com
uv python list --only-installed
- instale o Python 3.12 executando:
- AWS Credentials configuradas para sua conta AWS de destino (onde sua aplicação será implantada)
Recomendados
Seção intitulada “Recomendados”- Docker é necessário para alguns geradores.
- Terraform >= 1.12 é necessário se você optar por usar isso para infraestrutura como código em vez do CDK
- verifique executando
terraform --version
- verifique executando
- Se você usa 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 preferência:
npx create-nx-workspace@22.5.1 my-project --pm=pnpm --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@22.5.1 my-project --pm=yarn --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@22.5.1 my-project --pm=npm --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@22.5.1 my-project --pm=bun --preset=@aws/nx-plugin --ci=skip --aiAgentsApós a conclusão, 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”Neste guia rápido, adicionaremos uma API tRPC, Website React, Autenticação Cognito e Infraestrutura CDK ou Terraform. Dependendo do tipo de projeto que você está construindo, você pode escolher qualquer combinação de geradores para inicializar rapidamente seu projeto. Confira os Guias na barra de navegação à esquerda para ver a lista completa de opções.
Adicionar uma API tRPC
Seção intitulada “Adicionar uma API tRPC”- 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#trpc-api - Preencha os parâmetros obrigatórios
- name: demo-api
- auth: IAM
- Clique em
Generate
pnpm nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMyarn nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMnpx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMbunx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAMVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runyarn nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runnpx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runbunx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-runIsso criará a API na pasta packages/demo-api.
Adicionar um Website React
Seção intitulada “Adicionar um Website React”- 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#react-website - Preencha os parâmetros obrigatórios
- name: demo-website
- Clique em
Generate
pnpm nx g @aws/nx-plugin:ts#react-website --name=demo-websiteyarn nx g @aws/nx-plugin:ts#react-website --name=demo-websitenpx nx g @aws/nx-plugin:ts#react-website --name=demo-websitebunx nx g @aws/nx-plugin:ts#react-website --name=demo-websiteVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runyarn nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runnpx nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runbunx nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-runIsso estruturará um novo website React em packages/demo-website.
Adicionar Autenticação Cognito
Seção intitulada “Adicionar Autenticação Cognito”- 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#react-website#auth - Preencha os parâmetros obrigatórios
- project: @my-project/demo-website
- cognitoDomain: my-demo
- Clique em
Generate
pnpm nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demoyarn nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demonpx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demobunx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demoVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runyarn nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runnpx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runbunx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-runIsso configurará 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”- 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
pnpm nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apiyarn nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apinpx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apibunx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apiVocê 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 --dry-runyarn nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runnpx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runbunx nx g @aws/nx-plugin:connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runIsso configurará 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 baseado no seu provedor IaC escolhido.
- 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
pnpm nx g @aws/nx-plugin:ts#infra --name=infrayarn nx g @aws/nx-plugin:ts#infra --name=infranpx nx g @aws/nx-plugin:ts#infra --name=infrabunx nx g @aws/nx-plugin:ts#infra --name=infraVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:ts#infra --name=infra --dry-runyarn nx g @aws/nx-plugin:ts#infra --name=infra --dry-runnpx nx g @aws/nx-plugin:ts#infra --name=infra --dry-runbunx nx g @aws/nx-plugin:ts#infra --name=infra --dry-runIsso configura uma Aplicação CDK que você pode usar para implantar sua infraestrutura na AWS.
- 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
pnpm nx g @aws/nx-plugin:terraform#project --name=infrayarn nx g @aws/nx-plugin:terraform#project --name=infranpx nx g @aws/nx-plugin:terraform#project --name=infrabunx nx g @aws/nx-plugin:terraform#project --name=infraVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:terraform#project --name=infra --dry-runyarn nx g @aws/nx-plugin:terraform#project --name=infra --dry-runnpx nx g @aws/nx-plugin:terraform#project --name=infra --dry-runbunx nx g @aws/nx-plugin:terraform#project --name=infra --dry-runIsso 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 locais de desenvolvimento para seu website e APIs conectadas:
pnpm nx run demo-website:serve-localyarn nx run demo-website:serve-localnpx nx run demo-website:serve-localbunx nx run demo-website:serve-localSeu website estará disponível em http://localhost:4200.
Alterações no website e na API serão refletidas em tempo real, pois ambos os servidores locais recarregarão automaticamente.
Passo 4: Definir Recursos Cloud e Implantar na AWS
Seção intitulada “Passo 4: Definir Recursos Cloud e Implantar na AWS”Abra packages/infra/src/stacks/application-stack.ts e adicione o seguinte código:
import * as cdk from 'aws-cdk-lib';import { DemoApi, DemoWebsite, UserIdentity } from ':my-project/common-constructs';import { Construct } from 'constructs';
export class ApplicationStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.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'); }}Este é todo o código CDK necessário para implantar nossa aplicação full-stack.
Abra packages/infra/src/main.tf e adicione o seguinte código:
# Inclui rastreamento de métricas para uso do @aws/nx-pluginmodule "metrics" { source = "../../common/terraform/src/metrics"}
# Implanta identidade do usuáriomodule "user_identity" { source = "../../common/terraform/src/core/user-identity"}
# Implanta APImodule "demo_api" { source = "../../common/terraform/src/app/apis/demo-api"}
# Concede acesso a usuários autenticados para invocar a APIresource "aws_iam_policy" "api_invoke_policy" { name = "DemoApiInvokePolicy" description = "Política para permitir que usuários autenticados invoquem a 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}
# Implanta 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]}Este é todo o código Terraform necessário 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 buildInicialize sua infraestrutura:
pnpm nx run infra:bootstrapyarn nx run infra:bootstrapnpx nx run infra:bootstrapbunx nx run infra:bootstrappnpm nx run infra:bootstrapyarn nx run infra:bootstrapnpx nx run infra:bootstrapbunx nx run infra:bootstrapImplante seu projeto:
pnpm nx run infra:deploy "my-project-sandbox/*"yarn nx run infra:deploy "my-project-sandbox/*"npx nx run infra:deploy "my-project-sandbox/*"bunx nx run infra:deploy "my-project-sandbox/*"pnpm nx run infra:applyyarn nx run infra:applynpx nx run infra:applybunx nx run infra:applyPasso 5: Testar o Website com Recursos Cloud Implantados
Seção intitulada “Passo 5: Testar o Website com Recursos Cloud Implantados”-
Obtenha o arquivo
runtime-config.json:Terminal window pnpm nx run demo-website:load:runtime-configTerminal window yarn nx run demo-website:load:runtime-configTerminal window npx nx run demo-website:load:runtime-configTerminal window bunx nx run demo-website:load:runtime-config -
Inicie o servidor local do website
Terminal window pnpm nx run demo-website:serveTerminal window yarn nx run demo-website:serveTerminal window npx nx run demo-website:serveTerminal window bunx nx run demo-website:serve
Seu website estará disponível em http://localhost:4200 e apontará para os recursos implantados da API e autenticação.
Parabéns! 🎉 Você construiu e implantou com sucesso uma aplicação full-stack usando @aws/nx-plugin!