AWS
収集可能なイベント
AWSが提供するAmazon EventBridgeの機能を利用して、各種イベントデータをsrestに送信できます。
イベントタイプ | イベントソース | イベントの概要 |
---|---|---|
Amazon CloudWatch | aws.cloudwatch | CloudWatchアラーム状態の更新 |
Amazon EC2 | aws.ec2 | インスタンスステータスの変更・AMIイベント・セキュリティグループイベント・スナップショットイベント |
Amazon ECS | aws.ecs | タスクステータスの変更・サービスアクション・コンテナインスタンスの状態変更・タスク定義の登録 |
Amazon GuardDuty | aws.guardduty | 異常なAPIの呼び出し・不審なインスタンスの通信・トロイの木馬・ルートキットなどの脅威検出 |
Amazon Inspector2 | aws.inspector2 | Inspectorが検出したセキュリティ評価の更新 |
Amazon RDS | aws.rds | インスタンスステータスの変更・DBパラメータグループの変更・スナップショットイベント・フェイルオーバーイベント |
Amazon Security Hub | aws.securityhub | SecurityHubが検出したセキュリティ上の問題の更新通知・セキュリティスコアの更新 |
AWS Health | aws.health | スケジュールされたメンテナンス・アカウント固有の問題 |
INFO
EventBridgeによるサービス連携は今後拡充予定です。
イベントソースは、EventBridgeに含まれる source
パラメータの値を指します。
以下はRDSがスナップショットを作成した際、EventBridgeに送信されるイベントの例です。
{
"version": "0",
"id": "xxx",
"detail-type": "RDS DB Cluster Snapshot Event",
"source": "aws.rds",
"account": "xxx",
"time": "2024-01-05T13:15:18Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:rds:ap-northeast-1:xxx"
],
"detail": {
"EventCategories": [
"backup"
],
"SourceType": "CLUSTER_SNAPSHOT",
"SourceArn": "arn:aws:rds:ap-northeast-1:xxx",
"Date": "2024-01-05T13:15:18.495Z",
"Message": "Automated cluster snapshot created",
"SourceIdentifier": "rds:production-2024-01-05-13-15",
"EventID": "RDS-EVENT-0169"
}
}
srestでは、EventBridgeが受信したイベントをsrestに転送する形で、ダッシュボード上に表示します。
設定手順
アプリケーションのデプロイ
- AWSにログインし、検索フィールドに
Serverless Application Repository
と入力。検索結果から [Serverless Application Repository] のアイコンを開きます。 - サイドバーから [利用可能なアプリケーション] を開き、[プライベートアプリケーション] タブを選択。
- [カスタム IAM ロールまたはリソースポリシーを作成するアプリを表示する] にチェックを付けます。
- 検索フィールドに
aws-event-forwarder
と入力。検索結果から [aws-event-forwarder] を開きます。 - [このアプリがカスタム IAM ロールを作成することを承認します。] にチェックを付けて、[デプロイ] ボタンをクリックします。
- セットアップが進むとLambdaのコンソールに移動します。
- [デプロイ] タブを開き、デプロイ履歴の [ステータス] が [完了] に更新されるまで数分待ちます。
ステータスが [完了] に更新された直後から、イベントログがsrestに送信されるようになります。
TIP
- Serverless Application Repositoryからデプロイするアプリケーションは、CloudFormationやTerraformのリソースとして定義することも可能です。
- CloudFormation: AWS::Serverless::Application
- Terraform: aws_serverlessapplicationrepository_cloudformation_stack
通知するイベントを限定する
aws-event-forwarder
は、デフォルトでsrestがサポートするすべてのイベントを収集します。通知するサービスを限定するには、以下の手順で設定を変更してください。
- EventBridgeのコンソールを開き、[ルール] を開きます。
- 検索フィールドに
aws-event-forwarder
と入力。検索結果から [serverlessrepo-aws-event-forwarder-EventsRule-xxx] をクリックします。 - [イベントパターン] タブから [編集] をクリックします。
- [イベントパターン] フィールドで送信したいイベントパターンを再定義して、[次へ] をクリックします。確認画面を進み、[ルールの更新] をクリックします。
ワイルドカードフィルターを使ったイベントのフィルタリング
ワイルドカードフィルターを使うことで、srestに送信するイベントをフィルタリングできます。
例えば detail.SourceArn
フィールドに staging-
という文字列を含むイベントのみを通知したい場合、以下のようなイベントパターンを設定します。
{
"source": ["aws.rds"],
"detail": {
"SourceArn": [{
"wildcard": "arn:aws:rds:ap-northeast-1:xxx:cluster-snapshot:staging-*"
}]
}
}
TIP
EventBridgeで指定可能なイベントパターンの詳細は、Amazon EventBridge event patterns を参照してください。
通知テスト
ダッシュボード上でイベントログを表示するには、実際にAWSの各種サービスからイベントを発生させる必要があります。 例えば、GuardDutyでテストアラートを発生させることで、srestにイベントログが表示されることを確認できます。
TIP
- イベント通知テストはGuardDuty以外でも確認できます。 例えばCloudWatchを利用してる場合、アラームの状態を変更することでイベントログを確認できます。 同様にECSを利用している場合、タスクステータスの変更をトリガーにイベントログを確認することもできます。
以下はGuardDutyでテストイベントを発生させる手順です。
DANGER
- 対象アカウントでGuardDutyが有効化されている必要があります。
- GuardDutyは従量課金サービスです。テストで利用する際は 料金 に注意してください。
- GuardDutyが検知したイベントをChatbotなどに通知する設定がある場合、サンプルイベントが大量に配信される可能性があるので注意してください。
GuardDutyのコンソールを開き、サイドバーから [設定] をクリックします。
[検出結果のサンプル] から [検索結果サンプルの作成] ボタンをクリックします。
srestのダッシュボードを開き、[GuardDuty] を開きます。
数分後にページをリロードすると、[アラート一覧] にGuardDutyから送信したイベントログが表示されます。
連携の一時的な停止
EventBridgeのコンソールから、aws-event-forwarder
のルールを無効化することで、一時的にイベントの通知を停止できます。
- EventBridgeのコンソールを開き、サイドバーから [ルール] をクリックします。
- [ルール] の一覧で、検索フィルターに
aws-event-forwarder
と入力。検索結果から [serverlessrepo-aws-event-forwarder-EventsRule-xxx] を開きます。 - ルールの詳細ページが開くので、[無効化] ボタンをクリックします。
- 確認ダイアログが開いたら [無効化] をクリックします。
連携の解除
CloudFormationのスタックを削除することで、EventBridgeとsrestの連携を解除できます。
- CloudFormationのコンソールを開き、スタックの一覧から
serverlessrepo-aws-event-forwarder
を選択し、[削除] ボタンをクリックします。 - 確認ダイアログが開いたら [削除] をクリックします。
スタックの削除には数分の時間を要します。 削除が完了すると、srestとの連携が解除されます。