with one click
dev-and-infra-workflow
// 開発用およびインフラ作業用のワークフローコマンドを実行します。 本番環境: CDKデプロイ、インフラ管理(open/close)、Webビルド・デプロイ ローカル開発環境: LocalStackセットアップ、スキーマ同期、docker-compose操作 ユーザーがデプロイ、ビルド、インフラ操作、ローカル開発を依頼したときに使用してください。
// 開発用およびインフラ作業用のワークフローコマンドを実行します。 本番環境: CDKデプロイ、インフラ管理(open/close)、Webビルド・デプロイ ローカル開発環境: LocalStackセットアップ、スキーマ同期、docker-compose操作 ユーザーがデプロイ、ビルド、インフラ操作、ローカル開発を依頼したときに使用してください。
| name | dev-and-infra-workflow |
| description | 開発用およびインフラ作業用のワークフローコマンドを実行します。 本番環境: CDKデプロイ、インフラ管理(open/close)、Webビルド・デプロイ ローカル開発環境: LocalStackセットアップ、スキーマ同期、docker-compose操作 ユーザーがデプロイ、ビルド、インフラ操作、ローカル開発を依頼したときに使用してください。 |
| allowed-tools | Bash |
このスキルはプロジェクトのpnpmワークフローコマンドを実行します。
このプロジェクトは2つの開発環境をサポートしています:
ローカル開発環境は以下のサービスで構成されています:
pnpm run sync-schema
CDKからスキーマを抽出してLocalStackに同期。以下を順次実行:
cdk synth - CloudFormationテンプレート生成generate-localstack-setup.ts - AWS CLIスクリプト自動生成setup-localstack.sh - LocalStackにリソースを作成(DynamoDB、SQS、S3)使用ケース:
pnpm run local:setup
既に生成済みのsetup-localstack.shを実行してLocalStackにリソースを作成。
使用ケース:
sync-schema vs local:setup:
sync-schema: CDKから再生成(遅い、スキーマ変更時に使用)local:setup: 既存スクリプト実行(速い、日常的に使用)pnpm run local:reset
LocalStackを完全にリセットしてスキーマを再同期。以下を順次実行:
docker-compose down - コンテナ停止・削除docker-compose up -d - 再起動pnpm run sync-schema - スキーマ同期使用ケース:
pnpm run deploy:all
インフラとWebアプリを一括でデプロイする。以下を順次実行:
ユーザーの介入なしで完全なデプロイが完了します。通常はこのコマンドを使用してください。
pnpm run cdk:synth
CDKスタックをCloudFormationテンプレートに変換して確認する。
注: cdk:deployは内部で自動的にsynthを実行するため、通常のデプロイでは不要。
デプロイせずにテンプレートだけ確認したい場合や、構文エラーのデバッグ時に使用。
pnpm run cdk:deploy
CDKスタックをAWSにデプロイする(内部でsynthも実行)。承認なしで自動デプロイ。
pnpm run cdk:destroy
デプロイされたCDKスタックを削除する。慎重に使用。
pnpm run cdk:diff
現在のCDKコードとデプロイ済みスタックの差分を表示。
pnpm run cdk:bootstrap
AWS環境でCDKを使用するための初期セットアップ。初回のみ実行。
pnpm run cdk:info
CloudFrontディストリビューションの情報を表示。
pnpm run infra:close
Lambda、ECS、CloudFrontをすべて停止してコストを削減。
個別に停止する場合:
pnpm run infra:close:lambda # Lambda関数の同時実行数を0に
pnpm run infra:close:ecs # ECSサービスのタスク数を0に
pnpm run infra:close:cloudfront # CloudFrontを無効化
pnpm run infra:open
停止していたLambda、ECS、CloudFrontを再開。
個別に再開する場合:
pnpm run infra:open:lambda # Lambda関数の同時実行制限を解除
pnpm run infra:open:ecs # ECSサービスのタスク数を1に
pnpm run infra:open:cloudfront # CloudFrontを有効化
pnpm run facilitator:build
facilitatorパッケージをビルド。
pnpm run facilitator:deploy
ビルドしたWebアプリをS3にアップロードしてCloudFrontで配信。
pnpm run deploy:web-assets
pnpm run orchestrator:build
orchestratorサービスをビルド。自動的に依存する@timtam/sharedパッケージも先にビルドされる。
注:
pnpm run test
orchestratorのテストを実行(Vitest使用)。
注:
test:watch と test:ui はpackage.jsonに定義されていますが、継続的に実行されるため、Claude Codeでは使用しません(手動実行用)pnpm run e2e:test:local
ローカル開発環境のサニティチェックテストを実行。
前提条件:
docker-compose up -d ですべてのサービスが起動しているpnpm run local:setup でLocalStackリソースが作成されているweb/facilitator で pnpm run dev が起動している(ポート3001)テスト内容:
ブラウザを表示して実行:
pnpm run e2e:test:local:headed
pnpm run sso:admin
AWS SSO経由で管理者権限を取得。
すべてのAWS操作の前に実行が必要:
認証エラーが出た場合は、このコマンドを実行してから再試行する。
pnpm run infra:synth-deploy
CDKの合成とデプロイを連続実行。
# 1. コンテナを起動(localstack、api-server、recall-stubが起動)
docker-compose up -d
# 2. LocalStackが起動するまで待つ(約5-10秒)
sleep 10
# 3. スキーマを同期(DynamoDB、SQS、S3リソースを作成)
pnpm run sync-schema
# 4. 状態確認
docker-compose ps
aws dynamodb list-tables --endpoint-url http://localhost:4566 --region ap-northeast-1
curl http://localhost:3000/health # api-server確認
# 1. コンテナを起動
docker-compose up -d
# 2. LocalStackが起動するまで待つ(約5-10秒)
sleep 10
# 3. リソースをセットアップ(既存のスクリプトを実行)
pnpm run local:setup
# 4. アプリケーション開発・テストを開始
# 1. infra/cdk/lib/stack.tsでDynamoDB/SQSスキーマを変更
# 2. スキーマを同期(自動的にCDKと同期)
pnpm run sync-schema
# 3. アプリケーションで動作確認
# LocalStack完全リセット
pnpm run local:reset
# または手動で実行
docker-compose down
docker-compose up -d
pnpm run sync-schema
# コンテナを停止
docker-compose down
注: LocalStackはフリーティアのためデータ永続化なし。次回起動時はpnpm run local:setupでリソースを再作成。
# コンテナ状態確認
docker-compose ps
# api-server health check
curl http://localhost:3000/health
# recall-stub health check
curl http://localhost:8080/health
# LocalStack health check
curl http://localhost:4566/_localstack/health
# DynamoDBテーブル確認
aws dynamodb list-tables --endpoint-url http://localhost:4566 --region ap-northeast-1
# SQSキュー確認
aws sqs list-queues --endpoint-url http://localhost:4566 --region ap-northeast-1
# api-serverのエンドポイントテスト
curl http://localhost:3000/recall/meetings
ローカル環境で作成されるリソース:
ローカル環境のサービス構成:
┌─────────────────┐
│ Facilitator UI │ (localhost:3001 from web/facilitator)
└────────┬────────┘
│
┌────────▼────────┐
│ api-server │ (Express + actual Lambda handlers)
│ :3000 │ docker-composeで実行
└────┬────────┬───┘
│ │
│ └──────┐
│ │
┌────▼─────────┐ ┌─▼──────────┐
│ LocalStack │ │ recall-stub│
│ :4566 │ │ :8080 │
│ - DynamoDB │ └────────────┘
│ - SQS │
│ - S3 │
│ - CloudWatch │
└──────────────┘
api-server(Express API Server):
http://localhost:3000
/health - ヘルスチェック/recall/meetings - ミーティング一覧/recall/meetings/:meetingId - ミーティング詳細/recall/meetings/join - ミーティング参加/recall/webhook - Recall.aiからのWebhook受信/recall/meetings/:meetingId - ミーティング退出/meetings/:meetingId/messages - AIメッセージ取得recall-stub(Recall.ai Stub Server):
http://localhost:8080
facilitator UI(Next.js Dev Server):
http://localhost:3001新しいマシンや開発環境でAWSへのデプロイを初めて行う場合は、cdk:bootstrapが必須。
# 1. AWS認証
pnpm run sso:admin
# 2. CDK bootstrap(新しい環境での初回のみ)
pnpm run cdk:bootstrap
# 3. 通常通りデプロイ
pnpm run deploy:all
bootstrap が必要なサイン:
cdk:diff を実行したとき、スタックがすでにデプロイ済みなのに全リソースが [+](新規)として表示されるcurrent credentials could not be used to assume 'cdk-timtam-lookup-role-...' というエラーが出るbootstrap は一度実行すれば以降は不要。
すべてのワークフローの最初に実行:
pnpm run sso:admin
このコマンドでAWS管理者権限を取得してから、以降の操作を実行する。
pnpm run deploy:all
インフラとWebアプリを一度にデプロイ。通常はこれを使用。
インフラのみデプロイ
pnpm run cdk:deploy
Webアプリのみビルド・デプロイ
pnpm run web:build
pnpm run web:deploy
pnpm run infra:close
pnpm run infra:open
cdk:diffで変更内容を確認してからデプロイinfra:closeでリソースを停止cdk:destroyを検討infra:close:cloudfrontは反映に15-20分かかるcdk:synthで構文確認cdk:infosso:adminで再認証cdk:diffで既存スタックが全て[+]と表示される → 新しい環境でcdk:bootstrap未実行の可能性。cdk:bootstrapを実行するsync-schemaを実行してCDKスキーマと同期docker-compose up -d後にlocal:setupでリソースを作成sync-schemaを実行(CDKと同期)docker-compose downでコンテナを停止setup-localstack.shは自動生成ファイル - 手動編集しないsync-schemaを実行local:resetsync-schemadocker-compose logsで確認docker-compose logs api-serverdocker-compose logs recall-stubResourceInUseException(400)は正常動作(冪等性のため)|| echo "already exists"でキャッチされているため無視してOKsso:admin → cdk:bootstrap → deploy:all ⭐ 新環境初回deploy:all ⭐ 推奨cdk:deployweb:build → web:deployorchestrator:buildtestinfra:closeinfra:opencdk:diffcdk:infocdk:destroy (要確認)docker-compose up -d → sync-schema ⭐ 初回docker-compose up -d → local:setup ⭐ 日常sync-schemadocker-compose ps + health checklocal:resetdocker-compose downe2e:test:local ⭐ E2Eテストすべてのコマンドは--profile adminを使用しています。AWS SSO設定が必要です。
以下のコマンドは元に戻せないので注意:
cdk:destroy - スタック全体を削除infra:close - リソースを停止(データは保持)deploy:all - 7-12分程度(CDK + Webビルド + デプロイ)cdk:deploy - 5-10分程度web:deploy - 1-2分程度infra:close:cloudfront / infra:open:cloudfront - 15-20分程度docker-compose up -d - 5-10秒sync-schema - 20-30秒(CDK synth + スクリプト生成 + LocalStack作成)local:setup - 5秒(既存スクリプト実行のみ)local:reset - 30-40秒(停止 + 起動 + スキーマ同期)docker-compose downまたはdocker-compose restart後はpnpm run local:setupでリソースを再作成する必要があるローカル開発時は必ず--endpoint-url http://localhost:4566を指定:
# 正しい
aws dynamodb list-tables --endpoint-url http://localhost:4566 --region ap-northeast-1
# 間違い(本番AWSに接続してしまう)
aws dynamodb list-tables --region ap-northeast-1
pnpm run sso:admin で認証されていることを確認。認証エラーが出た場合は、まず sso:admin を実行してから再試行/home/yattom/work/timtam/branches/wt1adminap-northeast-1timtam-infrafacilitatorservices/orchestratorpackages/shared/home/yattom/work/timtam/branches/wt1http://localhost:3000 (docker-compose)http://localhost:4566 (docker-compose)http://localhost:8080 (docker-compose)ap-northeast-1./docker-compose.yml./local-api-server/Dockerfile./scripts/setup-localstack.sh(自動生成)./scripts/sync-localstack-schema.sh./scripts/generate-localstack-setup.ts[HINT] Download the complete skill directory including SKILL.md and all related files