はじめに
ソリューションアーキテクトに求められる視点を整理してみました。
今回は、EFSへのファイルアップロードを検知して、通知するソリューションです。実務や試験で、ご参考にして頂けましたら、幸いです。
EFSに保存されているファイルやEFSに入ってくるファイルがあれば、それをトリガーできますか?S3のように、EFSにEventbridgeを使用できますか?
Amazon EFS は現在、ファイルの作成または変更に関する EventBridge 通知をサポートしていません。 これは、EFS への書き込みが API 経由で行われないため、EventBridge をトリガーするものがないためです。
Amazon S3のように、Amazon EFS(Elastic File System)に対して直接EventBridgeを使用してイベントをトリガーすることは現時点ではサポートされていません。Amazon S3はオブジェクトストレージであり、オブジェクトの作成、削除、更新などのイベントをトリガーする機能が組み込まれていますが、EFSはファイルシステムであり、同様のイベントトリガー機能は提供されていません。
アーキテクトに求められる視点
EFSへのファイルアップロードを検知して、通知するソリューションを教えて下さい。
パターン その1
Lambda 関数 LambdaFunctionCheckEFSFileSystemStatusを使って、CloudWatch カスタムメトリクスとして表示させ、 CloudWatch アラームより SNS を使用した通知 を行う。
参考記事
パターン その2
ファイルアップロードのストレージをEFSではなく、Amazon S3 バケットに移行します。処理コードを更新して Amazon S3 を使用します。オブジェクトが作成されたときに Lambda 関数を呼び出すように S3 イベント通知を設定します。
パターン その3
EFSのファイルシステムに対する操作を監視し、イベントをトリガーするための代替手段を構築する。
Amazon EFSに対して直接EventBridgeを使用してイベントをトリガーすることはできませんが、CloudWatch LogsとLambdaを組み合わせることで、EFSファイルシステムの操作を監視し、イベントをトリガーするソリューションを構築することができます。この方法により、EFSファイルシステムの操作に対するリアルタイムの監視と通知が可能になります。
CloudWatch LogsとLambdaを使用した監視と通知
-
EFSファイルシステムのログをCloudWatch Logsに送信
EFSファイルシステムのログをCloudWatch Logsに送信する設定を行います。これにより、ファイルシステムに対する操作(例:ファイルの作成、削除、更新)をログとして収集できます。 -
CloudWatch Logsでログフィルターを設定
CloudWatch Logsで特定のログイベントをフィルタリングするログフィルターを設定します。これにより、特定の操作に対するログイベントをキャプチャできます。 -
CloudWatch Logsでログフィルターに基づくアラームを設定
CloudWatch Logsでログフィルターに基づくアラームを設定し、特定のログイベントが発生した際にアラームをトリガーします。 -
CloudWatchアラームをEventBridgeルールでトリガー
CloudWatchアラームをEventBridgeルールでトリガーし、特定のアクション(例:Lambda関数の実行、SNS通知の送信)を実行します。
手順の詳細
ステップ1: EFSファイルシステムのログをCloudWatch Logsに送信
-
EFSファイルシステムの作成
AWS Management Consoleにログインし、EFSサービスに移動します。
「Create file system」をクリックし、必要な設定を行ってファイルシステムを作成します。 -
EFSファイルシステムのログ設定
EFSファイルシステムの「Monitoring」セクションで、CloudWatch Logsへのログ送信を有効にします。
ロググループを作成し、ログストリームを設定します。
ステップ2: CloudWatch Logsでログフィルターを設定
-
CloudWatch Logsに移動
AWS Management Consoleにログインし、CloudWatchサービスに移動します。 -
ロググループの選択
EFSファイルシステムのログが送信されるロググループを選択します。 -
ログフィルターの作成
「Create metric filter」をクリックし、フィルターパターンを設定します。
例:特定のファイル操作(例:ファイルの作成)をフィルタリングするパターンを設定します。
ステップ3: CloudWatch Logsでログフィルターに基づくアラームを設定
-
メトリックフィルターの設定
メトリックフィルターの名前とフィルターパターンを設定し、フィルターを作成します。 -
アラームの作成
メトリックフィルターに基づいてアラームを作成します。
アラーム条件を設定し、特定のログイベントが発生した際にアラームをトリガーします。
ステップ4: CloudWatchアラームをEventBridgeルールでトリガー
-
EventBridgeに移動:
AWS Management Consoleにログインし、EventBridgeサービスに移動します。 -
ルールの作成
「Create rule」をクリックし、ルール名を入力します。
イベントソースとして「CloudWatch Alarms」を選択し、先ほど作成したアラームを指定します。 -
ターゲットの設定
ターゲットとしてLambda関数やSNSトピックを選択し、必要なアクションを設定します。