安全機構
--regionsを省略した場合、暗黙に全リージョンをスキャンすることはありません。TTYでは対話式に選択させ、非TTY(CI/パイプ)ではエラー終了します。全リージョンを対象にするには--regions allを明示する必要があり、その場合も対象件数を表示してTTYでは確認を取ります(誤って無関係なリージョンをスキャンする事故を防ぐため)。clean --execute/retention set --executeを渡さない限り、delete-log-group/put-retention-policyは一切呼び出されません(dry-run既定)。scanとauditはこれらのAPIに到達する経路を持たず、retention setはdelete-log-groupに到達する経路を持ちません。- 対話式マルチセレクトの初期状態は常に全チェックOFFです。
- 削除・retention変更を伴う操作は、対象アカウントID・リージョン・ロググループ名・実行時刻・成功/失敗を監査ログ(既定: カレントディレクトリ直下
cwsweep-audit.jsonl。--audit-log-pathで出力先を上書き可能)にJSON Linesで必ず記録します(無効化オプションなし)。監査ログの書き込みに失敗した場合、当該操作は中断されます。監査ログファイルはclean開始時にオープンされます(scanは作成しません)。 - 管理アカウント自身へはAssumeRoleせず現在の認証情報をそのまま使用し、メンバーアカウントに対してのみAssumeRoleします。
- いずれかのAWSアカウントへのAPI呼び出しの直前(スキャン時、および削除・retention変更の実行直前の二重目)に
sts:get-caller-identityでアカウントID一致を検証し、不一致の場合は当該アカウントの処理を即座に失敗させます。
終了コード方針(CI/自動化向け)
Section titled “終了コード方針(CI/自動化向け)”scan / clean で対象アカウント×リージョンの組み合わせが1件以上あり、かつその全件でスキャンが失敗した場合、cwsweep は非ゼロ終了コードで終了します(標準エラーへの警告ログに加え、この場合は正常な「0件」メッセージを表示しません)。
1件でも成功した組み合わせがあれば、他が失敗していても終了コードは0(正常終了)とし、失敗したアカウント/リージョンは個別に警告ログへ出力するのみとします。これにより「スキャンが全滅した」場合と「本当に対象ロググループが0件だった」場合を、呼び出し元が終了コードだけで区別できます。