AWS ConfigのResourceComplianceを記録除外して一部リソースタイプだけコンプライアンス変更通知を設定してみた

AWS ConfigのResourceComplianceを記録除外して一部リソースタイプだけコンプライアンス変更通知を設定してみた

AWS Configの費用高騰を避けたいけど、一部のリソース履歴は残しておきたい…そんな課題はありませんか?今回は、ResourceComplianceの記録を除外しつつ、EventBridgeとの組み合わせで特定のリソースタイプだけ準拠状態を記録する方法をご紹介します。
2026.10.31

こんにちは。クラウド事業統括本部の木村です。

気づいたらConfigの費用が高騰していたといったことはないでしょうか?
頻繁にリソースが入れ替わったり、更新が多いような環境だと気づくとConfigの費用が思ったより高くなっていたということはよくあるケースだと思います。

以前にも記録数が多い特定のリソースに対して、日次記録への変更を行うことでどの程度削減できるかの確認だったりControl Tower管理のConfigの変更などのブログを投稿してきました。

https://dev.classmethod.jp/articles/config-cost-optimization-continuous-daily/

https://dev.classmethod.jp/articles/config-controltower-daily/

今回は日次記録に変更することができないAWS::Config::ResourceComplianceについて取り扱っていきたいと思います。

ResourceComplianceは各リソースの非準拠と準拠に変更された履歴を記録するものです。

以下のブログでも紹介されている通り、記録数が多くなりがちで想定しないコストが発生するケースがあります。

https://dev.classmethod.jp/articles/aws-security-hub-controls-config-cost/

コスト観点を重視する場合においては公式ブログでも、記録を除外する選択肢が提示されています。

非準拠と準拠に変更された履歴を記録するもののため、日次に変更する選択肢がなく記録を除外するか記録をするかの選択肢しかないです。また設定上全てのリソースタイプに対して記録するか、全てのリソースタイプに対して記録しないかの2択となるので一部リソースタイプの履歴を残しておきたいといったケースでは記録を有効化しておく必要があります。

ただコストは下げつつ一部のリソースタイプに絞って記録は残しておきたいといったケースがあると思います。

そこで今回はResourceComplianceの記録を除外しつつ、通知の仕組みを作って一部のリソースタイプだけ記録するといった方法をご紹介したいと思います。

ResourceComplianceを除外して確認できるもの、できないもの

まずResourceComplianceを除外して確認できるものとできないものを整理したいと思います。

リソースタイムラインには3つのフィルタ(Configuration events / Compliance events / CloudTrail Events)がありますが、除外で確認できなくなるのはCompliance eventsのみになります。
ルール評価そのものとコンソールの現在の準拠状態には影響しません。

その他の項目も合わせて簡単に整理すると以下の通りです。

除外後
Configuration events 確認できる
Compliance events 確認できない
CloudTrail Events 確認できる
ルール評価 影響なし
コンソールの現在の準拠状態 影響なし

ResourceComplianceを除外すると以下のように確認ができなくなります。

一部のリソースタイプだけ記録を残す構成

ResourceComplianceの記録は全リソース一括でしか制御できませんが、準拠状態の変化はEventBridgeでイベントとして捕捉できます。これはConfigルールの評価を契機に発火するものなので、ResourceComplianceの記録とは別系統の仕組みです。

この仕組みを利用してイベントから必要なリソースタイプに絞って記録を行います。

構成としてはこのような形になります。

リソースタイプを指定して絞り込む

コンプライアンス変更イベントのdetailには評価対象のリソースタイプが含まれています。ここでリソースタイプを直接指定していきます。

{
  "source": ["aws.config"],
  "detail-type": ["Config Rules Compliance Change"],
  "detail": {
    "messageType": ["ComplianceChangeNotification"],
    "resourceType": ["AWS::S3::Bucket"]
  }
}

例としてS3を指定していますが、ここは絞り込みたい任意のリソースタイプにしてください。

複数指定するときは以下のように設定してください。

{
  "source": ["aws.config"],
  "detail-type": ["Config Rules Compliance Change"],
  "detail": {
    "messageType": ["ComplianceChangeNotification"],
    "resourceType": [
      "AWS::S3::Bucket",
      "AWS::IAM::Role",
      "AWS::EC2::SecurityGroup"
    ]
  }
}

やってみた

実際にResourceComplianceを除外した状態で、通知が届くのかを確認してみました。

通知の仕組みを作る

先ほど紹介した設定でEventBridgeのルールを作成します。

宛先としてはCloudWatch Logsを指定します。

ResourceComplianceを除外する

通知の仕組みができたら、ResourceComplianceを記録から除外します。

Configの設定画面から編集を選択して、

記録をオーバーライドして編集してください。

Control Tower管理のConfigの場合は以下を参考に変更してください。

https://dev.classmethod.jp/articles/config-controltower-daily/

通知を確認する

では実際に通知できるのか確認してみます。

S3バケットからタグを削除して非準拠の状態にし、その後タグを付け直して準拠に戻す方法で試してみました。

以下の通り記録を行うことができました。(※記録は一部マスクと抜粋をしております。)

準拠 → 非準拠

{
  "detail-type": "Config Rules Compliance Change",
  "source": "aws.config",
  "account": "123456789012",
  "time": "2026-10-31T13:39:00Z",
  "region": "ap-northeast-1",
  "detail": {
    "resourceType": "AWS::S3::Bucket",
    "resourceId": "example-bucket",
    "configRuleName": "example-required-tags",
    "messageType": "ComplianceChangeNotification",
    "newEvaluationResult": {
      "complianceType": "NON_COMPLIANT",
      "resultRecordedTime": "2026-10-31T13:38:59.200Z"
    },
    "oldEvaluationResult": {
      "complianceType": "COMPLIANT"
    }
  }
}

非準拠 → 準拠

{
  "detail-type": "Config Rules Compliance Change",
  "source": "aws.config",
  "account": "123456789012",
  "time": "2026-10-31T13:40:30Z",
  "region": "ap-northeast-1",
  "detail": {
    "resourceType": "AWS::S3::Bucket",
    "resourceId": "example-bucket",
    "configRuleName": "example-required-tags",
    "messageType": "ComplianceChangeNotification",
    "newEvaluationResult": {
      "complianceType": "COMPLIANT",
      "resultRecordedTime": "2026-10-31T13:40:30.044Z"
    },
    "oldEvaluationResult": {
      "complianceType": "NON_COMPLIANT"
    }
  }
}

無事ResourceComplianceを除外しても、特定のリソースタイプで準拠状態の変化を記録できました。

Configの現在の準拠状況を確認できるか

公式ドキュメントにも以下の記載がある通り、現在の状況はResourceComplianceを除外しても表示できる想定でした。

Recording this resource type is not required for Config rules to evaluate resources or for viewing current compliance status in the console.

念のためResourceComplianceを除外したケースにてルール画面で非準拠リソースが見られなくならないかという点でも確認を行いました。

こちらも問題なく表示されました。

評価自体も正常に動いています。対象範囲内のリソースにも、非準拠のバケットがそのまま表示されています。

準拠状態に戻した後も反映されていました。

ResourceComplianceを除外しても現在の状況についてはドキュメント通り問題なく把握できることを確認しました。

まとめ

今回はコスト最適化しつつ、一部のリソースタイプに絞って履歴を残す方法について紹介させていただきました。

コスト最適化はしないといけないが、このタイプの記録は残しておかなければいけないといったケースはよくあるかと思います。
そういった場合において今回の記事が参考になれば幸いです。

以上、クラウド事業統括本部の木村がお届けしました。

参考リンク

https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html
https://docs.aws.amazon.com/config/latest/developerguide/monitor-config-with-cloudwatchevents.html
https://docs.aws.amazon.com/config/latest/developerguide/managing-recorder_console-change-recording-frequency.html
https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html
https://aws.amazon.com/blogs/mt/cost-optimization-recommendations-for-aws-config/


コスト最適化、打ちっぱなしで元通りになっていませんか

タグ付けも不要リソースの棚卸しも、施策は打てる。でも続ける仕組みがなければ、コストは数か月でじわじわ戻る。一度きりで終わらせず、FinOpsを組織に定着させる=CCoEの役割。最適化を回し続ける進め方を、無料資料にまとめました。

CCoE総合支援

FinOpsを定着させる資料をもらう

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事