デプロイメントガイド
このガイドでは、AWS CDKを使用してMBC CQRS ServerlessアプリケーションをAWSにデプロイする方法を説明します。
前提条件
デプロイ前に、以下が準備されていることを確認してください:
- AWS CLIがインストールされ、適切な認証情報で設定されている
- Node.js 18.x 以降
- AWS CDK CLIがインストールされている(
npm install -g aws-cdk) - 必要な権限を持つAWSアカウント
AWSアカウントの準備
必要なAWSサービス
アプリケーションは以下のAWSサービスを使用します:
- API Gateway - HTTP APIエンドポイント
- Lambda - サーバーレスコンピューティング
- DynamoDB - NoSQLデータベース
- RDS(PostgreSQL)- リレーショナルデータベース(オプション)
- Cognito - ユーザー認証
- S3 - ファイルストレージ
- SQS/SNS - メッセージキューイング
- Step Functions - ワークフローオーケストレーション
- CloudWatch - ロギングとモニタリング
IAMパーミッション
デプロイを行うユーザー/ロールには以下の権限が必要です:
- CloudFormation(フルアクセス)
- Lambda、API Gateway、DynamoDB、S3、SQS、SNS、Step Functions
- IAM(ロール作成用)
- CloudWatch Logs
- VPC(RDS使用時)
CDK Bootstrap
最初のデプロイ前に、AWSアカウントでCDKをブートストラップします:
cdk bootstrap aws://YOUR_ACCOUNT_ID/YOUR_REGION
例:
cdk bootstrap aws://123456789012/ap-northeast-1
環境設定
環境設定の作成
infra/config/ に環境固有の設定ファイルを作成します:
// infra/config/dev.ts
import { IConfig } from './type';
export const config: IConfig = {
envName: 'dev',
region: 'ap-northeast-1',
// VPC Configuration
vpcId: 'vpc-xxxxxxxxx',
// Domain Configuration (optional)
domainName: 'dev-api.your-domain.com',
certificateArn: 'arn:aws:acm:ap-northeast-1:YOUR_ACCOUNT:certificate/xxx',
// Database Configuration
database: {
name: 'your_app_dev',
instanceType: 't3.micro',
},
// API Gateway Configuration
apiGateway: {
throttlingRateLimit: 1000,
throttlingBurstLimit: 500,
},
};
環境変数
.env またはCI/CDパイプラインで環境変数を設定します:
# AWS Configuration
AWS_REGION=ap-northeast-1
AWS_ACCOUNT_ID=123456789012
# Application Configuration
APP_NAME=your-app
ENVIRONMENT=dev
# Database
DATABASE_URL=postgresql://user:password@host:5432/dbname
# Cognito
COGNITO_USER_POOL_ID=ap-northeast-1_xxxxxxx
COGNITO_CLIENT_ID=xxxxxxxxxxxxxxxxxx
CDKスタック構造
典型的なMBC CQRS Serverless CDKプロジェクトは以下の構造を持ちます:
infra/
├── app.ts # CDK app entry point
├── cdk.json # CDK configuration
├── config/
│ ├── type.ts # Config type definitions
│ ├── dev.ts # Development config
│ ├── stg.ts # Staging config
│ └── prod.ts # Production config
└── libs/
├── infra-stack.ts # Main infrastructure stack
└── pipeline-stack.ts # CI/CD pipeline stack
CDKでのデプロイ
CloudFormationテンプレートの合成
まず、CloudFormationテンプレートを合成して設定を確認します:
cd infra
cdk synth
開発環境へのデプロイ
cdk deploy --context env=dev