CloudWatch Logs のアカウントレベル保持期間ポリシーを、個別設定済みのロググループに適用してみた

CloudWatch Logs のアカウントレベル保持期間ポリシーを、個別設定済みのロググループに適用してみた

Amazon CloudWatch Logs のアカウントレベル保持期間ポリシーを、保持期間を個別設定したロググループへ RETROACTIVE で適用しました。個別設定が7日でも365日でもポリシーの値に置き換わり、プレフィックスが重なるロググループには長い方が適用されました。
2026.11.12

はじめに

2026年11月9日、Amazon CloudWatch Logs でアカウントレベルの保持期間ポリシーを設定できるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2026/11/amazon-cloudwatch-log-retention/

1つのポリシーで、全ロググループ、またはプレフィックスで選んだロググループの保持期間を設定できます。既存のロググループにも適用するか、新しく作成するロググループだけに適用するかも選べます。

設定

保持期間の値と適用モード

アカウントレベルの保持期間ポリシーでは、保持期間、適用モード、対象のロググループを選ぶプレフィックスを指定します。保持期間は最小30日で、無期限を表す NEVER_EXPIRE も指定できます。

RETROACTIVE は、ポリシー作成前から存在するロググループを含め、一致するすべてのロググループに適用します。NEW_ONLY は、ポリシー作成後に作られた一致するロググループだけに適用し、既存のロググループはそれぞれの保持期間のままです。

アカウントレベルの保持期間ポリシーは、一致したロググループの個別設定を置き換えます。ロググループ側の保持期間がポリシーより長い場合も同じです。

https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html

ポリシーの作成

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 がアクセスパターンに応じてログを自動的に低コストな層へ振り分ける機能です。

https://dev.classmethod.jp/articles/amazon-cloudwatch-logs-intelligent-tiering/

この記事をシェアする

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

関連記事