概要
Control Tower をセットアップすると、ログ集約用のアカウント(ログアーカイブアカウント)が自動的に作成され、その中にS3バケットがプロビジョニングされます。このS3バケットには、デフォルトでライフサイクルルール(RetentionRule
)が設定されており、組織全体の CloudTrail ログや Config ログが集約されます。
今回は、この Control Tower が管理するログアーカイブ用 S3 バケットのライフサイクルルールを変更することが可能かどうかを調査しました。
調査結果
調査の結果、Control Tower が管理するログアーカイブ用 S3 バケットのライフサイクルルールに関して、以下の点が判明しました。
- オブジェクトのストレージクラスの移行設定
- Control Tower コンソールからの変更機能は提供されておらず、基盤となる CloudFormation スタックセットのパラメータ値を直接変更しても恒久的な変更はできません(詳細は後述)。
- オブジェクトの保存日数の設定
- Control Tower コンソールから変更可能です。
項目 | 変更可否 | 変更方法 / 備考 |
---|---|---|
オブジェクトのストレージクラスの移行設定 | 不可 (※恒久的な変更) | CloudFormation を直接変更しても、ランディングゾーン更新時に設定がリセットされる |
オブジェクトの保存日数の設定 | 可能 | Control Tower コンソールから保存日数を変更 |
S3ライフサイクルルールについて
S3 ライフサイクルルールは、Amazon S3 の機能の一つで、オブジェクトのライフサイクルを管理するために使用されます。主な機能は以下の通りです。
- ストレージクラスの移行
- オブジェクトを、アクセス頻度やコストに応じて異なるストレージクラス(例: S3 標準から S3 Glacier Flexible Retrieval へ)に自動的に移動させる。
- オブジェクトの削除
- 指定した期間が経過したオブジェクトを自動的に削除する。
これにより、ストレージコストの最適化への対応が可能になります。Control Tower が作成するバケットでは、デフォルトで S3 標準ストレージクラスが使用されています。
調査の詳細
Control Tower が作成するログアーカイブ用 S3 バケットと関連リソースは、管理アカウントの AWS CloudFormation スタックセット AWSControlTowerLoggingResources
によって管理されています。このスタックセットのテンプレートを確認すると、ライフサイクルルールに関連する以下のパラメータが定義されていることが分かります(デフォルト値)。
パラメータ名 | デフォルト値 | 説明 |
---|---|---|
RetentionDays |
180 | ログの保持期間(日数) |
RetentionDaysForAccessLogs |
180 | S3 アクセスログの保持期間(日数) |
TransitionDays |
90 | 低頻度アクセスストレージクラス(IA)などへの移行を開始するまでの日数 |
TransitionToGlacier |
No | S3 Glacier Flexible Retrieval ストレージクラスへの移行有無(No: 移行しない) |
これらのパラメータが存在するため、スタックセットのパラメータ値を変更して更新すれば、ライフサイクルルールをカスタマイズできるのではないかと考えました。実際にパラメータを変更してスタックセットを更新したところ、一時的には S3 バケットのライフサイクルルールが変更されることを確認できました。
しかし、この方法には後述する重要な注意点が存在します。
注意点:Control Tower 管理リソースの変更について
前述の方法で CloudFormation パラメータを変更することは可能ですが、以下の理由から推奨されず、恒久的な解決策とはなりません。
- Control Tower 管理リソース変更の非推奨
AWS の公式ドキュメントには、以下のガイダンスが記載されています。
AWS Control Tower によって作成されたリソースを変更または削除しないでください。
- ランディングゾーン更新による設定のリセット
Control Tower の重要な操作の一つに「ランディングゾーンの更新」があります。この操作を実行すると、Control Tower は管理下の環境(OU 構成、ガードレール、共有アカウントのリソースなど)を最新のベストプラクティスや設定に準拠させようとします。このプロセスの一環として、AWSControlTowerLoggingResources
などの CloudFormation スタックセットが Control Tower のデフォルト設定に基づいて再デプロイされることがあります。
実際に、CloudFormation パラメータを直接変更してライフサイクルルールをカスタマイズした後、ランディングゾーンの更新を実行したところ、変更した設定がリセットされ、元のデフォルト状態に戻ってしまうことを確認しました。
現状、Control Tower のコンソールからライフサイクルルールのストレージクラス移行を設定する機能は提供されていません。また、公式ドキュメントなどを調査しましたが、ランディングゾーン更新後も CloudFormation パラメータの変更を永続的に保持する方法は見当たりませんでした。
まとめ
今回、AWS Control Tower が自動作成するログアーカイブ用 S3 バケットのライフサイクルルールを変更できるか調査しました。
結論として、以下の通りです。
- オブジェクトの保存日数の変更
- Control Tower コンソールからサポートされており、変更可能です。
- オブジェクトのストレージクラスの移行設定
- Control Tower コンソールからの変更はサポートされていません。基盤となる CloudFormation スタックセットのパラメータを直接変更することで一時的な設定変更は可能ですが、ランディングゾーンの更新時に設定がリセットされてしまうため、恒久的な変更はできません。また、Control Tower の管理外でのリソース変更は非推奨です。
ストレージコスト最適化のためにストレージクラス移行を行いたい場合は、Control Tower の今後のアップデートを待つか、Control Tower の管理外で別途ログを転送・処理する仕組みを検討する必要があります。