メインコンテンツまでスキップ

インストール

システム要件:

自動インストール

まず、mbc-cqrs-serverless CLI を使用してプロジェクトをスキャフォールディングします。 mbc-cqrs-serverless CLI を使用してプロジェクトをスキャフォールディングするには、次のコマンドを実行します。これにより、新しいプロジェクト ディレクトリが作成され、そのディレクトリに初期コアの mbc-cqrs-serverless ファイルとサポート モジュールが追加され、プロジェクトの従来の基本構造が作成されます。

npm i -g @mbc-cqrs-serverless/cli
mbc new project-name

mbc-cqrs-serverless を使用して新しいプロジェクトを作成した際は、プロジェクト構造 のドキュメントを参照してアプリケーションないで使用出来る全てのファイルとフォルダーの概要を確認して下さい。

開発用サーバの実行

  1. npm run build コマンドを実行して開発モードでビルドします。
  2. 別のターミナルを開いて npm run offline:docker コマンドを実行し、開発用サーバをDockerで実行します。
  3. 別のターミナルを開いて npm run migrate コマンドを実行し開発サーバ内のRDS及びDynamoDBをマイグレーとします。
  4. 最後に npm run offline:sls コマンドを実行して serverless offline mode を実行します。

サーバの起動が完了したら次のようなメッセージを確認する事が出来ます。

DEBUG[serverless-offline-sns][adapter]: successfully subscribed queue "http://localhost:9324/101010101010/notification-queue" to topic: "arn:aws:sns:ap-northeast-1:101010101010:MySnsTopic"
Offline Lambda Server listening on http://localhost:4000
serverless-offline-aws-eventbridge :: Plugin ready
serverless-offline-aws-eventbridge :: Mock server running at port: 4010
Starting Offline SQS at stage dev (ap-northeast-1)
Starting Offline Dynamodb Streams at stage dev (ap-northeast-1)

Starting Offline at stage dev (ap-northeast-1)

Offline [http for lambda] listening on http://localhost:3002
Function names exposed for local invocation by aws-sdk:
* main: serverless-example-dev-main
Configuring JWT Authorization: ANY /{proxy+}

┌────────────────────────────────────────────────────────────────────────┐
│ │
│ ANY | http://localhost:3000/api/public │
│ POST | http://localhost:3000/2015-03-31/functions/main/invocations │
│ ANY | http://localhost:3000/swagger-ui/{proxy*} │
│ POST | http://localhost:3000/2015-03-31/functions/main/invocations │
│ ANY | http://localhost:3000/{proxy*} │
│ POST | http://localhost:3000/2015-03-31/functions/main/invocations │
│ │
└────────────────────────────────────────────────────────────────────────┘

Server ready: http://localhost:3000 🚀

次のサービスのエンドポイントが起動します。:

ローカルサービスのポート設定

バージョンノート

ローカルポート設定機能はバージョン 1.0.26で追加されました。

他のサービス(別のMySQLインスタンスやポート3000を使用する他のアプリケーションなど)とポートが競合する場合は、.envファイルの環境変数でローカルサービスのポートを設定できます。

利用可能なポート変数

変数デフォルトサービス
LOCAL_HTTP_PORT3000API Gateway (Serverless Offline)
LOCAL_LAMBDA_PORT3002Lambda HTTPエンドポイント
LOCAL_DYNAMODB_PORT8000DynamoDB Local
LOCAL_RDS_PORT3306MySQL (RDS)
LOCAL_S3_PORT4566LocalStack (S3)
LOCAL_SNS_PORT4002SNS
LOCAL_SQS_PORT9324SQS (ElasticMQ)
LOCAL_SQS_UI_PORT9325SQS管理画面
LOCAL_SFN_PORT8083Step Functions Local
LOCAL_COGNITO_PORT9229Cognito Local
LOCAL_APPSYNC_PORT4001AppSyncシミュレーター
LOCAL_EVENTBRIDGE_PORT4010EventBridge
LOCAL_SES_PORT8005Simple Email Service
LOCAL_DDB_ADMIN_PORT8001DynamoDB管理画面

例: ポートの変更

API Gatewayのポートを3000から3010に、MySQLのポートを3306から3307に変更するには、.envファイルに以下を追加します:

# API Gatewayのポートを3010に変更
LOCAL_HTTP_PORT=3010

# MySQLのポートを3307に変更
LOCAL_RDS_PORT=3307

# DynamoDBのポートを9000に変更
LOCAL_DYNAMODB_PORT=9000

ポートを変更した後、すべてのサービスを再起動します:

  1. 実行中のすべてのサービス(DockerとServerless Offline)を停止
  2. npm run offline:dockerを実行してDockerサービスを再起動
  3. npm run offline:slsを実行してServerless Offlineを再起動
ヒント

ポート設定は、Docker Compose、Serverless Offline、DynamoDBストリームトリガースクリプトを含むすべての関連サービスに自動的に適用されます。.envファイルで環境変数を一度設定するだけで済みます。

注記

ローカル開発環境で npm run migrate コマンドやローカルの Cognito にログイン出来ない場合は次のコマンドを使用してファイルやフォルダーにアクセス権を設定する必要があります。

sudo chmod -R 777 ./infra-local/cognito-local
sudo chmod -R 777 ./infra-local/cognito-local/db/clients.json
sudo chmod -R 777 ./infra-local
sudo chmod -R 777 ./infra-local/docker-data/
sudo chmod -R 777 ./infra-local/docker-data/dynamodb-local