この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
はじめに
以前、AWS上のWordPress環境を構築し、そこにプラスでログ収集機能を追加しました。
今回はさらに…
1.収集したログを CloudWatchLogs から S3 へエクスポート
→ ログについては項目3.Apacheアクセスログ収集をご参照ください
2.1日1回 日本時間 0 時に定時実行
3.実行時のエクスポート内容は前日 0:00~23:59 の分
以上3つを満たせる内容を実装したので、いつもの通りブログ形式で振り返っていきます。
これまでの構築
これまでの構築についてはこちらです、よろしければご覧ください。
AWS×WordPress その1 – IAM,KMS
AWS×WordPress その2 – ネットワーク
AWS×WordPress その3 – RDS,EFS
AWS×WordPress その4 – EC2
AWS×WordPress その5 – 監視,通知
AWS×WordPress その6 – DNS,HTTPS
AWS×WordPress 番外編1 – 監視&ログ収集
これまでの構成図
1.構築当初に完成目標としていた構成図はこちら
2.番外編1では、一部機能を追加しました
本記事で実装する範囲
上記の構成図を前提とし、本記事では黄色の吹き出し内にある機能を追加実装します
概要
今回は記載する内容は、追加した機能は次の3つ
S3バケット作成
S3バケットポリシー編集
Lambda用ロールの作成
Lambda作成
トリガーの設定
ではまず、S3バケット作成から
1. S3バケット作成
ログのエクスポート先(=S3バケット)を作成します
S3コンソール > バケットを作成
・バケット名を入力
※ バケット名に大文字は使えません
・リージョンを選択
※ リージョンはCloudWatch Logsを使用しているリージョンを選択する必要があります。
その他はデフォルトのままでOK > バケットを作成
バケット作成完了!
2. S3バケットポリシー編集
作成したバケットのバケットポリシーを設定していきます
S3コンソール > バケット > 作成したバケットを選択 > アクセス許可 > バケットポリシー > 編集をクリック
キャプチャのように、ポリシーのなかに内容を記入 > 変更の保存
Service:リージョン
Resource:バケット ARN
参考:コンソールを使用してログデータを Amazon S3 にエクスポートする
確認 – S3に出力してみる
Cloudwatchコンソール > ログ > ロググループ > 設定したいロググループを選択
アクション > データをAmazon S3にエクスポートを選択
エクスポートをクリックし実行!
エクスポート先に指定したS3バケット > オブジェクト
出力を確認できました!
※確認できない場合は、画面を更新してみてください
CloudwatchLogs → 任氏のS3バケットへのエクスポートが正しく実行できることの確認は完了です
エクスポートが確認できたら、今回作成したオブジェクトは一旦削除します。
3. Lambda用ロールの作成
まずはポリシーを作成します
IAMのコンソールを開く > ポリシー > ポリシーを作成
今回はCloudwatchLogsやS3周りのポリシーが必要になります
ポリシー名や説明を入力、設定に間違いないかも併せて確認し作成!
↓
次にロールを作成します
IAMのコンソールを開く > ロール > ロールを作成
作成したポリシーを検索し選択
ロール名や説明を入力、ポリシーに間違いないかも併せて確認し作成完了!
4. Lambda作成
Lambdaコンソール > 関数の作成
一から作成を選択し、必要項目を入力していきます
関数名:
ランタイム:Python 3.8
作成済みのロールを使用するので既存のロールを使用するを選択
本記事 手順3.Lambda用ロールの作成 で作成したロールを選択 > 関数を作成
作成が完了したらlambda_function.pyを右クリック > Open で内容を編集していきます
今回の内容はこちら
バケット名やロググループ名などは適宜変更が必要になります
5. トリガーの設定
作成したLambdaの画面からトリガーを追加をクリック > EventBridge(CloudWatch Events)を選択
【設定したい内容】
毎日 日本時間の0:00に実行
【今回の設定値】
ルールタイプ:スケジュール式
スケジュール式:*cron(0 15 ? )
※ 日本時間の0:00に動作させたい = UTC+9時間で15**となります
最後に追加をクリックし完了!
これにて設定完了です、お疲れ様でした。
さいごに
今回はS3、Lambda、EventBridgeを使用してログエクスポート機能を実現しました。
あくまで実装時の備忘録的な側面が大きい本記事ですが、
各項目や機能については気になったものは別途記事にて取り上げていこうと思います。
ではまた!