Hướng Dẫn Bắt Đầu Nhanh
Hướng dẫn này sẽ giúp bạn làm quen với các bước cơ bản để cài đặt và sử dụng @aws/nx-plugin nhằm xây dựng các dự án trên AWS một cách nhanh chóng.
Yêu Cầu Trước Khi Bắt Đầu
Phần tiêu đề “Yêu Cầu Trước Khi Bắt Đầu”Các phụ thuộc toàn cục sau đây cần được cài đặt trước khi tiếp tục:
Bắt buộc
Phần tiêu đề “Bắt buộc”- Git
- Node >= 22 (Chúng tôi khuyến nghị sử dụng công cụ như NVM để quản lý các phiên bản node của bạn)
- xác minh bằng cách chạy
node --version
- xác minh bằng cách chạy
- UV >= 0.5.29
- cài đặt Python 3.14 bằng cách chạy:
uv python install 3.14 - xác minh với
uv python list --only-installed
- cài đặt Python 3.14 bằng cách chạy:
Khuyến nghị
Phần tiêu đề “Khuyến nghị”- PNPM >= 11 (bạn cũng có thể sử dụng Yarn >= 4, Bun >= 1, hoặc NPM >= 11 nếu bạn muốn)
- xác minh bằng cách chạy
pnpm --version,yarn --version,bun --versionhoặcnpm --version
- xác minh bằng cách chạy
- AWS Credentials được cấu hình cho tài khoản AWS mục tiêu của bạn là bắt buộc để triển khai ứng dụng của bạn (cũng như cho một số quy trình phát triển cục bộ).
- Docker hoặc Finch >= 1.6.0 là bắt buộc cho một số trình tạo. Đối với Docker, multi-platform builds phải được thiết lập; Finch hỗ trợ multi-platform builds ngay từ đầu.
- Terraform >= 1.12 là bắt buộc nếu bạn chọn sử dụng công cụ này cho infrastructure as code thay vì CDK
- xác minh bằng cách chạy
terraform --version
- xác minh bằng cách chạy
- Nếu bạn đang sử dụng VSCode, chúng tôi khuyến nghị cài đặt Nx Console VSCode Plugin.
Bước 1: Tạo Workspace
Phần tiêu đề “Bước 1: Tạo Workspace”Tạo một Nx workspace với trình quản lý gói mà bạn chọn, và mở thư mục nó tạo ra:
Tạo workspace của bạn@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-projectXây dựng lệnh của bạn3
Bắt buộc
cd my-projectBạn sẽ được nhắc chọn nhà cung cấp infrastructure as code, có thể là CDK hoặc Terraform.
Bước 2: Xây Dựng Ứng Dụng Của Bạn
Phần tiêu đề “Bước 2: Xây Dựng Ứng Dụng Của Bạn”Chúng ta sẽ xây dựng một ứng dụng full-stack: một tRPC API, một React website, Cognito authentication, và CDK hoặc Terraform infrastructure. Yêu cầu trợ lý AI tạo khung cho bạn, hoặc tự chạy các generators — cả hai cách đều đạt được cùng một workspace.
Với AI
Phần tiêu đề “Với AI”-
Mở workspace trong trợ lý AI coding của bạn.
Các workspace mới đi kèm với MCP server của plugin đã được cấu hình sẵn cho Kiro, Claude Code, Cursor, Gemini CLI, GitHub Copilot và OpenAI Codex, vì vậy trợ lý của bạn có thể tra cứu các generators của plugin và chạy chúng mà không cần thiết lập gì.
-
Yêu cầu ứng dụng:
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.
Trợ lý của bạn khám phá các generators thông qua MCP server và chạy chúng, theo thứ tự mà các phụ thuộc của chúng cần. Xem xét các thay đổi nó thực hiện, sau đó tiếp tục ở Bước 3.
Với CLI
Phần tiêu đề “Với CLI”Chạy các generators tạo khung ứng dụng. Sử dụng nút bên dưới để sao chép tất cả, hoặc tự chạy từng cái như được mô tả bên dưới sơ đồ.
Tùy thuộc vào loại dự án bạn đang xây dựng, bạn có thể chọn bất kỳ tổ hợp generators nào để nhanh chóng khởi tạo dự án của mình. Xem phần Generators trong thanh điều hướng bên trái để xem danh sách đầy đủ các tùy chọn, hoặc thử graph builder để xây dựng workspace của bạn một cách trực quan.
Thêm tRPC API
Phần tiêu đề “Thêm tRPC API”Chạy generator này@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- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - ts#api - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn cho bước này2
Bắt buộc
Lệnh này sẽ tạo API bên trong thư mục packages/demo-api.
Thêm React Website
Phần tiêu đề “Thêm React Website”Chạy generator này@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- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - ts#website - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn cho bước này1
Bắt buộc
Lệnh này tạo khung một React website mới trong packages/demo-website.
Thêm Cognito Authentication
Phần tiêu đề “Thêm Cognito Authentication”Chạy generator này@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- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - ts#website#auth - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn cho bước này1
Bắt buộc
Lệnh này thiết lập cơ sở hạ tầng và mã React cần thiết để thêm Cognito Authentication vào website của bạn.
Kết Nối Frontend với Backend
Phần tiêu đề “Kết Nối Frontend với Backend”Chạy generator này@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- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - connection - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn cho bước này2
Bắt buộc
Bắt buộc
Lệnh này cấu hình các providers cần thiết để đảm bảo website của bạn có thể gọi tRPC API.
Thêm Infrastructure
Phần tiêu đề “Thêm Infrastructure”Thêm dự án infrastructure dựa trên nhà cung cấp IAC bạn đã chọn.
Chạy generator này@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- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - ts#infra - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn cho bước này1
Bắt buộc
Lệnh này cấu hình một CDK App mà bạn có thể sử dụng để triển khai cơ sở hạ tầng của mình trên AWS.
Chạy generator này@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- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - terraform#project - Điền các tham số bắt buộc
- Nhấp
Generate
Tùy chọn cho bước này1
Bắt buộc
Lệnh này cấu hình một dự án Terraform mà bạn có thể sử dụng để triển khai cơ sở hạ tầng của mình trên AWS.
Bước 3: Chạy Website và API Trên Máy Cục Bộ
Phần tiêu đề “Bước 3: Chạy Website và API Trên Máy Cục Bộ”Sử dụng lệnh sau để khởi động các dev server cục bộ cho website và các API được kết nối:
pnpm devyarn devnpm run devbun devWebsite của bạn sẽ có sẵn tại http://localhost:4200.
Các thay đổi đối với cả website và API sẽ được phản ánh theo thời gian thực vì cả website và API server cục bộ đều sẽ hot-reload.
Calling your API from your website
Kết nối website với API đã thêm một hook useDemoApi, trả về một tRPC options proxy: mỗi procedure trên API của bạn cung cấp queryOptions và mutationOptions để chuyển cho TanStack Query.
Cập nhật packages/demo-website/src/routes/index.tsx để gọi procedure echo của API, hiển thị spinner trong khi request đang được thực hiện:
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> );}Lưu tệp và trang sẽ tải lại với thông điệp mà API của bạn đã echo trả về. Cuộc gọi này an toàn về kiểu từ đầu đến cuối — đổi tên message trong packages/demo-api/src/schema/echo.ts và website của bạn sẽ ngừng biên dịch cho đến khi bạn thực hiện thay đổi xuyên suốt.
Xem hướng dẫn kết nối React với tRPC để biết về mutations, subscriptions, xử lý lỗi và optimistic updates.
Bước 4: Định Nghĩa Cloud Resources và Triển Khai lên AWS
Phần tiêu đề “Bước 4: Định Nghĩa Cloud Resources và Triển Khai lên AWS”Mở packages/infra/src/stacks/application-stack.ts và thêm đoạn mã sau:
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'); }}Đây là tất cả CDK chúng ta cần viết để triển khai ứng dụng full stack của mình.
Mở packages/infra/src/main.tf và thêm đoạn mã sau:
# 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}Đây là tất cả Terraform chúng ta cần viết để triển khai ứng dụng full stack của mình.
Build và Triển Khai Infrastructure
Phần tiêu đề “Build và Triển Khai Infrastructure”Tiếp theo, chạy lệnh sau để build dự án của bạn:
pnpm buildyarn buildnpm run buildbun buildBootstrap cơ sở hạ tầng của bạn:
pnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infrapnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infraTriển khai dự án của bạn:
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 infraBước 5: Kiểm Tra Website với Cloud Resources Đã Triển Khai
Phần tiêu đề “Bước 5: Kiểm Tra Website với Cloud Resources Đã Triển Khai”-
Tải tệp
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 -
Khởi động local website server
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
Website của bạn sẽ có sẵn tại http://localhost:4200, và sẽ trỏ đến các tài nguyên bạn đã triển khai cho API và authentication.
Để đăng nhập, bạn sẽ cần tạo user trong Cognito user pool.
Creating a user with the AWS CLI
Lệnh sau tạo một user trong user pool. Bạn có thể tìm thấy user pool id trong deployment outputs của mình, hoặc trong Amazon Cognito console. Thay thế các giá trị cho username, email, tên và họ, và mật khẩu tạm thời.
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 SUPPRESSLần đầu tiên bạn đăng nhập với user này, bạn sẽ được nhắc chọn mật khẩu mới, sau đó thiết lập xác thực đa yếu tố bằng mã được gửi qua SMS hoặc mật khẩu một lần dựa trên thời gian từ ứng dụng authenticator.
Website của bạn cũng được phục vụ từ CloudFront. Mở distribution domain name của nó (được in ra terminal của bạn sau khi triển khai) để sử dụng phiên bản chạy hoàn toàn trên AWS.
Chúc mừng! 🎉 Bạn đã xây dựng và triển khai thành công một ứng dụng full-stack bằng cách sử dụng @aws/nx-plugin!
Bước 6: Dọn Dẹp
Phần tiêu đề “Bước 6: Dọn Dẹp”Khi bạn đã hoàn tất, hãy xóa các tài nguyên bạn đã triển khai để tránh chi phí liên tục:
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 infraĐể xóa các tài nguyên bootstrap, làm theo hướng dẫn bên dưới:
Xóa bootstrap stack trong mọi region bạn đã bootstrap, bao gồm cả us-east-1. Điều này xóa các bootstrap roles và container image repository:
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 infraCác Bước Tiếp Theo
Phần tiêu đề “Các Bước Tiếp Theo”- Dungeon Adventure Tutorial — xây dựng một trò chơi phiêu lưu dungeon AI full-stack, để có hướng dẫn chi tiết hơn hướng dẫn này.
- Workspaces — cách workspace của bạn được bố trí, và cấu hình mà các generators chia sẻ.
- Add to an Existing Project — áp dụng plugin trong codebase hiện có của bạn.