
CloudWatch Logs のアカウントレベル保持期間ポリシーを、個別設定済みのロググループに適用してみた
はじめに
2026年11月9日、Amazon CloudWatch Logs でアカウントレベルの保持期間ポリシーを設定できるようになりました。
1つのポリシーで、全ロググループ、またはプレフィックスで選んだロググループの保持期間を設定できます。既存のロググループにも適用するか、新しく作成するロググループだけに適用するかも選べます。
設定
保持期間の値と適用モード
アカウントレベルの保持期間ポリシーでは、保持期間、適用モード、対象のロググループを選ぶプレフィックスを指定します。保持期間は最小30日で、無期限を表す NEVER_EXPIRE も指定できます。
RETROACTIVE は、ポリシー作成前から存在するロググループを含め、一致するすべてのロググループに適用します。NEW_ONLY は、ポリシー作成後に作られた一致するロググループだけに適用し、既存のロググループはそれぞれの保持期間のままです。
アカウントレベルの保持期間ポリシーは、一致したロググループの個別設定を置き換えます。ロググループ側の保持期間がポリシーより長い場合も同じです。
ポリシーの作成
us-west-2(オレゴン)で、AWS CLI 2.39.7 を使い、2つのポリシーを RETROACTIVE で作成しました。
ベースライン
/rtnverify/ 配下のロググループを30日にします。
aws logs put-account-policy --policy-name rtnverify-base-30d --policy-type RETENTION_POLICY --scope ALL \
--policy-document '{"retentionInDays":30,"enforcementMode":"RETROACTIVE"}' \
--selection-criteria 'LogGroupNamePrefix="/rtnverify/"'
特定のプレフィックスだけ保持期間を延長
/rtnverify/security/ 配下のロググループだけを365日にします。
aws logs put-account-policy --policy-name rtnverify-security-365d --policy-type RETENTION_POLICY --scope ALL \
--policy-document '{"retentionInDays":365,"enforcementMode":"RETROACTIVE"}' \
--selection-criteria 'LogGroupNamePrefix="/rtnverify/security/"'
検証結果
検証用のロググループは8本です。/rtnverify/lambda/ 配下には、個別設定が7日、14日、30日、60日、365日の5本と未設定の1本、/rtnverify/security/ 配下には、未設定の1本と7日の1本を用意しました。個別設定は put-retention-policy で入れました。
反映のタイミング
ポリシーの作成当日は、8本とも retentionInDays は個別設定のままで、retentionPolicyName は返りませんでした。
翌日には、8本の保持期間がポリシーの値に置き換わり、retentionPolicyName にポリシー名が入っていました。ポリシーが効いたかどうかは、この2つのフィールドで確認できます。たとえば /rtnverify/lambda/fn-r365 は次の状態です。
"logGroupName": "/rtnverify/lambda/fn-r365",
"retentionInDays": 30,
"retentionPolicyName": "rtnverify-base-30d"
リファレンスには、ポリシーは作成の24時間後に有効になると書かれています。
個別設定との優先関係
/rtnverify/lambda/ 配下の6本について、個別設定とポリシー反映後の保持期間を比較しました。6本とも retentionPolicyName は rtnverify-base-30d です。
| ロググループ名の末尾 | 個別設定 | 反映後の保持期間(日) |
|---|---|---|
| fn-unset | 無期限 | 30 |
| fn-r07 | 7 | 30 |
| fn-r14 | 14 | 30 |
| fn-r30 | 30 | 30 |
| fn-r60 | 60 | 30 |
| fn-r365 | 365 | 30 |
個別設定が30日より短いロググループは延び、長いロググループは短縮されました。RETROACTIVE を指定したため、既存のロググループの個別設定がポリシーの値に上書きされました。
既存のロググループの保持期間を維持したい場合は、NEW_ONLY を指定します。
プレフィックスが重なる場合
/rtnverify/security/ 配下の2本は、ベースラインのポリシー(30日)と、特定のプレフィックスだけ保持期間を延長するポリシー(365日)の両方に一致します。複数のポリシーが一致する場合は、最も長い保持期間が適用されます。
| ロググループ名の末尾 | 個別設定 | 反映後の保持期間(日) | 適用されたポリシー |
|---|---|---|---|
| sec-unset | 無期限 | 365 | rtnverify-security-365d |
| sec-r07 | 7 | 365 | rtnverify-security-365d |
まとめ
CloudWatch Logs でアカウントレベルの保持期間ポリシーがサポートされたことで、アカウント単位でログの保持期間をベースラインとして設定できるようになりました。長期保持が必要なログには、保持期間を延長したポリシーを別に定義できます。これにより、ログのライフサイクルを適切に設定しやすくなります。
従来、CloudWatch Logs のロググループは保持期間のデフォルトが無期限のため、Lambda のログ出力先など、保持期間を明示せずに作成されたロググループではログが溜まり続けることがありました。ベースラインで保持期間を設定できるようになったので、こうした事態を回避しやすくなりました。
CloudWatch Logs のストレージ費用が課題の場合は、2026年7月のアップデートで登場した Intelligent-Tiering との併用をおすすめします。Intelligent-Tiering は、CloudWatch Logs がアクセスパターンに応じてログを自動的に低コストな層へ振り分ける機能です。











