Amazon Web Services (Classic)
DANGER
Amazon Web Services (Classic) によるインテグレーションは将来的に廃止される予定です。 今後新たに AWS とのインテグレーションを行う場合は、Amazon Web Services (v2) をご利用ください。
インテグレーションの仕組み
AWS インテグレーションに必要なアプリケーションは、Serverless Application Repository で提供されており、AWS コンソールや IaC ツールを利用してデプロイすることができます。
アプリケーションをデプロイすると、Cost Explorer API にアクセスするための IAM ロール、EventBridge からイベントログを収集するための EventBridge ルールがお客様の AWS 環境に作成されます。
収集可能なデータ
コストデータ
srest は AWS インテグレーションによって作成された IAM ロールを利用して、Cost Explorer からコストデータを取得します。
WARNING
- コストデータの取得には、お客様のアカウントに作成される IAM ロールを利用します。 AWS Organizations マスターアカウントで Cost Explorer API の制限を行っている場合、srest はコストデータを取得できない点にご注意ください。
- コストデータは 24 時間に 1 回、定期的に AWS アカウントを巡回して取得します。
- インテグレーション後の初回コスト取得までには数分の時間を要します。
EventBridge に収集されたイベントの可視化
AWS が提供する 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 |
|
※イベントソースは、EventBridge に送信されたイベントの source
パラメータの値を指します。
INFO
- GuardDuty や Security Hub、Inspector イベントを収集するには、事前にサービスを有効化しておく必要があります。 サービスにはそれぞれ利用料が発生するため、詳しくは AWS のドキュメントをご確認ください。
- Health で取得可能なイベントは、アプリケーションをデプロイしたリージョンに限定されます。 リージョン固有ではないグローバルイベントを取得するには、米国東部 (バージニア北部) リージョンにアプリケーションをデプロイする必要があります。
- EventBridge によるサービス連携は今後拡充予定です。
次の JSON データは、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 に配送する形で、ダッシュボードを用いたログの可視化を提供します。
設定手順
- 画面右上のユーザーアイコンをクリックして [サービス設定] を開きます。
- サイドバーから [インテグレーション] を選択します。
- [Amazon Web Services (Classic)] の [設定] を開きます。
- [外部 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 ルールを無効化することで、一時的に srest へのログの配送を停止することができます。
- AWS コンソールから EventBridge のページを開きます。
- サイドバーから [Rules] をクリックします。
- [Rules] の一覧で検索フィールドに
aws-event-forwarder
を入力。検索結果に表示される [serverlessrepo-aws-event-forwarder-EventsRule-xxx] にチェックを付け、[Disable] ボタンをクリックします。 - 確認モーダルが開いたら、aws-event-forwarder が無効化されることを確認した上で [Disable] ボタンをクリックします。
インテグレーションの解除
AWS と srest のインテグレーションを解除するには、CloudFormation から serverlessrepo-aws-event-forwarder
スタックを削除する必要があります。
- AWS コンソールから CloudFormation のページを開きます。
- サイドバーから [Stacks] をクリックします。
- スタックの一覧から
serverlessrepo-aws-event-forwarder
を選択し、[Delete] ボタンをクリックします。 - 確認モーダルで serverlessrepo-aws-event-forwarder が削除されることを確認し、[Delete] ボタンをクリックします。
- スタックの一覧から serverlessrepo-aws-event-forwarder が削除されたことを確認します。