ヘアサロンアプリでは以下の周辺リソースをデプロイする必要があります。
- 共通処理レイヤー(Layer)
- 定期実行バッチ(batch)
AWS Lambda では複数 Lambda 関数で共通化して利用したい処理をレイヤーとして記述することが出来ます。 本アプリではレイヤーを利用しているので、はじめに以下の手順で、レイヤーをデプロイしてください。
-
template.yaml の修正
backend-> Layer フォルダ内の template.yaml を開き、EnvironmentMap の dev の以下のパラメータ項目を修正する。LayerName
任意のレイヤー名MessageTableName
任意のテーブル名(リマインドメッセージを管理するテーブル)
-
以下コマンドの実行
cd [backend -> Layerのフォルダ]
sam build --use-container
sam deploy --guided
※プロファイル情報(default)以外を使用する場合は指定必要 sam deploy --guided --profile xxx
Stack Name : 任意のスタック名
AWS Region : ap-northeast-1
Parameter Environment: dev
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: Y
#SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation[Y/n]: Y
Save arguments to samconfig.toml [Y/n]: Y
SAM configuration file [samconfig.toml]: 入力せずEnter
SAM configuration environment [default]: 入力せずEnter
Deploy this changeset? [y/N]: y
-
レイヤーバージョンをメモ
デプロイ後、ターミナルの Outputs の項目に、レイヤー ARN とレイヤーバージョンが表示されるので、レイヤーバージョンをメモしておく。
レイヤーバージョンは末尾の数字。
※バージョンはデプロイするたびに更新されるので、初めてのデプロイの場合バージョン 1 となっているのが正しいです。 -
【確認】AWS マネジメントコンソールで Lambda のコンソールを開き、左タブから「レイヤー」を選択し、今回デプロイしたレイヤーがあることを確認する。
本アプリで必要な短期チャネルアクセストークン更新バッチとリマインドメッセージ管理バッチをデプロイします。
短期チャネルアクセストークンは有効期限が取得後 30 日間なので、有効期限の前に短期チャネルアクセストークンを再取得してテーブル更新をするバッチを毎日定刻に動作させています。
リマインドメッセージは DynamoDB テーブルにて管理しており、毎日定刻にバッチを実行してテーブルの値を参照し、リマインドメッセージの送信処理を行っています。
定刻にバッチを動作させるために、Amazon EventBridge(公式ドキュメント)を用いています。
以下の手順に従い、バッチのデプロイを行ってください。
-
template.yaml の修正
backend-> batch フォルダ内の template.yaml を開き、EnvironmentMap の dev の以下のパラメータ項目を修正する。MessageTableName
レイヤーデプロイ時と同様のテーブル名LINEChannelAccessTokenDBName
任意のテーブル名(短期チャネルアクセストークンを管理するテーブル)EventBridgeName
任意のイベントブリッジ名
例) AccessTokenUpdateEventLayerVersion
【1.共通処理レイヤー】の手順にてデプロイしたレイヤーのバージョン番号
例)LayerVersion: 1LoggerLevel
INFO or Debug
例)INFOTTL
True or False (メッセージ情報を自動で削除するか否か)TTLDay
任意の数値 (TTLがTrueのとき、予約情報を登録から何日後に削除するか指定。TTLがFalseのとき、0を入れてください。)
-
以下コマンドの実行
cd [backend -> batch]のtemplate.yamlが配置されたフォルダ]
sam build --use-container
sam deploy --guided
※プロファイル情報(default)以外を使用する場合は指定必要 sam deploy --guided --profile xxx
Stack Name : 任意のスタック名
AWS Region : ap-northeast-1
Parameter Environment: dev
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: Y
#SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation[Y/n]: Y
Save arguments to samconfig.toml [Y/n]: Y
SAM configuration file [samconfig.toml]: 入力せずEnter
SAM configuration environment [default]: 入力せずEnter
Deploy this changeset? [y/N]: y
- テーブルにチャネル ID とチャネルシークレットを登録する
- AWS マネジメントコンソールにログインし、DynamoDB のコンソールを開く
- 先ほど作成した「短期チャネルアクセストークンを管理するテーブル」にて項目の作成を行い、【LINE チャネルの作成】で作成したMessaging APIのチャネルのチャネル ID とチャネルシークレットを以下の通り登録する。 なお、チャネル ID とチャネルシークレットはLINE Developers コンソールのチャネル基本設定にて確認可能。
- チャネルアクセストークン更新の Lambda 関数を実行する
- 【確認】AWS マネジメントコンソールの DynamoDB コンソールにて、チャネルアクセストークンのテーブル開き、本アプリで利用する LINE チャネル ID のデータに channelAccessToken,limitDate,updatedTime の項目が追加されていることを確認する。
以下の手順で、ヘアサロンアプリ本体をデプロイしてください。
-
template.yaml の修正
backend -> APP フォルダ内の template.yaml を開き、EnvironmentMap の dev の以下のパラメータ項目を修正する。
※S3のアクセスログが必要な場合、ACCESS LOG SETTING とコメントされている箇所のコメントを解除してください。LINEOAChannelId
【LINE チャネルの作成】で作成したMessaging API 用のチャネルのチャネル IDLIFFChannelId
【LINE チャネルの作成】で作成したLIFF 用のチャネルのチャネル IDHairSalonShopMasterDBName
任意のテーブル名(ヘアサロンの店舗情報を登録するテーブル)HairSalonReservationInfoDBName
任意のテーブル名(顧客の予約情報を管理するテーブル)HairSalonStaffReservationDBName
任意のテーブル名(ヘアサロンスタッフごとの予約情報を管理するテーブル)LINEChannelAccessTokenDBName
【2.定期実行バッチ】の手順でデプロイした「短期チャネルアクセストークンを管理するテーブル」のテーブル名MessageTable
【2.定期実行バッチ】の手順にてデプロイした、「リマインドメッセージを管理するテーブル」のテーブル名RemindDateDifference
アプリで送信するリマインドメッセージを予約日の何日前に送信するか(1日前の場合-1と設定する)
例)RemindDateDifference: -1 ※特に変更する必要が無い場合、-1を設定してください。FrontS3BucketName
任意のバケット名 ※ヘアサロンアプリのフロント側モジュールを配置するための S3 バケット名になります。LayerVersion
【1.共通処理レイヤー】の手順にてデプロイしたレイヤーのバージョン番号
例)LayerVersion: 1LoggerLevel
INFO or DebugLambdaMemorySize
Lambdaのメモリサイズ
例)LambdaMemorySize: 128 ※特に変更する必要がない場合、最小サイズの128を指定してください。TTL
True or False (予約情報を自動で削除するか否か)TTLDay
任意の数値 (TTLがTrueのとき、予約情報を登録から何日後に削除するか指定。TTLがFalseのとき、0を入れてください。)LogS3Bucket
任意のバケット名(アクセスログを保管するS3の名称)
※アクセスログが必要な場合のみコメントを解除して記載してください。また、他UseCaseアプリを構築済みの方は、他UseCaseアプリのアクセスログバケット名と別名で指定してください。LogFilePrefix
任意の名称(ログファイルの接頭辞)
※アクセスログが必要な場合のみコメントを解除して記載してください。
-
以下コマンドの実行
cd [backend -> APP のフォルダ]
sam build --use-container
sam deploy --guided
※プロファイル情報(default)以外を使用する場合は指定必要 sam deploy --guided --profile xxx
Stack Name : 任意のスタック名
AWS Region : ap-northeast-1
Parameter Environment: dev
Parameter ChannelType [LIFF]: LIFF
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: Y
#SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation[Y/n]: Y
××××× may not have authorization defined, Is this okay? [y/N]: y (全てyと入力)
Save arguments to samconfig.toml [Y/n]: Y
SAM configuration file [samconfig.toml]: 入力せずEnter
SAM configuration environment [default]: 入力せずEnter
Deploy this changeset? [y/N]: y
- API Gateway URLとCloufFrontDomainNameのメモ
デプロイ成功時にOutPutにて表示されるAPI Gateway endpoint URLとCloudFrontDomainNameのメモを取ってください。
- デプロイ時、以下のようなエラーが出た場合、こちらの手順で解消してください。
Export with name xxxxx is already exported by stack sam-app. Rollback requested by user.
- backend -> Layer -> template.yamlを以下を参考に、修正後デプロイ
Outputs: UseCaseLayerName: Description: "UseCaseLayerDev Layer Name" Value: !FindInMap [EnvironmentMap, !Ref Environment, LayerName] Export: Name: HairSalonLayerDev -> こちらを任意の名称に修正
- backend -> batch -> template.yamlを、以下の記載を参考に修正する。複数あるので、すべて修正する。
!ImportValue HairSalonLayerDev -> HairSalonLayerDev を先ほど入力した名称に修正
- backend -> APP -> template.yamlを、以下の記載を参考に修正する。複数あるので、すべて修正する。
!ImportValue HairSalonLayerDev -> HairSalonLayerDev を先ほど入力した名称に修正
- backend -> Layer -> template.yamlを以下を参考に、修正後デプロイ
※本番環境構築中の方はこちらのリンクで次の頁へ移動してください
次の頁へ(本番環境)
※ローカル環境構築中の方はこちらのリンクで次の頁へ移動してください
次の頁へ(ローカル環境)