Project

General

Profile

Bug #15

Updated by Redmine Admin 2 months ago

 
 # EndEnd Quality Check Deployment 
 version 02: 2026-04-23 


 <!-- @import "[TOC]" {cmd="toc" depthFrom=2 depthTo=3 orderedList=false} --> 

 <!-- code_chunk_output --> 

 - [概要](#概要) 
   - [デプロイターゲット](#デプロイターゲット) 
   - [作成されるリソース・権限他](#作成されるリソース権限他) 
 - [デプロイメント手順](#デプロイメント手順) 
   - [params.jsonの作成](#paramsjsonの作成) 
   - [環境変数の設定](#環境変数の設定) 
   - [CloudFormation コマンド](#cloudformation-コマンド) 
 - [params.json](#paramsjson) 
   - [create-stack 実行時に指定する主なパラメータ(説明)](#create-stack-実行時に指定する主なパラメータ説明) 
   - [更新時の反映方針(運用ルール)](#更新時の反映方針運用ルール) 
 - [その他](#その他) 
   - [Lambda環境変数](#lambda環境変数) 

 <!-- /code_chunk_output --> 

 ## 概要 
 EndEndツールのコールログに記録されるPESQ値をチェックし閾値未満である場合にメール通知を行うLambda関数をデプロイ。 
 CloudFormation テンプレート、**`endend-quality-check.yml`** を使用してデプロイ。 


 configuration.png 
 ![](clipboard-202604240824-ymitr.png) 
 

 <img src="configuration.png" width=400px/> 

 ### デプロイターゲット 
 2026年4月時点では以下のAWSアカウントにデプロイ。 
 - `IPVC-TOKYO` `AccountID :311376832000` 
 - `IPVC-OSAKA` `AccountID :381491903436` MFAアクセス 

 ### 	 作成されるリソース・権限他 
 `endend-quality-check.yml`で作成されるリソース・権限は以下。 

 - 	 AWS::IAM::Role 	 `endend-role-quality-check-lambda` 
 - 	 AWS::SNS::Topic 	 `endend-sns-quality-check-alarm` 
 - 	 AWS::Logs::MetricFilter 	 - Log Group EndEnd に対しパターン [ a="*,0,*" ] で設定 
 - 	 AWS::CloudWatch::Alarm `endend-pesq-quality-<StackId>`、Namespace `EC2/Application` 
 - 	 AWS::Lambda::Function 	 `endend-quality-alert` 
 - 	 AWS::Lambda::Permission 	 - CloudWatchからLambdaの呼び出しを許可 

 <div style="page-break-before:always"></div> 

 ## デプロイメント手順 

 ### params.jsonの作成 
 CloudFormation のパラメータは JSON ファイルで渡す。`./params`ディレクトリ配下に`EndEnd監視システム名`をつけたjsonファイルを作成し配置。 

 EndEnd監視システム、#2(IPVC-OSAKA)の例: `#2_ipvc-osaka_params.json` 

 ```json 
 [ 
   {"ParameterKey":"SystemName","ParameterValue":"endend"}, 
   {"ParameterKey":"Environment","ParameterValue":"#2(ipvc-osaka)"}, 
   {"ParameterKey":"AlarmNotificationEmail","ParameterValue":"sbc-tech@ntt.com"}, 
   {"ParameterKey":"SBCLogGroupName","ParameterValue":"EndEnd"}, 
   {"ParameterKey":"AlarmFilterPattern","ParameterValue":"[ a=\"*,0,*\" ]"}, 
   {"ParameterKey":"ExistingLambdaRoleArn","ParameterValue":""}, 
   {"ParameterKey":"PermissionBoundaryArn","ParameterValue":""}, 
   {"ParameterKey":"MonitoringPeriod","ParameterValue":"60"} 
 ] 

 ``` 
 note:  
 - `SystemName`と`Environment`はメールのSubjectに利用される。 
 - `PESQThreshold`: `2.6`はCloudFormationテンプレートで固定。 



 ### 環境変数の設定 
 アカウントごとの環境変数を設定し、デプロイする。 

 - wxc-dev-work 
 ```bash 
 PARAMS_FILE="${PARAMS_FILE:-params/wxc-dev_params.json}" 
 REGION="${REGION:-ap-northeast-1}" 
 PROFILE="${PROFILE:-wxc-dev-work}" 

 echo $PARAMS_FILE 
 echo $REGION 
 echo $PROFILE 
 ``` 

 - #2_ipvc-osaka 
 ```bash 
 PARAMS_FILE="${PARAMS_FILE:-params/#2_ipvc-osaka_params.json}" 
 REGION="${REGION:-ap-northeast-3}" 
 PROFILE="${PROFILE:-381491903436-mfa}" 
 ``` 

 - #1_ipvc-tokyo 
 ```bash 
 PARAMS_FILE=#1_ipvc-tokyo_params.json 
 REGION=ap-northeast-1 
 PROFILE=311376832000 
 ``` 

 ### CloudFormation コマンド 
 #### create-stack  
 ```bash 
 aws cloudformation create-stack \ 
   --stack-name endend-quality-check \ 
   --template-body file://endend-quality-check.yml \ 
   --parameters file://params/"${PARAMS_FILE}" \ 
   --capabilities CAPABILITY_NAMED_IAM \ 
   --region "${REGION}" \ 
   --profile "${PROFILE}" && \ 
 aws cloudformation wait stack-create-complete \ 
   --stack-name endend-quality-check \ 
   --region "${REGION}" \ 
   --profile "${PROFILE}" && \ 
 echo "CREATE COMPLETE" 
 ``` 

 #### update-stack  
 ```bash 
 aws cloudformation update-stack \ 
   --stack-name endend-quality-check \ 
   --template-body file://endend-quality-check.yml \ 
   --parameters file://params/"${PARAMS_FILE}" \ 
   --capabilities CAPABILITY_NAMED_IAM \ 
   --region "${REGION}" \ 
   --profile "${PROFILE}" && \ 
 aws cloudformation wait stack-update-complete \ 
   --stack-name endend-quality-check \ 
   --region "${REGION}" \ 
   --profile "${PROFILE}" && \ 
 echo "UPDATE COMPLETE" 
 ``` 
 #### delete-stack 
 ```bash 
 aws cloudformation delete-stack \ 
   --stack-name endend-quality-check \ 
   --region "${REGION}" \ 
   --profile "${PROFILE}" && \ 
 aws cloudformation wait stack-delete-complete \ 
   --stack-name endend-quality-check \ 
   --region "${REGION}" \ 
   --profile "${PROFILE}" && \ 
 echo "DELETE COMPLETE" 
 ``` 


 <div style="page-break-before:always"></div> 

 ## params.json 
 ### create-stack 実行時に指定する主なパラメータ(説明) 

 以下は `aws cloudformation create-stack` 実行時に指定する`params.json`のパラメータ一覧。`ExistingLambdaRoleArn` と `PermissionBoundaryArn` の扱いに注意(後述)。 

 | パラメータ | 必須 | デフォルト | 説明 / 備考 | 
 |---|:---:|---|---| 
 | `SystemName` | 必須 | `endend` | メール件名に使用。 | 
 | `Environment` | 必須 | `#1(IPVC-Tokyo)` | 環境名。メール件名に使用。`#1(ipvc-tokyo)` or `#1(ipvc-osaka)` | 
 | `AlarmNotificationEmail` | 必須 | なし | 通知先メールアドレス。 | 
 | `SBCLogGroupName` | デフォルト | `EndEnd` | 監視対象の CloudWatch Logs の LogGroup 名。 | 
 | `AlarmFilterPattern` | 必須 | `[ a="*05034881413*" && a="*,0,*" ]` | MetricFilter のパターン。特殊文字を含むためシングルクォートで囲んで指定。 | 
 | `PESQThreshold` | デフォルト | `2.6` | Lambda 内で使用する閾値(float)。 | 
 | `MonitoringPeriod` | デフォルト | `60` | アラームの評価間隔(秒)。CloudWatch の評価間隔と連動するため `60` 固定。 | 
 | `AlarmFunction` | デフォルト | `quality-alert` | 作成する Lambda の名前。変更すると Lambda が置換される。 | 
 | `ExistingLambdaRoleArn` | 任意 | 空 (`""`) | 既存の Lambda 実行ロールの ARN を指定するとテンプレートはロールを作成せず既存ロールを使用。ARN をシングルクォートで囲む。 | 
 | `PermissionBoundaryArn` | 任意 | 空 (`""`) | 新規ロール作成時に適用する Permissions Boundary の ARN。組織で Boundary が必須な場合は必ず指定。(スタック実行ユーザに `iam:PutRolePermissionsBoundary` 権限が必要)。 | 

 #### 補足: `ExistingLambdaRoleArn` / `PermissionBoundaryArn` の扱い 

 - `ExistingLambdaRoleArn` を指定すると(ARN を渡す)テンプレートは既存ロールを使用し、新しい IAM ロールは作成されません。空文字を指定するとテンプレートで新規ロールを作成。 
 - 組織ポリシーで Permissions Boundary の適用が必須な場合、`PermissionBoundaryArn` を指定。新規ロール作成時に Boundary を適用するため、スタック実行ユーザに `iam:CreateRole` と `iam:PutRolePermissionsBoundary`(または十分な IAM 権限)が必要。 

 Lambda関数用のロールがすでにある場合と、新規に作成する場合でparms.jsonの設定を変更する必要がある。 


 <div style="page-break-before:always"></div> 

 ### 更新時の反映方針(運用ルール) 

 テンプレートやパラメータを変更する際の最小限の運用ルール。 

 - 再作成を必要とするパラメータ( `delete-stack` → `create-stack` による再作成): 
   - `AlarmFunction`(Lambda 名) 
   - `ExistingLambdaRoleArn`(空 ⇄ ARN の切替はロール作成条件を変える) 
   - `SBCLogGroupName`(MetricFilter の監視対象を変更すると再作成が発生する場合がある) 

 - アップデイトで反映: 
   `SystemName`, `Environment`,`AlarmFilterPattern`, `MonitoringPeriod`, `PESQThreshold`, `AlarmNotificationEmail`  


 ## その他 
 ### Lambda環境変数 

 以下はCloudFormation パラメータとデプロイ時に Lambda 実行環境に注入される環境変数の対応表です。 

 | CloudFormation パラメータ / リソース | Lambda 環境変数 | 説明 | 
 |---|---|---| 
 | `SystemName` | `SYSTEM_NAME` | メール件名に使用。 | 
 | `Environment` | `ENVIRONMENT` | 環境名。メール件名に使用。 | 
 | `AlarmNotificationEmail` | `ALARM_NOTIFICATION_EMAIL` | 通知先メールアドレス(SNS サブスクリプション確認が必要)。 | 
 | `SBCLogGroupName` | `LOG_GROUP_NAME` | 監視対象 CloudWatch Logs の LogGroup 名。 | 
 | `AlarmFilterPattern` | `ALARM_FILTER_PATTERN` | MetricFilter と同一のフィルターパターン。シェルでクォートして指定。 | 
 | `MonitoringPeriod` | `PERIOD` | Lambda 内で `int()` して使用する秒数。CloudWatch の評価間隔と連動するため `60` に固定。 | 
 | `PESQThreshold` | `PESQ_THRESHOLD` | Lambda 内で `float()` して使用する閾値(例: `2.6`)。 | 
 | SNS Topic(出力/リソース) | `SNSTopic` | テンプレートで作成される SNS Topic の ARN が注入される(Topic ARN)。 | 

Back