クイックスタートガイド
このガイドでは、@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 Credentials
- Dockerは一部のジェネレーターで必要です
- CDKの代わりにインフラストラクチャー・アズ・コードでTerraformを使用する場合、Terraform >= 1.12が必要です
terraform --versionを実行して確認してください
- VSCodeを使用する場合、Nx Console VSCode Pluginのインストールを推奨します
ステップ1: 新しいNxワークスペースの初期化
Section titled “ステップ1: 新しいNxワークスペースの初期化”以下のコマンドを実行して、任意のパッケージマネージャーでNxワークスペースを作成します:
npx create-nx-workspace@21.6.8 my-project --pm=pnpm --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=yarn --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=npm --preset=@aws/nx-plugin --ci=skip --aiAgentsnpx create-nx-workspace@21.6.8 my-project --pm=bun --preset=@aws/nx-plugin --ci=skip --aiAgents完了したら、プロジェクトディレクトリに移動します:
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=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=IAM変更されるファイルを確認するためにドライランを実行することもできます
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-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-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-website変更されるファイルを確認するためにドライランを実行することもできます
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-runpackages/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-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-demo変更されるファイルを確認するためにドライランを実行することもできます
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-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-apiyarn nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apinpx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-apibunx 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-runyarn nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runnpx nx g @aws/nx-plugin:api-connection --sourceProject=@my-project/demo-website --targetProject=@my-project/demo-api --dry-runbunx 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=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=infra変更されるファイルを確認するためにドライランを実行することもできます
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-runAWSにインフラストラクチャをデプロイするための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=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=infra変更されるファイルを確認するためにドライランを実行することもできます
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-runAWSにインフラストラクチャをデプロイするためのTerraformプロジェクトを設定します。
ステップ3: ローカル環境でのウェブサイトとAPIの実行
Section titled “ステップ3: ローカル環境でのウェブサイトとAPIの実行”以下のコマンドでウェブサイトと接続されたAPIのローカル開発サーバーを起動します:
pnpm nx run demo-website:serve-localyarn nx run demo-website:serve-localnpx nx run demo-website:serve-localbunx 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 --allyarn nx run-many --target build --allnpx nx run-many --target build --allbunx nx run-many --target build --allインフラストラクチャのブートストラップを実行します:
pnpm nx run infra:bootstrapyarn nx run infra:bootstrapnpx nx run infra:bootstrapbunx nx run infra:bootstrappnpm nx run infra:bootstrapyarn nx run infra:bootstrapnpx nx run infra:bootstrapbunx 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:applyyarn nx run infra:applynpx nx run infra:applybunx 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を使用したフルスタックアプリケーションの構築とデプロイに成功しました!