質問: ### 前提・実現したいこと AWS環境で、WorkDocsというファイル共有システムで共有機能を利用したユーザを CloudTrailで検知し、利用した本人にアラートメールを送信したい。 ### 試したこと CloudwatchのイベントからSNSで送信する。 →何故か、CloudwatchがWorkDocsのイベントをフィルタ検知できない。 (そしてSNSが事前のConfirmを前提としてしているため、不特定多数の配信ができない) イベントフィルタ内容: { "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "workdocs.amazonaws.com" ], "eventName": [ "GetResorceByMe" #ここは適宜調整する想定でおります。 ] } } "source": [ "aws.workdocs" ], 検証のために、EC2のtagを変更したイベントをフィルタ登録した際は以下の通り、検知があります。 フィルタ内容: { "source": [ "aws.tag" ], "detail-type": [ "Tag Change on Resource" ] } --- massege: {"version":"0","id":"b1a29cec-66cf-4824-7a42-53107dabf08a","detail-type":"Tag Change on Resource","source":"aws.tag","account":"xxxxxxxxxxxx","time":"2019-04-20T19:13:05Z","region":"ap-northeast-1","resources":["arn:aws:cloudwatch:ap-northeast-1:xxxxxxxxxxxx:alarm:CloudTrail/DefaultLogGroup_toSNS"],"detail":{"changed-tag-keys":[],"service":"cloudwatch","resource-type":"alarm","version":1.0,"tags":{}}} 2Cloudwatchlogsにアラーとを仕掛ける Cloudwatchのログストリームに対してメトリクスを検知する方法を試しました。 件数や時刻などの通知を発生させることはできました。 ただしこの場合、json要素にユーザ名が無いため、本人に通知する、という要件を満たせませんでした。 --- もしかすると、CloudTrailからputしたS3Putイベントから ファイル内容を読み取り検知するLambdaのほうが実現性が高いのかとも考えております。 迷走しておりますため、率直なアドバイスをいただけますと幸いです。 長文、申し訳ございませんが宜しくお願い致します。
回答: 質問内容がCloudWatchとCloudTrailが混ざっていて、どちらで検知したいかよく見えないですが、 どちらでも検知できれば良いという前提で書きます 少し調べてみましたが、CloudWatchから直接WorkDocsのEventは拾えないようです 参照:サポートされている各サービスからの CloudWatch イベント CloudTrailのWorkSpaceログを利用して、CloudWatchで検知するというのはできるようです 参照:AWS CloudTrail を使用した Amazon WorkDocs API コールのログ記録 そのため、 1WorkDocsのAPIイベントログをCloudTrailで拾う 2 1のログをCloudWatchで検知する という方法でいかかでしょうか