11.2.2 導入(AWS Lambda連携ツール(JP1イベント登録コマンド対応版))
- 〈この項の構成〉
(1) 事前準備
(a) CloudWatch Logs(EC2上のアプリケーションログをJP1イベントとして登録する場合)
JP1イベントとして登録したいアプリケーションログをCloudWatch Logsへ転送するために,対象のEC2にCloudWatch Logsエージェントのインストールとセットアップを行います。
詳細については,Amazon CloudWatchのドキュメントを参照してください。
■クイックスタート:実行中のEC2 LinuxインスタンスにCloudWatch Logsエージェントをインストールして設定する
(b) CloudTail(CloudTrailの証跡をJP1イベントとして登録する場合)
CloudTrailが記録した証跡をJP1イベントとして登録する場合,CloudTailの証跡をCloudWatch Logsへ転送する設定を行います。
詳細については,AWS Cloud Trailのドキュメントを参照してください。
■CloudWatch Logsへのイベントの送信
(c) S3の事前準備
Lambda関数を動作させるため,Lambda関数の設定ファイルを格納するバケットを作成します。
詳細については,Amazon Simple Storage Serviceのドキュメントを参照してください。
■バケットの作成
- 重要
-
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)のLambda関数からダウンロードできる設定とする必要があります。
(d) SQSの事前準備
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)を動作させるため,JP1イベント情報を格納するSQSを作成します。
詳細については,Amazon Simple Queue Serviceのドキュメントを参照してください。
■Amazon SQS(Amazon Simple Queue Service)の開始方法
「ステップ1:キューを作成する」の4.では「FIFO」を選択します。説明に従い,キュー名称のサフィックスに「.fifo」を付与してください。
- 重要
-
-
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)のLambda関数からキューを追加できる設定にする必要があります。
-
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)のJP1イベント送信機能からキューを取得/削除できる設定にする必要があります。
-
(2) インストール
(a) JP1イベント送信機能の配置
JP1イベント送信機能を配置します。
-
JP1イベント送信機能の実行サーバーへログインします。
-
「sendevent_aws_lambda」ディレクトリを任意のディレクトリにコピーします。
-
手順2.でコピーしたディレクトリおよびファイルに必要な権限を付与します。
表11‒5 JP1イベント送信機能のディレクトリ構成 項番
ディレクトリ構成
説明
必要な権限
1
sendevent_aws_lambda
AWS Lambda連携ツールディレクトリ
書込権限※1
2
sendevent_aws.py
AWS Lambda連携ツール
実行権限※2
3
logging.conf
ログ設定ファイル
読込権限※3
- 注※1
-
書込権限:JP1イベント送信機能を実行するユーザーが,書き込みできる権限を付与してください。
- 注※2
-
実行権限:JP1イベント送信機能を実行するユーザーが,実行できる権限を付与してください。
- 注※3
-
読込権限:JP1イベント送信機能を実行するユーザーが,読み込みできる権限を付与してください。
(b) Lambda関数の設定ファイルの配置
Lambda関数の設定ファイルを配置します。
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「S3」を選択します。
-
「11.2.2(1)(c) S3の事前準備」で作成したバケットを選択します。
-
「sendevent_sqs」ディレクトリにある次のファイルをアップロードします。
-
eventconf.csv
-
eventignore.csv
-
logging.conf
-
(c) Lambda関数の作成
Lambda関数を作成します。
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「Lambda」−「関数」を選択します。
-
「関数の作成」をクリックします。
-
「一から作成」を選択し,次の情報を入力します。「関数の作成」をクリックします。
表11‒6 Lambda関数の基本的な情報 項番
項目
値
1
関数名
sendevent_sqs
2
ランタイム
Python 3.7
3
実行ロール
次の権限を持つロールを指定
・CloudWatch Logsに書き込み可能なアクセス権限※1
・S3のファイルを読み込み可能なアクセス権限※2
・SQSに書き込み可能なアクセス権限※3
- 注※1
-
CloudWatch Logsへのアクセスに必要なポリシーを次に示します。
・CreateLogGroup
・CreateLogStream
・PutLogEvents
- 注※2
-
S3へのアクセスに必要なポリシーを次に示します。
・GetObject
- 注※3
-
SQSへのアクセスに必要なポリシーを次に示します。
・SendMessage
-
「Lambda」−「関数」−「sendevent_sqs」−「設定」タブを選択します。
-
「関数コード」に次の表に示す情報を入力します。
表11‒7 Lambda関数の関数コード 項番
項目
値
1
コードエントリタイプ
.zipファイルをアップロード
「sendevent_sqs」ディレクトリの「sendevent_sqs.zip」を選択します。
2
ランタイム
Python3.7
3
ハンドラ
sendevent_sqs.lambda_handler
-
「保存」をクリックします。
(3) セットアップ
(a) JP1イベント送信機能(sendevent_aws_lambda.py)
JP1イベント送信機能のAWS CLI,JP1/Baseに関する設定手順について説明します。
- 設定項目
-
-
AWS CLIインストールディレクトリ
-
JP1/Baseインストールディレクトリ
-
AWSアクセスキーID/シークレットアクセスキー
-
AWSリージョン
-
プロキシ設定
-
SQS URL
-
-
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)のJP1イベント送信機能の実行サーバーへログインします。
-
「11.2.2(2)(a) JP1イベント送信機能の配置」でコピーした「sendevent_aws_lambda」ディレクトリ配下にある「sendevent_aws_lambda.py」をテキストエディターで開きます。
-
18〜25行目のユーザー可変値を設定します。
表11‒8 JP1イベント送信機能(sendevent_aws_lambda.py)のユーザー可変値 項番
パラメーター
必須/任意
内容
1
AWS_CLI_DIR
必須
AWS CLIのインストールディレクトリを指定します。
2
BASE_DIR
必須
JP1/BASEのインストールディレクトリを指定します。
3
ACCESS_KEY
任意
AWSのアクセスキーIDを設定します。ただし,AWS CLI(aws configure)でアクセスキーIDを設定されている場合は設定不要です。※1
4
SECRET_ACCESS_KEY
任意
AWSのシークレットアクセスキーを設定します。ただし,AWS CLI(aws configure)でシークレットアクセスキーを設定されている場合は設定不要です。※1
5
DEFAULT_REGION
必須
AWSのリージョンを設定します。
6
HTTP_PROXY
任意
AWS CLIをプロキシ経由でアクセスする場合は,プロキシURL,ユーザー名,パスワードを指定します。※2
指定されていない場合は,OS側で設定されているHTTP_PROXY/HTTPS_PROXYの値を使用します。
7
HTTPS_PROXY
任意
8
SQS_QUEUE_URL
必須
「11.2.2(1)(d) SQSの事前準備」で作成したJP1イベント情報が格納されているSQSのURLを指定します。
- 注※1
-
指定するアカウントには,次のポリシーが必要です。
・ReceiveMessage
・DeleteMessage
- 注※2
-
設定値については,Amazon Command Line Interfaceのドキュメントを参照してください。
■HTTPプロキシを使用する−プロキシを認証する
設定例を次に示します。
15: ############################################################### 16: # ユーザー可変値(値はダブルクォートでくくる) 17: ############################################################### 18: AWS_CLI_DIR = r"C:\Program Files\Amazon\AWSCLI\bin" 19: BASE_DIR = r"C:\Program Files (x86)\Hitachi\JP1Base" 20: ACCESS_KEY = "AAAAAAAAAA" 21: SECRET_ACCESS_KEY = "BBBBBBBBBB" 22: DEFAULT_REGION = "ap-northeast-1" 23: HTTP_PROXY = "http://username:password@proxy.example.com:1234" 24: HTTPS_PROXY = "http://username:password@proxy.example.com:1234" 25: SQS_QUEUE_URL = "https://sqs.ap-northeast-1.amazonaws.com/999999999999/queue.fifo" 26: ###############################################################
-
手順2.でユーザー可変値を設定したあと,次に示す文字コード/改行コードで保存してください。
表11‒9 JP1イベント送信機能(sendevent_aws_lambda.py)の文字コード/改行コード 項番
項目
値
1
文字コード
UTF-8(BOM無し)
2
改行コード
LF(\n)またはCRLF(\r\n)
(b) JP1イベント送信機能のログ設定ファイル(logging.conf)
JP1イベント送信機能のログに関する設定手順について説明します。
- 設定項目
-
-
ログレベル
-
ログファイル
-
ログローテーションサイズ
-
ログ世代数
-
-
JP1イベント送信機能の実行サーバーへログインします。
-
「11.2.2(2)(a) JP1イベント送信機能の配置」でコピーした「sendevent_aws_lambda」配下にある「logging.conf」をテキストエディターで開きます。
-
次の行を変更します。
11行目
11: level=INFO※1
17行目
17: args=('sendevent_aws_lambda.log', 'a', 2097152, 3, 'utf-8')※2※3※4- 注※1
-
ログレベルを指定します。DEBUG,INFO,WARNING,ERROR,またはCRITICALを指定できます。
- 注※2
-
ログファイルパスを指定します。絶対パス,または相対パスを指定できます。
- 注※3
-
ログローテーションサイズ(バイト)を指定します。
- 注※4
-
ログ世代数を指定します。
詳細については,Pythonのドキュメントを参照してください。
■環境設定ファイルの書式
-
手順2.でユーザー可変値を設定したあと,次に示す文字コード/改行コードで保存してください。
表11‒10 JP1イベント送信機能のログ設定ファイル(logging.conf)の文字コード/改行コード 項番
項目
値
1
文字コード
UTF-8
2
改行コード
LF(\n)またはCRLF(\r\n)
(c) イベント定義ファイル(eventconf.csv)
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)の登録するJP1イベントの設定手順について説明します。
- 設定項目
-
-
JP1イベント登録条件
-
JP1イベント情報
-
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「S3」を選択します。
-
「11.2.2(1)(c) S3の事前準備」で作成したバケットを選択します。
-
手順3.で選択したバケットから「eventconf.csv」を適当なディレクトリへダウンロードします。
バケットにファイルが存在しない場合は「sendevent_sqs」配下にある上記ファイルを,適当なディレクトリへコピーしてください。
-
手順4.でダウンロードまたはコピーした「eventconf.csv」を,テキストエディターで開き,イベント定義を設定します。
-
1行1エントリーで記載してください。
-
1文字目が「#」の行はコメント行となり無視されます。
-
CSV形式で記載してください。
-
JP1イベント定義は上から検索され,はじめに条件に合致した条件のJP1イベントが発行されます。
CSVの各カラムを次の表に示します。
表11‒11 イベント定義の各カラム カラム番号
設定値
必須/任意
値の範囲
1
JP1イベントとして登録したいログを特定する正規表現を指定します。
必須
正規表現がサポートする範囲
2
JP1イベントとして登録したいログのロググループ名を指定します。
省略した場合は,すべてのロググループが対象となります。
任意
AWSのロググループ名がサポートする範囲
3
登録するJP1イベントのイベントIDを指定します。※1
任意
jevsendコマンドの引数-iがサポートする範囲
4
登録するJP1イベントのメッセージテキストを指定します。
省略した場合は,対象のログを使用します。※2
任意
jevsendコマンドの引数-mがサポートする範囲
5
登録するJP1イベントの送信先イベントサーバー名を指定します。※1
任意
jevsendコマンドの引数-dがサポートする範囲
6
登録するJP1イベントの送信元イベントサーバー名を指定します。※1
任意
jevsendコマンドの引数-sがサポートする範囲
7以降
登録するJP1イベントの拡張属性を指定します。※1※3
拡張属性を複数指定する場合は,カラム番号:7以降で指定します。
任意
jevsendコマンドの引数-eがサポートする範囲。
なお,拡張属性値にスペースが含まれる場合でも「"」の指定は不要です。(「"」も拡張属性値と認識されます)
- 注※1
-
省略時は,対応するjevsendコマンドのオプションの省略時の動作となります。
- 注※2
-
1,023バイトを超えるメッセージの場合は,1,023バイトまでを対象とします。
また,メッセージに改行コードが含まれている場合は,改行コードは半角スペースに変換されます。
- 注※3
-
指定された拡張属性以外にAWS Lambda連携ツール(JP1イベント登録コマンド対応版)が追加する拡張属性があります。追加する拡張属性を次に示します。
表11‒12 AWS Lambda連携ツール(JP1イベント登録コマンド対応版)が追加する拡張属性 項番
属性名
値
1
AWS_LAMBDA_LOG_TIMESTAMP
ログがCloudWatch Logsへ登録されたUNIX時間
2
AWS_LAMBDA_LOG_GROUP
対象のロググループ名
3
AWS_LAMBDA_LOG_STREAM
対象のログストリーム名
4
AWS_LAMBDA_SUBSCRIPTION_FILTERS
対象のサブスクリプション フィルター名をコンマ区切りで設定した値
(設定値が1つの場合はコンマなし)
5
AWS_LAMBDA_LOG_DATETIME
項番1を「YYYY/mm/dd HH:MM:SS」に変換した文字列
6
AWS_LAMBDA_MSGID
対象JP1イベント固有のID※
注※ 同じ値であれば,同一のJP1イベントと判断することが可能です。
設定例を次に示します。
#Condition,LogGroupId,EventID,Message,Destination,Source,ExtAttr .*Error.*,LOGGROUP1,1111,message1,DEST_HOST,SRC_HOST,EXATTR1=value1,EXATTR2=value2 .*Warning.*,,2222,message2,DEST_HOST,SRC_HOST,EXATTR1=aaa bbb,EXATTR2=value
-
-
手順5.で設定を変更したあと,次に示す文字コード/改行コードで保存してください。
表11‒13 イベント定義ファイル(eventconf.csv)の文字コード/改行コード 項番
項目
値
1
文字コード
UTF-8
2
改行コード
LF(\n)またはCRLF(\r\n)
-
手順3.のバケットを再度選択し,設定変更した「eventconf.csv」をアップロードします。
(d) イベント除外ファイル(eventignore.csv)
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)の除外するJP1イベントの設定手順について説明します。
- 設定項目
-
-
JP1イベント除外条件
-
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「S3」を選択します。
-
「11.2.2(1)(c) S3の事前準備」で作成したバケットを選択します。
-
手順3.で選択したバケットから「eventignore.csv」を適当なディレクトリへダウンロードします。
バケットにファイルが存在しない場合は「sendevent_sqs」配下にある上記ファイルを,適当なディレクトリへコピーしてください。
-
手順4.でダウンロードまたはコピーした「eventignore.csv」をテキストエディターで開き,イベント定義を設定します。
-
1行1エントリーで記載してください。
-
1文字目が「#」の行はコメント行となり無視されます。
-
CSV形式で記載してください。
-
JP1イベント除外定義は上から順番に判定され,合致した場合JP1イベント対象外となります。
CSVの各カラムを次の表に示します。
表11‒14 イベント除外定義の各カラム カラム番号
設定値
必須/任意
値の範囲
1
JP1イベントとして除外したいログを特定する正規表現を指定します。
必須
正規表現がサポートする範囲
2
JP1イベントとして除外したいログのロググループ名を指定します。
省略した場合は,すべてのロググループが対象となります。
任意
AWSのロググループ名がサポートする範囲
設定例を次に示します。
#Condition,LogGroupId .*INFO.*,LOGGROUP2 .*DEBUG.*,
-
-
手順2.で設定を変更したあと,次に示す文字コード/改行コードで保存してください。
表11‒15 イベント除外ファイル(eventignore.csv)の文字コード/改行コード 項番
項目
値
1
文字コード
UTF-8
2
改行コード
LF(\n)またはCRLF(\r\n)
-
手順3.のバケットを再度選択し,設定変更した「eventignore.csv」をアップロードします。
(e) Lambda関数(sendevent_sqs.py)
Lambda関数の設定手順について説明します。
- 設定項目
-
-
SQS URL
-
S3バケット名
-
実行トリガー(JP1イベント登録対象ログ)
-
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「Lambda」−「関数」−「sendevent_sqs」−「設定」タブを選択します。
-
「環境変数」に次の表に示す内容を設定します。
表11‒16 Lambda関数の環境変数 項番
キー
値
1
SQS_QUEUE_URL
「11.2.2(1)(d) SQSの事前準備」で作成したJP1イベント情報が格納されているSQSのURLを指定します。
2
S3_BUCKET_NAME
「11.2.2(1)(c) S3の事前準備」で作成したAWS Lambda連携ツール(JP1イベント登録コマンド対応版)のLambda関数の設定ファイルを格納するS3バケット名を指定します。
-
「Designer」の「+ トリガーを追加」をクリックし,JP1イベントとして登録したいログをトリガーとして追加します。複数のトリガーを追加できます。
表11‒17 Lambda関数のトリガー 項番
項目
値
備考
1
トリガー
CloudWatch Logs
2
ロググループ
JP1イベントとして登録したいログを含むロググループを指定します。
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)のLambda関数自身が出力するログを含むロググループは指定しないでください。
3
フィルターの名前
フィルターの名前を指定します
4
フィルターパターン
JP1イベントとして登録したいログのフィルターパターンを指定します。
特に指定しなくても問題ありません。
-
「保存」をクリックします。
(f) Lambda関数のログ設定ファイル(logging.conf)
AWS Lambda連携ツール(JP1イベント登録コマンド対応版)のLambda関数のログに関する設定手順について説明します。
- 設定項目
-
-
ログレベル
-
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「S3」を選択します。
-
「11.2.2(1)(c) S3の事前準備」で作成したバケットを選択します。
-
手順3.で選択したバケットから「logging.conf」を適当なディレクトリへダウンロードします。
バケットにファイルが存在しない場合は「sendevent_sqs」配下にある上記ファイルを適当なディレクトリへコピーしてください。
-
手順4.でダウンロードまたはコピーした「logging.conf」をテキストエディターで開き,次の行を変更します。
11行目
11: level=INFO※
- 注※
-
ログレベルを指定します。DEBUG,INFO,WARNING,ERROR,またはCRITICALを指定できます。
詳細については,Pythonのドキュメントを参照してください。
■環境設定ファイルの書式
-
手順2.で設定を変更したあと,次の文字コード/改行コードで保存してください。
表11‒18 Lambda関数のログ設定ファイル(logging.conf)の文字コード/改行コード 項番
項目
値
1
文字コード
UTF-8
2
改行コード
LF(\n)またはCRLF(\r\n)
-
手順3.のバケットを再度選択し,設定変更した「logging.conf」をアップロードします。
-
設定ファイルをアップロードしたあと,Lambda関数を再起動(Lambda関数の保存など)します。
(4) アンインストール
(a) JP1イベント送信機能のアンインストール
JP1イベント送信機能のアンインストール手順を次に示します。
-
JP1イベント送信機能の実行サーバーへログインします。
-
「11.2.2(2)(a) JP1イベント送信機能の配置」でコピーした「sendevent_aws_lambda」ディレクトリを削除します。
(b) Lambda関数のアンインストール
Lambda関数のアンインストール手順を次に示します。
-
ブラウザーからAWSマネジメントコンソールにログインします。
-
サービスから「Lambda」−「関数」を選択します。
-
「sendevent_sqs」を選択し,「アクション」−「削除」を実行します。
-
サービスから「S3」を選択します。
-
「11.2.2(1)(c) S3の事前準備」で作成したバケットを選択します。
-
次のファイルを選択し,「アクション」−「削除」を実行します。
-
entconf.csv
-
eventignore.csv
-
logging.conf
-