AWS Config の仕組み
AWS Config を有効にすると、最初にアカウント内に存在するサポートされている AWS リソースを検出し、リソースごとに設定項目を生成します。
AWS Config は、リソースの設定が変更されたときにも設定項目を生成し、設定レコーダーの起動時点からリソースの設定項目の記録を履歴として保持します。デフォルトでは、AWS Config はリージョンでサポートされているリソースごとの設定項目を作成します。すべてのサポートされているリソースの設定項目を AWS Config で作成しない場合は、追跡するリソースタイプを指定できます。
AWS Config は、アカウントのリソースごとに Describe または List の API コールを呼び出して、リソースへのすべての変更を追跡します。このサービスでは、その同じ API コールを使用して、すべての関連リソースの設定詳細をキャプチャします。
例えば、VPC セキュリティグループから egress ルールを削除すると、AWS Config はセキュリティグループで Describe API コールを呼び出します。次に、AWS Config はセキュリティグループに関連付けられているすべてのインスタンスで Describe API コールを呼び出します。セキュリティグループ (リソース) と各インスタンス (関連リソース) の更新された設定が設定項目として記録され、設定のストリーミングで Amazon Simple Storage Service (Amazon S3) バケットに配信されます。
AWS Config は API で開始されていない設定変更も追跡します。AWS Config はリソースの設定を定期的に調べ、変更があった設定の設定項目を生成します。
AWS Config ルールを使用している場合、AWS Config は、ルールの最適な設定に照らして AWS リソースの設定を継続的に評価します。ルールに従って、AWS Config は設定変更に応じてリソースを評価するか、定期的な間隔でリソースを評価します。各ルールは、ルールの評価ロジックが含まれている AWS Lambda 関数に関連付けられます。AWS Config は、リソースを評価すると、ルールの AWS Lambda 関数を呼び出します。この関数は、評価されたリソースのコンプライアンスステータスを返します。リソースがルールの条件に違反していると、AWS Config はリソースとルールに非準拠のフラグを付けます。リソースのコンプライアンスステータスが変わると、AWS Config は Amazon SNS トピックに通知を送信します。次の図は、AWS Config の仕組みの概要を示しています。

設定項目の配信
AWS Config は、次のいずれかの配信チャネルを通じて設定項目を配信できます。
Amazon S3 バケット
AWS Config は、AWS リソースの設定変更を追跡し、更新された設定の詳細を、指定した Amazon S3 バケットに定期的に送信します。AWS Config は、記録するリソースタイプごとに、設定履歴ファイルを 6 時間ごとに送信します。各設定履歴ファイルには、その 6 時間の間に変更があったリソースの詳細が含まれています。各ファイルに含まれるリソースタイプは 1 つです (Amazon EC2 インスタンスや Amazon EBS ボリュームなど)。設定変更が発生しなかった場合、AWS Config はファイルを送信しません。
AWS Config CLI で deliver-config-snapshot コマンドを使用するか、またはAWS API で DeliverConfigSnapshot アクションを使用すると、AWS Config は 設定スナップショットを Amazon S3 バケットに送信します。設定スナップショットには、AWS アカウントで AWS Config が記録したすべてのリソースの設定詳細が含まれています。設定履歴ファイルと設定スナップショットは JSON 形式です。
AWS Config は、設定履歴ファイルと設定スナップショットを指定された S3 バケットに配信するだけで、AWS Config が S3 バケット内のオブジェクトのライフサイクルポリシーを変更することはありません。ライフサイクルポリシーを使用して、オブジェクトを削除するか、Amazon S3 Glacier にアーカイブするかを指定できます。詳細については、Amazon Simple Storage Service Console ユーザーガイド中のライフサイクル設定の管理を参照してください。ブログ投稿の Amazon S3 データを S3 Glacier にアーカイブする
Amazon SNS トピック
Amazon Simple Notification Service (Amazon SNS) トピックは、E メールアドレスなどのサブスクライブしているエンドポイントやクライアントにメッセージ (または通知) を配信するために Amazon SNS で使用する通信チャネルです。その他の種類の Amazon SNS 通知として、携帯電話のアプリへのプッシュ通知メッセージ、SMS 対応の携帯電話やスマートフォンへのショートメッセージサービス (SMS) 通知、HTTP POST リクエストなどがあります。最適な結果を得るために、SNS トピックの通知エンドポイントとして Amazon SQS を使用し、通知内の情報をプログラムで処理します。
AWS Config は、指定された Amazon SNS トピックを使用して通知を送信します。受信する通知の種類は、次の例に示すように、メッセージ本文の messageType
キーの値で示されます。
"messageType": "ConfigurationHistoryDeliveryCompleted"
通知のメッセージタイプは、以下のいずれかです。
ComplianceChangeNotification
-
AWS Config で評価するリソースのコンプライアンスタイプが変更されました。コンプライアンスタイプは、リソースが特定の AWS Config ルールに準拠しているかどうかを示し、メッセージの
ComplianceType
キーで示されます。メッセージには、比較のためにnewEvaluationResult
オブジェクトとoldEvaluationResult
オブジェクトが含まれます。 ConfigRulesEvaluationStarted
-
AWS Config は、ルールを適用して指定されたリソースの評価を開始しました。
ConfigurationSnapshotDeliveryStarted
-
AWS Config は、Amazon S3 バケットへの設定スナップショットの配信を開始しました。Amazon S3 バケットの名前は、メッセージの
s3Bucket
キーで示されます。 ConfigurationSnapshotDeliveryCompleted
-
AWS Config は、Amazon S3 バケットへの設定スナップショットの配信を正常に完了しました。
ConfigurationSnapshotDeliveryFailed
-
AWS Config は、Amazon S3 バケットに設定スナップショットを配信できませんでした。
ConfigurationHistoryDeliveryCompleted
-
AWS Config は、Amazon S3 バケットに設定履歴を正常に配信しました。
ConfigurationItemChangeNotification
-
リソースが作成または削除されるか、設定が変更されました。このメッセージには、この変更に伴って AWS Config で作成される設定項目の詳細と、変更の種類が含まれます。これらの通知は、変更後数分以内に配信され、まとめて設定ストリームと呼ばれます。
OversizedConfigurationItemChangeNotification
-
このメッセージタイプは、設定項目の変更通知が Amazon SNS の最大許容サイズを超えた時に配信されます。メッセージには設定項目の概要が含まれます。SMS メッセージを除き、Amazon SNS メッセージには、XML、JSON、フォーマットされていないテキストなど、最大 256 KB のテキストデータを含めることができます。完全な通知の参照先は、指定した Amazon S3 バケット内にあります。
OversizedConfigurationItemChangeDeliveryFailed
-
AWS Config は、サイズが大きすぎる設定項目の変更通知を Amazon S3 バケットに配信できませんでした。
通知の例については、「AWS Config から Amazon SNS トピックに送信される通知」を参照してください。
Amazon SNS の詳細については、Amazon Simple Notification Service デベロッパーガイド を参照してください。