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:
Requisitos
Seção intitulada “Requisitos”- Git
- Node >= 22 (Recomendamos usar algo como NVM para gerenciar versões do Node)
- verifique executando
node --version
- verifique executando
- PNPM >= 10 (também pode usar Yarn >= 4, Bun >= 1 ou NPM >= 10 se preferir)
- verifique executando
pnpm --version
,yarn --version
,bun --version
ounpm --version
- verifique executando
- UV >= 0.5.29
- instale Python 3.12 executando:
uv python install 3.12.0
- verifique com
uv python list --only-installed
- instale Python 3.12 executando:
- Credenciais da AWS 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 estiver 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 preferência:
npx create-nx-workspace@21.4.1 my-project --pm=pnpm --preset=@aws/nx-plugin --ci=skip
npx create-nx-workspace@21.4.1 my-project --pm=yarn --preset=@aws/nx-plugin --ci=skip
npx create-nx-workspace@21.4.1 my-project --pm=npm --preset=@aws/nx-plugin --ci=skip
npx create-nx-workspace@21.4.1 my-project --pm=bun --preset=@aws/nx-plugin --ci=skip
Após a conclusão, navegue até o diretório do projeto:
cd my-project
Passo 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/Terraform. Dependendo do tipo de projeto, 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=IAM
yarn nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM
npx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM
bunx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM
Você 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-run
yarn nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-run
npx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-run
bunx nx g @aws/nx-plugin:ts#trpc-api --name=demo-api --auth=IAM --dry-run
Isso 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-website
yarn nx g @aws/nx-plugin:ts#react-website --name=demo-website
npx nx g @aws/nx-plugin:ts#react-website --name=demo-website
bunx nx g @aws/nx-plugin:ts#react-website --name=demo-website
Você 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-run
yarn nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-run
npx nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-run
bunx nx g @aws/nx-plugin:ts#react-website --name=demo-website --dry-run
Isso 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-demo
yarn nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo
npx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo
bunx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo
Você 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-run
yarn nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-run
npx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-run
bunx nx g @aws/nx-plugin:ts#react-website#auth --project=@my-project/demo-website --cognitoDomain=my-demo --dry-run
Isso 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 - api-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:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api
yarn nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api
npx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api
bunx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api
Você também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-run
yarn nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-run
npx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-run
bunx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-run
Isso 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=infra
yarn nx g @aws/nx-plugin:ts#infra --name=infra
npx nx g @aws/nx-plugin:ts#infra --name=infra
bunx nx g @aws/nx-plugin:ts#infra --name=infra
Você 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-run
yarn nx g @aws/nx-plugin:ts#infra --name=infra --dry-run
npx nx g @aws/nx-plugin:ts#infra --name=infra --dry-run
bunx nx g @aws/nx-plugin:ts#infra --name=infra --dry-run
Isso 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=infra
yarn nx g @aws/nx-plugin:terraform#project --name=infra
npx nx g @aws/nx-plugin:terraform#project --name=infra
bunx nx g @aws/nx-plugin:terraform#project --name=infra
Você 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-run
yarn nx g @aws/nx-plugin:terraform#project --name=infra --dry-run
npx nx g @aws/nx-plugin:terraform#project --name=infra --dry-run
bunx nx g @aws/nx-plugin:terraform#project --name=infra --dry-run
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 locais de desenvolvimento para seu website e APIs conectadas:
pnpm nx run demo-website:serve-local
yarn nx run demo-website:serve-local
npx nx run demo-website:serve-local
bunx nx run demo-website:serve-local
Seu 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 nx run-many --target build --all
yarn nx run-many --target build --all
npx nx run-many --target build --all
bunx nx run-many --target build --all
Inicialize sua infraestrutura:
pnpm nx run infra:bootstrap
yarn nx run infra:bootstrap
npx nx run infra:bootstrap
bunx nx run infra:bootstrap
pnpm nx run infra:bootstrap
yarn nx run infra:bootstrap
npx nx run infra:bootstrap
bunx nx run infra:bootstrap
Implante 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:apply
yarn nx run infra:apply
npx nx run infra:apply
bunx nx run infra:apply
Passo 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ê implantou com sucesso uma aplicação full-stack usando @aws/nx-plugin
!