本リポジトリは、Gブレイバーバーストのネットワーク関連モジュールである。
リポジトリはnpm workspace、turborepo
を用いたモノレポ構造となっている。
特に断りがない限り、本書のコマンド例のカレントディレクトリは本リポジトリをcloneした場所の直下
であるとする。
- aws cli(2.3.4以上)
- node.js(v18.16.0以上)
- npm(9.5.1以上)
- npx(9.5.1以上)
- Docker(20.10.8以上)
本セクションではすべての環境で必要な事前作業を述べる。
ここを参考に、VPCを作成する。
AWSでマッチメイク用ECRリポジトリを作成する。
ここを参考に、Docker Hubのアクセストークンを発行する。
以下を参考に、API GatewayがCloud Watch Logsに書き込むためのIAM Roleを作成する。 Role名は「serverlessApiGatewayCloudWatchRole」とすること。
Cognitoのユーザープールを以下条件で作成する。
- CognitoユーザープールのサインインオプションはEメールに設定する (後から変更できない)
- Hosted UIを有効にする
- スコープにopenid, email, profile、phone、aws.cognito.signin.user.adminを追加する
- 許可されているコールバック URL、許可されているサインアウト URLに
http://localhost:8080
、GブレイバーバーストをホストしているURLを設定する - 検証メッセージの検証タイプを
Link
に設定する
Google Play ConsoleでOAuth2.0クライアントIDを以下条件で追加する。 この時に生成されるクライアントIDとクライアントシークレットを控えておく。
- 承認済みのリダイレクト URIに
https://<Cognitoのドメイン>/oauth2/idpresponse
を追加する
CognitoのアイデンティティプロバイダーにGoogleを以下条件で追加する。
- 許可されたスコープは
profile email openid
を指定 - 属性マッピングは以下のように設定
Cognito属性 | Google属性 |
---|---|
picture | picture |
preferred_username | name |
CgonitoのホストされたUIのID プロバイダーにGoogleを追加する。
pm ci
npm run build
ローカル環境に以下の環境変数を定義する。
環境変数名 | 記載内容 |
---|---|
SERVICE | デプロイする環境のサービス名、gbraver-burst-sls-dev、gbraver-burst-sls-prodなどを記入する |
STAGE | デプロイする環境のステージ名を記入する |
ALLOW_ORIGIN | RestAPIサーバのAccess-Control-Allow-Origin、本APIを利用するサイトのURLを記載する |
TEST_ALLOW_ORIGIN | RestAPIサーバのAccess-Control-Allow-Origin、本APIにテスト目的で接続するサイトのURLを記載する |
COGNITO_USER_POOL_ID | CognitoのユーザープールID |
COGNITO_CLIENT_ID | CognitoのクライアントID |
MATCH_MAKE_ECR_REPOSITORY_NAME | 2. マッチメイク用ECRリポジトリ作成で作成したマッチメイク用ECRのリポジトリ名 |
DOCKER_IMAGE_TAG | デプロイするDockerイメージのタグ、gitのコミットタグをセットする想定 |
DOCKER_USER | Docker Hubのユーザ名 |
DOCKER_TOKEN | Docker Hubのアクセストークン、詳細はここを参照 |
AWS_DEFAULT_REGION | デプロイ先のAWSリージョン |
VPC_SUBNET_COUNT | FARGATEが動作するVPCのPublicサブネット個数 |
./deploy-serverless.bash
./remove-serverless.bash
./push-match-make-container.bash
# 通常デプロイ
./deploy-backend-ecs.bash
# ホットスワップデプロイ
./deploy-backend-ecs-with-hotswap.bash
./remove-backend-ecs.bash
- serverless dashboardにサインインし、このページからasccesskeyを生成する
- AWSで作業用IAMユーザーのアクセスキーを生成する
- 上記IAMユーザーには権限設定は不要
- CIでAWSにアクセスする作業は行っておらず、serverless cliのAWS認証にのみアクセスキーを利用しているため
ここを参考にGitHub ActionsのSecretsを設定する。 以下が設定内容である。
シークレット名 | 値 |
---|---|
SERVERLESS_ACCESS_KEY | serverless dashboardから発行したaccesskey |
AWS_ACCESS_KEY_ID | AWS IMAユーザー アクセスキーID |
AWS_SECRET_ACCESS_KEY | AWS IMAユーザー シークレットキー |
以下がGブレイバーバーストで利用するビルド環境である。
# | ビルド環境 | 説明 |
---|---|---|
BLD-01 | ubuntu/standard/7.0 | AWS管理イメージ、詳細はここ を参照 |
- serverless dashboardにサインインし、このページからasccesskeyを生成する。
AWS Parameter Storeに以下の値をセットする。
名前 | 種類 | 値 |
---|---|---|
/GbraverBurst/dev/service | String | 環境変数定義の定義 SERVICE を参照 |
/GbraverBurst/dev/stage | String | 環境変数定義の定義 STAGE を参照 |
/GbraverBurst/dev/allowOrigin | String | 環境変数定義の定義 ALLOW_ORIGIN を参照 |
/GbraverBurst/dev/testAllowOrigin | String | 環境変数定義の定義 TEST_ALLOW_ORIGIN を参照 |
/GbraverBurst/dev/cognitoUserPoolId | String | 環境変数定義の定義 COGNITO_USER_POOL_ID を参照 |
/GbraverBurst/dev/cognitoClientId | String | 環境変数定義の定義 COGNITO_CLIENT_ID を参照 |
/GbraverBurst/dev/matchMakeEcrRepositoryName | String | 環境変数定義の定義 MATCH_MAKE_ECR_REPOSITORY_NAME を参照 |
/GbraverBurst/dev/dockerUser | SecureString | 環境変数定義の定義 DOCKER_USER を参照 |
/GbraverBurst/dev/dockerToken | SecureString | 環境変数定義の定義 DOCKER_TOKEN を参照 |
/GbraverBurst/dev/vpcSubnetCount | String | 環境変数定義の定義 VPC_SUBNET_COUNT を参照 |
/GbraverBurst/dev/serverlessAccessKey | SecureString | serverless dashboardから発行したaccesskey |
以下のCodeBuildプロジェクトを生成する。
# | 概要 | BuildSpec | ビルド環境 |
---|---|---|---|
DEVCB-01 | フルデプロイ(環境新規作成時に利用する想定) | buildspec.yml | BLD-01 |
DEVCB-02 | serverless削除 | buildspec.sls.remove.yml | BLD-01 |
DEVCB-03 | バックエンドECS削除 | buildspec.backendEcs.remove.yml | BLD-01 |
DEVCB-04 | serverlessデプロイ(CI/CDで既存環境をアップデートする際に利用する想定) | buildspec.sls.yml | BLD-01 |
DEVCB-05 | バックエンドecsをホットスワップデプロイ(CI/CDで既存環境をアップデートする際に利用する想定) | buildspec.backendEcs.yml | BLD-01 |
DEVCB-04、DEVCB-05を並列実行するプロジェクトを作成する。 ただし、事前にDEVCB-01で環境を作成すること。
AWS Parameter Storeに以下の値をセットする。
名前 | 種類 | 値 |
---|---|---|
/GbraverBurst/prod/service | String | 環境変数定義の定義 SERVICE を参照 |
/GbraverBurst/prod/stage | String | 環境変数定義の定義 STAGE を参照 |
/GbraverBurst/prod/allowOrigin | String | 環境変数定義の定義 ALLOW_ORIGIN を参照 |
/GbraverBurst/prod/testAllowOrigin | String | 環境変数定義の定義 TEST_ALLOW_ORIGIN を参照 |
/GbraverBurst/prod/cognitoUserPoolId | String | 環境変数定義の定義 COGNITO_USER_POOL_ID を参照 |
/GbraverBurst/prod/cognitoClientId | String | 環境変数定義の定義 COGNITO_CLIENT_ID を参照 |
/GbraverBurst/prod/matchMakeEcrRepositoryName | String | 環境変数定義の定義 MATCH_MAKE_ECR_REPOSITORY_NAME を参照 |
/GbraverBurst/prod/dockerUser | SecureString | 環境変数定義の定義 DOCKER_USER を参照 |
/GbraverBurst/prod/dockerToken | SecureString | 環境変数定義の定義 DOCKER_TOKEN を参照 |
/GbraverBurst/prod/vpcSubnetCount | String | 環境変数定義の定義 VPC_SUBNET_COUNT を参照 |
/GbraverBurst/prod/serverlessAccessKey | SecureString | serverless dashboardから発行したaccesskey |
以下のCode Buildプロジェクトを生成する。
# | 概要 | BuildSpec | ビルド環境 |
---|---|---|---|
PROCB-01 | デプロイ | buildspec.prod.yml | BLD-01 |
PROCB-02 | serverless削除 | buildspec.sls.remove.prod.yml | BLD-01 |
PROCB-03 | バックエンドECS削除 | buildspec.backendEcs.remove.prod.yml | BLD-01 |
# 画面の指示に従い、変更内容を記入する
npx changeset
npx changeset version
npm run build
npx changeset publish
# package.jsonフォーマット
# 本コマンドの実行にはfixpackが必要
# https://www.npmjs.com/package/fixpack
fixpack
#License MIT