🗄️⏰

CloudWatch Logs ログ保持期間

〜 倉庫の保管ルールで理解する、ログデータの賢い管理方法 〜

🎯 結論ファースト:3つの重要ポイント

📌 デフォルトは「永久保存」

設定しないとログは永遠に保存され、コストが膨らみ続けます!必ず保持期間を設定しましょう。

📌 選択肢は「1日〜10年」

1, 3, 5, 7, 14, 30, 60, 90... 最大3653日(約10年)まで、18種類の期間から選べます。

📌 削除には最大72時間かかる

保持期間を過ぎても即削除されません。最大72時間後に実際に削除されます。

🏪 たとえ話:倉庫の保管期限ルール

📦🏭

リアルな倉庫

企業の倉庫では、書類や商品を
「保管期限」を決めて管理します。

期限が来たら廃棄して
スペースを確保し、
保管コストを抑えます

☁️📊

CloudWatch Logs

AWSでは、アプリのログを
「保持期間」を決めて管理します。

期限が来たら自動削除して
ストレージを解放し、
AWSコストを抑えます

🏢 倉庫の棚をイメージしよう

📅 今週
📄 新しいログ
📄 新しいログ
📅 先月
📄 古いログ
📅 半年前
🗑️ 期限切れ→削除

💡 倉庫と同じ!保管期限を決めておけば、古い荷物は自動で片付けられます

📅 選べる保持期間オプション

1日
最短
30日
1ヶ月
90日
3ヶ月
365日
1年
3653日
約10年
無期限
🚀 短期(デバッグ用)
1日 3日 5日 7日 14日
📊 中期(運用監視)
30日 60日 90日 120日 150日 180日
🔒 長期(コンプライアンス)
365日(1年) 400日 545日 731日(2年) 1096日(3年)
🏛️ 超長期(アーカイブ)
1827日(5年) 2192日(6年) 2557日(7年) 2922日(8年) 3288日(9年) 3653日(10年)

💰 倉庫の保管料金 = AWSストレージコスト

😱 保持期間を設定しない場合

倉庫がパンパン!保管料が増え続ける...

$1,200/年

ログが永久に蓄積
→ コストが膨らみ続ける

😊 適切に設定した場合

必要な分だけ保管!スッキリ管理

$300/年

30〜90日で設定
約75%のコスト削減!

📦 倉庫のたとえで理解する4つのポイント

🏷️ ロググループ = 倉庫の棚

倉庫には「食品棚」「書類棚」など用途別の棚がありますよね。CloudWatch Logsの「ロググループ」も同じで、アプリごとに分けた「ログの棚」です。それぞれの棚に別の保管期限を設定できます。

📄 ログストリーム = 棚の中の箱

棚の中にある箱がログストリームです。同じロググループ内でも、サーバーごとやプロセスごとに分かれた箱に入っています。箱ごとではなく、棚全体(ロググループ)に保管期限を設定します。

削除は即時ではない

倉庫でも「期限切れ」と「実際の廃棄」にはタイムラグがありますよね。CloudWatch Logsも同様に、保持期間を過ぎてから最大72時間後に実際に削除されます。ただし、課金は期限切れ時点で止まります。

🔄 いつでも変更可能

倉庫の保管ルールを変更できるように、保持期間もいつでも変更できます。短くすると古いログは削除され、長くすると保存期間が延びます。ビジネス要件に合わせて調整しましょう。

🛠️ 設定方法(3つの方法)

🖥️ AWSコンソール
1
CloudWatch コンソールを開く
2
左メニュー「ログ」→「ロググループ」
3
対象のロググループを選択
4
「アクション」→「保持設定の編集」
5
ドロップダウンから期間を選択
⌨️ AWS CLI
# 保持期間を30日に設定 aws logs put-retention-policy \ --log-group-name "/aws/lambda/my-function" \ --retention-in-days 30 # 現在の設定を確認 aws logs describe-log-groups \ --log-group-name-prefix "/aws/lambda/" # 保持期間を削除(永久保存に戻す) aws logs delete-retention-policy \ --log-group-name "/aws/lambda/my-function"
📝 Terraform / CloudFormation
# Terraform の例 resource "aws_cloudwatch_log_group" "example" { name = "/aws/lambda/my-function" retention_in_days = 30 # 👈 ここで設定! tags = { Environment = "production" } } # 0 または省略 = 永久保存(非推奨)

⚠️ 知っておくべき重要ポイント

🕐 削除のタイミング

保持期間を過ぎてもすぐには削除されません。最大72時間かかることがあります。ただし、課金対象からは外れます。

🔄 設定変更の影響

保持期間を短くすると、既存の古いログも削除対象になります。変更前に必要なログをエクスポートしておきましょう。

📦 長期保存が必要な場合

10年以上保存したい場合は、CloudWatch LogsからS3にエクスポートしましょう。S3 Glacierならさらに低コストです。

🏷️ ロググループ単位

保持期間はロググループ単位で設定します。同じロググループ内のすべてのログストリームに同じ期間が適用されます。

✅ ベストプラクティス

🎯 環境ごとに分ける

本番: 90〜365日(監査・トラブルシュート用)
ステージング: 30〜60日
開発: 7〜14日(コスト最小化)

📜 コンプライアンス対応

業界規制で1年以上の保存が必要な場合は、CloudWatch Logsで365日+に設定するか、S3へエクスポートしてGlacierで長期保存。

🔍 定期的なレビュー

四半期ごとにロググループの保持設定を見直しましょう。「Never Expire」のまま放置されているグループがないかチェック!

🏗️ IaCで管理

TerraformやCloudFormationで保持期間を定義。新しいリソース作成時に自動で適切な期間が設定されるようにしましょう。

❓ よくある質問(FAQ)

🤔 Q: デフォルトの保持期間は?
A: 「永久保存(Never Expire)」です。
倉庫のたとえでいうと、何も設定しないと「永久に保管」されるルールになっています。放置するとログが無限に蓄積してコストが膨らみ続けるので、必ず適切な保持期間を設定しましょう!
🤔 Q: 保持期間を過ぎたらすぐ削除される?
A: いいえ、最大72時間かかります。
倉庫でも「期限切れマーク」を付けてから実際に廃棄するまでタイムラグがありますよね。CloudWatch Logsも同様です。ただし、期限切れ時点で課金対象からは外れるので、コスト面では安心です。
🤔 Q: なぜ30日や90日という中途半端な選択肢がある?
A: ビジネス要件に合わせた柔軟な設計です。
1ヶ月(30日)は月次レビュー、3ヶ月(90日)は四半期レビュー、1年(365日)は年次監査に対応。倉庫の「月次在庫」「四半期決算」「年次監査」のタイミングと同じ発想です。
🤔 Q: 保持期間を変更したら既存ログはどうなる?
A: 新しいルールが既存ログにも適用されます。
例えば90日→30日に変更すると、30日以上前のログは削除対象になります。倉庫の保管ルールを厳しくしたら、古い荷物も対象になるのと同じです。大事なログは事前にエクスポートしておきましょう!

🎓 まとめ

🏪 倉庫の保管ルール = CloudWatch Logs保持期間

CloudWatch Logsのログ保持期間は、まさに倉庫の保管期限ルールと同じ!
適切に設定すれば、必要なログは保持しつつ、古いログは自動で片付けられます。

✅ デフォルトは永久保存 ✅ 1日〜10年から選択可能 ✅ 削除は最大72時間後 ✅ ロググループ単位で設定

💡 今すぐやること:

AWSコンソールで「Never Expire」のロググループがないか確認し、
適切な保持期間(まずは30〜90日がおすすめ)を設定しましょう!
それだけで最大75%のコスト削減が期待できます 🎉

Created by SSuzuki1063

AWS SAP Learning Resources