こんにちは!! サッカー好きな流川です。
今回は、AWS Configの保持設定と、S3のライフサイクル設定がどのように関係しているかについてお話しします。 AWS環境の監査や運用設計に興味がある方はご一読ください!
本記事執筆の背景
AWS Configは、監査や分析用にそのスナップショットや履歴ファイルをAmazon S3に配信します。 しかし、S3のライフサイクル設定でファイルが自動的に削除される場合、実際にリソースタイムラインにどのような影響があるのか明確でなかったので、本記事ではその点を検証していきます。
AWS Configの保持設定とは?
保持設定について
AWS Configは、AWSリソースの設定変更を継続的に記録し、その履歴を内部データストアに設定アイテム(設定履歴)を保存します。 公式ドキュメントによると、AWS Configの保持期間は最小30日から最大7年(2557日)まで選べ特に保持期間の設定を変更しなければデフォルトで7年間リソースの設定アイテムを保持します。この内部データは、リソースタイムラインや履歴情報としてAWS Configコンソールに表示されます。
AWS Config allows you to delete your data by specifying a retention period for your ConfigurationItems. When you specify a retention period, AWS Config retains your ConfigurationItems for that specified period. You can choose a period between a minimum of 30 days and a maximum of 7 years (2557 days). AWS Config deletes data older than your specified retention period. If you do not specify a retention period, AWS Config continues to store ConfigurationItems for the default period of 7 years (2557 days). When recording is switched on, the current state of the resource is when a ConfigurationItem is recorded and until the next change (a new ConfigurationItem) is recorded.." (参照:Delete Config Data with Retention Period) docs.aws.amazon.com
和訳:
AWS Configでは、設定アイテム(ConfigurationItems)の保持期間を指定することで、データを削除することができます。保持期間を指定すると、AWS Configはその期間中設定アイテムを保持します。保持期間は最短30日から最長7年(2557日)まで設定可能です。指定した保持期間を超えたデータはAWS Configによって削除され、保持期間を指定しない場合AWS Configはデフォルトで7年(2557日)の間データを保持します。記録が有効化されている場合、リソースの現在の状態が設定アイテムとして記録され、次回変更(新しい設定アイテムの記録)が行われるまで保持されます。
保持設定と料金の関係性について
ちなみにですが、AWS Configの料金は記録される設定アイテム数や評価の頻度に基づいて決まるため、保持期間を変更しても料金には影響しません。 なので基本的にはデフォルトの7年(2557日)の設定で作成しておきましょう。
S3のライフサイクル設定とは?
Amazon S3では、ライフサイクル設定を利用して、S3に保存されたオブジェクトの保存期間を管理し、指定した期間経過後に自動的に削除することができます。
S3 Lifecycle helps you store objects cost effectively throughout their lifecycle by transitioning them to lower-cost storage classes, or, deleting expired objects on your behalf. To manage the lifecycle of your objects, create an S3 Lifecycle configuration for your bucket. An S3 Lifecycle configuration is a set of rules that define actions that Amazon S3 applies to a group of objects:." (参照:Managing the lifecycle of objects) docs.aws.amazon.com
和訳:
S3ライフサイクルは、オブジェクトのライフサイクル全体を通じて、より低コストのストレージクラスへ移行させたり、有効期限切れのオブジェクトを自動的に削除したりすることで、コスト効率の良い保存をサポートします。オブジェクトのライフサイクルを管理するには、バケットにS3ライフサイクル設定を作成します。S3ライフサイクル設定は、Amazon S3がオブジェクトのグループに適用するアクションを定義するルールのセットです。
このライフサイクル設定を利用しAWS Configより配信されるスナップショットや履歴ファイルを削除することができます。
AWS Configの保持設定と、S3のライフサイクル設定について
両者の関係性
では実際の両者の関係性はどういったものとなるのでしょうか。
公式ドキュメントに以下の記載があり、AWS ConfigとS3のライフサイクル設定はそれぞれ独立しており相互に影響を与える存在ではないことがわかります。
Q, If the files in the S3 bucket are deleted, will it affect the timeline view in the AWS Config console?
No. The configuration history and snapshot files delivered to an S3 bucket are for your auditing and analysis only. The configuration information displayed in the AWS Config console is from its data store.
Q, Does the retention period in the configuration recorder setting affect S3 files?
No. This retention period does not apply to the files in the S3 bucket. The files in the AWS Config data store depend on the retention period setting in the Config. By default, this value is 7 years.
和訳:
Q, S3バケット内のファイルが削除された場合、AWS Configコンソールのタイムラインビューに影響がありますか?
いいえ。S3バケットに配信される設定履歴やスナップショットファイルは、監査や分析専用のものです。AWS Configコンソールに表示される設定情報は、そのデータストアから取得されています。
Q, 設定レコーダーの設定における保持期間はS3ファイルに影響を与えますか?
いいえ。この保持期間はS3バケット内のファイルには適用されません。AWS Configデータストア内のファイルは、Configの保持期間設定に依存します。デフォルトでは、この値は7年間に設定されています。
両者で確認可能な内容
ではこの保持設定によってAWS ConfigのリソースタイムラインとS3で確認可能な内容はどういったものとなるのでしょうか。 実際にAWS Configのリソースタイムラインに表示される内容とS3に保存される内容はそれぞれ以下となります。
リソースタイムラインに表示される内容
- 設定変更履歴
- 概要
- リソースに発生した変更イベントの履歴を表示したもの
- 内容
- リソースID、リソースタイプ情報
- リソースの変更前後の設定情報
- リソース同士がどのように結びついているか、依存しているかを示すリソース間の関連情報
- 変更日時
- 変更内容の差分情報
- 概要
S3に保存される内容
- 設定履歴ファイル *1
- 概要
- リソースの設定変更が発生するたびにその差分関連情報のみを記録したもの
- 内容
- リソースID、リソースタイプ情報
- リソースがどのように設定されているかを示す情報
- リソース同士がどのように結びついているか、依存しているかを示すリソース間の関連情報
- 変更日時
- 概要
- 設定スナップショットファイル *2
- 概要
- 特定の時点における各AWSリソースの完全な設定状態を記録したもの
- 内容
- リソースID、リソースタイプ情報
- リソースがどのように設定されているかを示す情報
- リソース同士がどのように結びついているか、依存しているかを示すリソース間の関連情報
- 記録日時
- 概要
*1:AWS Configを有効化した際にデフォルトでS3に配信されます。
*2:AWS Configを有効化した際にデフォルトでS3に配信されません。配信するためには AWS CLIにてコマンドを実行する必要がございます。配信方法の詳細は以下のAWS公式ドキュメントをご覧ください。 docs.aws.amazon.com
実際に検証してみた
AWS Configの保持設定と、S3のライフサイクル設定の関係性を実際に確認するため検証してみました。
Configを有効化
AWSコンソールにて検索バーに「Config」と入力し、AWS Configサービス移動した上でGet startedを押下します。
Configの設定画面にて各種設定項目を入力します。
入力がおわったらConfirmボタンを押下します。
Configの有効化後Settingを確認すると、以下のように保持期間が7年となっていることが確認できます。
S3のライフサイクルを設定する
Configの設定時に指定したS3のLifecycle configuration(ライフサイクル設定)を1日でオブジェクトが失効するように設定しておきます。
ログ失効後のConfigのリソースタイムラインを確認
EC2の起動・停止など任意のアクションを実行し、実行後1日以上空けてConfigのリソースタイムラインを確認します。
リソースタイムラインでは1日以上前の履歴が表示されましたので、S3のライフサイクル設定によるオブジェクト削除はリソースタイムラインには影響がないことがわかりました。
まとめ
AWS Configのリソースタイムラインは、内部データストアに保存された設定アイテム(設定履歴)に基づいて表示されます。 そのため、ConfigよりS3バケットに配信されたスナップショットや履歴ファイルが、ライフサイクル設定により削除されたとしても、Configのリソースタイムラインには影響しません。
おわりに
AWS Configを利用する際には、Config側で設定される保持期間とS3のライフサイクル設定を意識して運用設計を行うことが重要となります。 本記事がAWSの理解を深めるうえで助けになれば幸いです!
流川スィーナ(記事一覧)
カスタマーサクセス部 CS3課