빠른 시작 가이드
이 가이드는 @aws/nx-plugin을 설치하고 사용하여 AWS에서 프로젝트를 빠르게 구축하는 기본 사항을 안내합니다.
사전 요구 사항
섹션 제목: “사전 요구 사항”진행하기 전에 다음 전역 종속성이 필요합니다:
- Git
- Node >= 22 (NVM과 같은 도구를 사용하여 node 버전을 관리하는 것을 권장합니다)
node --version을 실행하여 확인하세요
- UV >= 0.5.29
uv python install 3.14.0을 실행하여 Python 3.14를 설치하세요uv python list --only-installed로 확인하세요
- PNPM >= 11 (원하는 경우 Yarn >= 4, Bun >= 1, 또는 NPM >= 10을 사용할 수도 있습니다)
pnpm --version,yarn --version,bun --version또는npm --version을 실행하여 확인하세요
- 애플리케이션을 배포하려면 (일부 로컬 개발 워크플로에도 필요) 대상 AWS 계정에 구성된 AWS Credentials가 필요합니다.
- 일부 생성기에는 Docker 또는 Finch >= 1.6.0이 필요합니다. Docker의 경우 멀티 플랫폼 빌드가 설정되어 있어야 하며, Finch는 기본적으로 멀티 플랫폼 빌드를 지원합니다.
- CDK 대신 인프라를 코드로 관리하기 위해 이것을 사용하려면 Terraform >= 1.12가 필요합니다
terraform --version을 실행하여 확인하세요
- VSCode를 사용하는 경우 Nx Console VSCode Plugin 설치를 권장합니다.
1단계: 새 Nx 워크스페이스 초기화
섹션 제목: “1단계: 새 Nx 워크스페이스 초기화”다음 명령을 실행하여 원하는 패키지 매니저로 Nx 워크스페이스를 생성합니다:
pnpm create @aws/nx-workspace my-projectyarn create @aws/nx-workspace my-projectnpm create @aws/nx-workspace -- my-projectbun create @aws/nx-workspace my-project완료되면 프로젝트 디렉터리로 이동합니다:
cd my-project2단계: 제너레이터를 사용하여 프로젝트 스캐폴딩
섹션 제목: “2단계: 제너레이터를 사용하여 프로젝트 스캐폴딩”이 빠른 시작 가이드에서는 tRPC API, React 웹사이트, Cognito 인증, 그리고 CDK 또는 Terraform 인프라를 추가합니다. 구축하는 프로젝트 유형에 따라 제너레이터의 조합을 선택하여 프로젝트를 빠르게 부트스트랩할 수 있습니다. 왼쪽 탐색 바의 __Generators__를 확인하여 전체 옵션 목록을 보거나, 그래프 빌더를 사용하여 워크스페이스를 시각적으로 구성해 보세요.
단축키로 아래 버튼을 사용하여 전체 애플리케이션을 스캐폴딩하는 명령을 복사할 수 있습니다.
그렇지 않으면 아래 단계를 따라 각 제너레이터를 직접 실행하세요.
tRPC API 추가
섹션 제목: “tRPC API 추가”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-interactive어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
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- 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
- VSCode에서 Nx 콘솔 열기
- 클릭
Generate (UI)"Common Nx Commands" 섹션에서 - 검색
@aws/nx-plugin - ts#api - 필수 매개변수 입력
- name: demo-api
- framework: trpc
- auth: iam
- 클릭
Generate
이렇게 하면 packages/demo-api 폴더 내에 API가 생성됩니다.
React 웹사이트 추가
섹션 제목: “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-interactive어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
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- 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
- VSCode에서 Nx 콘솔 열기
- 클릭
Generate (UI)"Common Nx Commands" 섹션에서 - 검색
@aws/nx-plugin - ts#website - 필수 매개변수 입력
- name: demo-website
- 클릭
Generate
이렇게 하면 packages/demo-website에 새 React 웹사이트가 스캐폴딩됩니다.
Cognito 인증 추가
섹션 제목: “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-interactive어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
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- 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
- VSCode에서 Nx 콘솔 열기
- 클릭
Generate (UI)"Common Nx Commands" 섹션에서 - 검색
@aws/nx-plugin - ts#website#auth - 필수 매개변수 입력
- project: @my-project/demo-website
- cognitoDomain: my-demo
- 클릭
Generate
이렇게 하면 웹사이트에 Cognito 인증을 추가하는 데 필요한 인프라와 React 코드가 설정됩니다.
프론트엔드와 백엔드 연결
섹션 제목: “프론트엔드와 백엔드 연결”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-interactive어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
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- 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
- VSCode에서 Nx 콘솔 열기
- 클릭
Generate (UI)"Common Nx Commands" 섹션에서 - 검색
@aws/nx-plugin - connection - 필수 매개변수 입력
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- 클릭
Generate
이렇게 하면 웹사이트가 tRPC API를 호출할 수 있도록 필요한 프로바이더가 구성됩니다.
인프라 추가
섹션 제목: “인프라 추가”선택한 IAC 제공자에 따라 인프라 프로젝트를 추가합니다.
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-interactive어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
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- 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
- VSCode에서 Nx 콘솔 열기
- 클릭
Generate (UI)"Common Nx Commands" 섹션에서 - 검색
@aws/nx-plugin - ts#infra - 필수 매개변수 입력
- name: infra
- 클릭
Generate
이렇게 하면 AWS에 인프라를 배포하는 데 사용할 수 있는 CDK 앱이 구성됩니다.
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-interactive어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
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- 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
- VSCode에서 Nx 콘솔 열기
- 클릭
Generate (UI)"Common Nx Commands" 섹션에서 - 검색
@aws/nx-plugin - terraform#project - 필수 매개변수 입력
- name: infra
- 클릭
Generate
이렇게 하면 AWS에 인프라를 배포하는 데 사용할 수 있는 Terraform 프로젝트가 구성됩니다.
3단계: 웹사이트와 API를 로컬에서 실행
섹션 제목: “3단계: 웹사이트와 API를 로컬에서 실행”다음 명령을 사용하여 웹사이트와 연결된 API에 대한 로컬 개발 서버를 시작합니다:
pnpm devyarn devnpm run devbun dev웹사이트는 http://localhost:4200에서 사용할 수 있습니다.
로컬 웹사이트와 API 서버가 모두 핫 리로드되므로 웹사이트와 API 모두의 변경 사항이 실시간으로 반영됩니다.
4단계: 클라우드 리소스 정의 및 AWS에 배포
섹션 제목: “4단계: 클라우드 리소스 정의 및 AWS에 배포”packages/infra/src/stacks/application-stack.ts를 열고 다음 코드를 추가합니다:
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'); }}이것이 풀스택 애플리케이션을 배포하기 위해 작성해야 하는 모든 CDK 코드입니다.
packages/infra/src/main.tf를 열고 다음 코드를 추가합니다:
# 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]}이것이 풀스택 애플리케이션을 배포하기 위해 작성해야 하는 모든 Terraform 코드입니다.
인프라 빌드 및 배포
섹션 제목: “인프라 빌드 및 배포”다음으로, 다음 명령을 실행하여 프로젝트를 빌드합니다:
pnpm buildyarn buildnpm run buildbun build인프라를 부트스트랩합니다:
pnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infrapnpm nx bootstrap infrayarn nx bootstrap infranpx nx bootstrap infrabunx nx bootstrap infra프로젝트를 배포합니다:
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 infra5단계: 배포된 클라우드 리소스로 웹사이트 테스트
섹션 제목: “5단계: 배포된 클라우드 리소스로 웹사이트 테스트”-
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 -
로컬 웹사이트 서버를 시작합니다
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
웹사이트는 http://localhost:4200에서 사용할 수 있으며, API 및 인증을 위해 배포한 리소스를 가리킵니다.
축하합니다! 🎉 @aws/nx-plugin을 사용하여 풀스택 애플리케이션을 성공적으로 빌드하고 배포했습니다!