クイックスタートガイド
このガイドでは、@aws/nx-plugin
のインストールと基本的な使用方法について説明し、AWS上でのプロジェクト構築を迅速化する方法を解説します。
作業を進める前に以下のグローバル依存関係が必要です:
- Git
- Node >= 22(バージョン管理にはNVMの使用を推奨)
- 確認コマンド:
node --version
- 確認コマンド:
- PNPM >= 10(代替としてYarn >= 4、Bun >= 1、NPM >= 10も使用可能)
- 確認コマンド:
pnpm --version
、yarn --version
、bun --version
またはnpm --version
- 確認コマンド:
- UV >= 0.5.29
- Python 3.12のインストール:
uv python install 3.12.0
- 確認コマンド:
uv python list --only-installed
- Python 3.12のインストール:
- ターゲットAWSアカウントに設定されたAWS認証情報(アプリケーションのデプロイ先)
- 一部のジェネレータで必要なDocker
- CDKの代わりにTerraformをIaCとして使用する場合に必要なTerraform >= 1.12
- 確認コマンド:
terraform --version
- 確認コマンド:
- VSCodeユーザー向けNx Console VSCodeプラグインのインストール推奨
ステップ1: 新しいNxワークスペースの初期化
Section titled “ステップ1: 新しいNxワークスペースの初期化”以下のコマンドを実行して、任意のパッケージマネージャーでNxワークスペースを作成します:
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
完了したら、プロジェクトディレクトリに移動します:
cd my-project
ステップ2: ジェネレータを使用したプロジェクトのスキャフォールディング
Section titled “ステップ2: ジェネレータを使用したプロジェクトのスキャフォールディング”このクイックスタートガイドでは、tRPC API、Reactウェブサイト、Cognito認証、CDK/Terraformインフラストラクチャを追加します。プロジェクトタイプに応じて、任意のジェネレータの組み合わせで迅速にプロジェクトを構築できます。左のナビゲーションバーにある__ガイド__から全オプションリストをご確認ください。
tRPC APIの追加
Section titled “tRPC APIの追加”- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - ts#trpc-api
- 必須パラメータを入力
- name: demo-api
- auth: IAM
- クリック
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
変更されるファイルを確認するためにドライランを実行することもできます
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
これによりpackages/demo-api
フォルダ内にAPIが作成されます。
Reactウェブサイトの追加
Section titled “Reactウェブサイトの追加”- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - ts#react-website
- 必須パラメータを入力
- name: demo-website
- クリック
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
変更されるファイルを確認するためにドライランを実行することもできます
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
packages/demo-website
に新しいReactウェブサイトがスキャフォールドされます。
Cognito認証の追加
Section titled “Cognito認証の追加”- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - ts#react-website#auth
- 必須パラメータを入力
- project: @my-project/demo-website
- cognitoDomain: my-demo
- クリック
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
変更されるファイルを確認するためにドライランを実行することもできます
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
ウェブサイトにCognito認証を追加するためのインフラストラクチャとReactコードを設定します。
フロントエンドとバックエンドの接続
Section titled “フロントエンドとバックエンドの接続”- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - api-connection
- 必須パラメータを入力
- sourceProject: @my-project/demo-website
- targetProject: @my-project/demo-api
- クリック
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
変更されるファイルを確認するためにドライランを実行することもできます
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
ウェブサイトがtRPC APIを呼び出せるように必要なプロバイダーを設定します。
インフラストラクチャの追加
Section titled “インフラストラクチャの追加”選択したIaCプロバイダーに基づいてインフラストラクチャプロジェクトを追加します。
- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - ts#infra
- 必須パラメータを入力
- name: infra
- クリック
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
変更されるファイルを確認するためにドライランを実行することもできます
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
AWSにインフラストラクチャをデプロイするためのCDKアプリを設定します。
- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - terraform#project
- 必須パラメータを入力
- name: infra
- クリック
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
変更されるファイルを確認するためにドライランを実行することもできます
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
AWSにインフラストラクチャをデプロイするためのTerraformプロジェクトを設定します。
ステップ3: ローカル環境でのウェブサイトとAPIの実行
Section titled “ステップ3: ローカル環境でのウェブサイトとAPIの実行”以下のコマンドでウェブサイトと接続されたAPIのローカル開発サーバーを起動します:
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
ウェブサイトはhttp://localhost:4200
で利用可能になります。
ウェブサイトとAPIへの変更は、両方のローカルサーバーがホットリロードされるためリアルタイムで反映されます。
ステップ4: クラウドリソースの定義とAWSへのデプロイ
Section titled “ステップ4: クラウドリソースの定義とAWSへのデプロイ”packages/infra/src/stacks/application-stack.ts
を開き、以下のコードを追加します:
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'); }}
これがフルスタックアプリケーションをデプロイするために必要なCDKコードの全量です。
packages/infra/src/main.tf
を開き、以下のコードを追加します:
# @aws/nx-pluginの使用状況追跡モジュールmodule "metrics" { source = "../../common/terraform/src/metrics"}
# ユーザーアイデンティティのデプロイmodule "user_identity" { source = "../../common/terraform/src/core/user-identity"}
# APIのデプロイmodule "demo_api" { source = "../../common/terraform/src/app/apis/demo-api"}
# 認証ユーザーへのAPI呼び出し権限付与resource "aws_iam_policy" "api_invoke_policy" { name = "DemoApiInvokePolicy" description = "認証ユーザーが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}
# ウェブサイトのデプロイprovider "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コードの全量です。
インフラストラクチャのビルドとデプロイ
Section titled “インフラストラクチャのビルドとデプロイ”以下のコマンドでプロジェクトをビルドします:
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
インフラストラクチャのブートストラップを実行します:
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
プロジェクトをデプロイします:
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
ステップ5: デプロイ済みクラウドリソースでのウェブサイトテスト
Section titled “ステップ5: デプロイ済みクラウドリソースでのウェブサイトテスト”-
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 -
ローカルウェブサイトサーバーの起動
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
ウェブサイトはhttp://localhost:4200
で利用可能になり、デプロイしたAPIと認証リソースを指すようになります。
おめでとうございます!🎉 @aws/nx-plugin
を使用したフルスタックアプリケーションの構築とデプロイに成功しました!