AWS
AWS インテグレーションで収集するデータ
AWS インテグレーションを行うことで、srest は Amazon EventBridge から受信可能なデータおよびコストデータを収集します。
コストデータの収集
srest は AWS インテグレーションによって作成された IAM ロールを使用して、AWS Cost Explorer API から自動的にコストデータを取得します。
WARNING
- お客様のアカウントに作成された IAM ロールを利用するため、AWS Organizations マスターアカウントによる AWS Cost Explorer API のアクセス権限を制限している場合、srest はコストデータを取得することができません。
- コストデータの取得はインテグレーションから数分かかります。
Amazon EventBridge からのデータ収集
AWS が提供する Amazon EventBridge の機能を利用して、各種イベントデータを srest に送信できます。
イベントタイプ | イベントソース | イベントの概要 |
---|---|---|
Amazon CloudWatch | aws.cloudwatch | CloudWatch アラーム状態の更新 |
Amazon EC2 | aws.ec2 |
|
Amazon ECS | aws.ecs |
|
Amazon GuardDuty | aws.guardduty |
|
Amazon Inspector2 | aws.inspector2 | Inspector が検出したセキュリティ評価の更新 |
Amazon RDS | aws.rds |
|
Amazon Security Hub | aws.securityhub |
|
AWS Health | aws.health |
|
INFO
- GuardDuty や Security Hub、Inspector イベントを収集するには、事前にそれぞれのサービスを有効化しておく必要があります。 それぞれのサービスを利用するには料金が発生しますので、詳しくは AWS のページをご確認ください。
- AWS Healthで取得可能なイベントは、
aws-event-forwarder
をデプロイしたリージョンのみ有効となります。 リージョン固有ではないグローバルイベントを取得するには、米国東部 (バージニア北部) リージョンにアプリケーションをデプロイする必要があります。 - 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 の [設定] を開きます。
- [外部 ID を取得] をクリックします。
- 表示された外部 ID をコピーします。
- インテグレーション対象となる AWS コンソール にログインします。
- 画面上部の検索フィールドに
Serverless Appliation Repository
と入力し、検索結果から [Serverless Application Repository] ページに移動します。 - サイドバーから [Available applications] を選択し、[Private applications] タブを開きます。
- [Show apps that create custom IAM roles or resource policies] にチェックを付け、検索バーに
aws-event-forwarder
と入力。検索結果から [aws-event-forwarder] を選択します。 - コピーした外部 ID を [ExternalId] に貼り付け、[I acknowledge that this app creates custom IAM roles.] にチェックを付けた上で [Deploy] ボタンをクリックします。
- [Deployments] タブを開き、デプロイ履歴の [Status] が [Update complete] に更新されるまで数分待ちます。
- ステータスが [Update complete] に更新後、[Overview] タブに移動し、画面下部に表示される IAM ロールのリンクを開きます。
- IAM ロールのページに移動後、表示された IAM ロールの [ARN] をコピーします。
- srest で先ほどコピーした ARN を貼り付け、[連携する] ボタンをクリックします。
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 との連携が解除されます。