Hướng Dẫn Bắt Đầu Nhanh
Hướng dẫn này sẽ hướng dẫn bạn các bước cơ bản để cài đặt và sử dụng @aws/nx-plugin để xây dựng nhanh các dự án trên AWS.
Yêu cầu trước
Phần tiêu đề “Yêu cầu trước”Các phụ thuộc toàn cục sau là cần thiế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 bạn nên sử dụng công cụ như NVM để quản lý các phiên bản node)
- xác minh bằng cách chạy
node --version
- xác minh bằng cách chạy
- PNPM >= 10 (bạn cũng có thể sử dụng Yarn >= 4, Bun >= 1, hoặc NPM >= 10 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
- UV >= 0.5.29
- cài đặt Python 3.12 bằng cách chạy:
uv python install 3.12.0 - xác minh bằng
uv python list --only-installed
- cài đặt Python 3.12 bằng cách chạy:
- Thông tin xác thực AWS được cấu hình cho tài khoản AWS đích của bạn (nơi ứng dụng của bạn sẽ được triển khai)
Khuyến nghị
Phần tiêu đề “Khuyến nghị”- Docker là bắt buộc đối với một số trình tạo.
- Terraform >= 1.12 là bắt buộc nếu bạn chọn sử dụng công cụ này cho cơ sở hạ tầng dưới dạng mã 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: Khởi tạo Nx Workspace mới
Phần tiêu đề “Bước 1: Khởi tạo Nx Workspace mới”Chạy lệnh sau để tạo một Nx workspace với trình quản lý gói mà bạn chọn:
npx create-nx-workspace@22.6.1 my-project --pm=pnpm --preset=@aws/nx-plugin --ci=skip --analytics=false --aiAgentsnpx create-nx-workspace@22.6.1 my-project --pm=yarn --preset=@aws/nx-plugin --ci=skip --analytics=false --aiAgentsnpx create-nx-workspace@22.6.1 my-project --pm=npm --preset=@aws/nx-plugin --ci=skip --analytics=false --aiAgentsnpx create-nx-workspace@22.6.1 my-project --pm=bun --preset=@aws/nx-plugin --ci=skip --analytics=false --aiAgentsSau khi hoàn tất, điều hướng đến thư mục dự án:
cd my-projectBước 2: Sử dụng Generators để Tạo khung Dự án
Phần tiêu đề “Bước 2: Sử dụng Generators để Tạo khung Dự án”Chúng ta sẽ thêm một tRPC API, React Website, Cognito Authentication, và CDK hoặc Terraform Infrastructure trong hướng dẫn nhanh này. 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 nào của các generators để nhanh chóng khởi tạo dự án của mình. Xem phần Guides trong thanh điều hướng bên trái để xem danh sách đầy đủ các tùy chọn.
Thêm tRPC API
Phần tiêu đề “Thêm tRPC API”- 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#trpc-api - Điền các tham số bắt buộc
- name: demo-api
- auth: IAM
- Nhấp
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=IAMBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
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-runLệ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”- 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#react-website - Điền các tham số bắt buộc
- name: demo-website
- Nhấp
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-websiteBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
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-runLệ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”- 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#react-website#auth - Điền các tham số bắt buộc
- project: @my-project/demo-website
- cognitoDomain: my-demo
- Nhấp
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-demoBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
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-runLệnh này thiết lập cơ sở hạ tầng cần thiết và mã React để 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”- 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
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- Nhấp
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-apiBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
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-runLệ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.
- 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
- name: infra
- Nhấp
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=infraBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
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-runLệ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.
- 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
- name: infra
- Nhấp
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=infraBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
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-runLệ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 của bạn ở Local
Phần tiêu đề “Bước 3: Chạy Website và API của bạn ở Local”Sử dụng lệnh sau để khởi động các dev server local cho website và các API được kết nối:
pnpm nx serve-local demo-websiteyarn nx serve-local demo-websitenpx nx serve-local demo-websitebunx nx serve-local demo-websiteWebsite của bạn sẽ có sẵn tại http://localhost:4200.
Các thay đổi đối với cả website và API của bạn sẽ được phản ánh theo thời gian thực vì cả website local và API server đều sẽ hot-reload.
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 { 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'); }}Đâ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:
# 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"}
# Deploy APImodule "demo_api" { source = "../../common/terraform/src/app/apis/demo-api"}
# 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]}Đâ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à Deploy Infrastructure
Phần tiêu đề “Build và Deploy 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 infra "my-project-sandbox/*"yarn nx deploy infra "my-project-sandbox/*"npx nx deploy infra "my-project-sandbox/*"bunx nx deploy infra "my-project-sandbox/*"pnpm 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”-
Lấy tệp
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 -
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.
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!