livewire:configure-s3-upload-cleanup — S3アップロードのクリーンアップ設定を構成するコマンド

artisan

php artisan livewire:configure-s3-upload-cleanup

兼容バージョン

LaravelLivewirePHP
12.x3.8+8.4+

TL;DR – S3 に保存される Livewire の一時アップロード (livewire-tmp/) を自動でクリーンアップします。
TTL(保存時間)と実行頻度を設定して、毎日古いファイルを削除できます。


何をしてくれるの?

機能説明
自動クリーンアップ指定ディスク(S3)上の livewire-tmp/ フォルダを定期実行で削除します。
設定ファイル更新config/livewire.phpcleanup キーを書き込み、Laravel のスケジューラが利用します。
オプション駆動--ttl(時間)や --schedule(cron式)で動作をカスタマイズ可能です。

注意 – Livewire の一時アップロードディスクは S3 ドライバである必要があります (livewire.temporary_file_upload.disks3 に設定されていること)。


使い方

php artisan livewire:configure-s3-upload-cleanup [options]

主なオプション

フラグ役割デフォルト
--bucket=VALUEクリーンアップ対象の S3 バケット名config/filesystems.disks.s3.bucket
--disk=VALUE使用ディスク名(S3 ドライバ)livewire.temporary_file_upload.disk
--ttl=VALUEファイルの保存期間(時間)24
--schedule=VALUELaravel スケジュール(cron式)0 3 * * *(UTC 3 AM)
--region=VALUE(Vapor など)S3 リージョンなし(自動判定)

php artisan livewire:configure-s3-upload-cleanup \
    --bucket=my-app-uploads \
    --ttl=48 \
    --schedule="0 0 * * *"

最小構成での設定手順

  1. Livewire 設定を公開(未実行時)
   php artisan livewire:publish --config
  1. 一時アップロードディスクを S3 に設定
   // config/livewire.php
   'temporary_file_upload' => [
       'disk' => 's3',
   ],
  1. コマンド実行
   php artisan livewire:configure-s3-upload-cleanup \
       --bucket=my-app-uploads
  1. 確認
    S3 コンソールで livewire-tmp/ フォルダを確認。
    次回スケジューラ実行時に古いファイルが削除されます。

仕組み

  1. 設定ファイルを書き換え
   'temporary_file_upload' => [
       'cleanup' => [
           'enabled'   => true,
           'bucket'    => 'my-app-uploads',
           'ttl_hours' => 24,
           'schedule'  => '0 3 * * *',
       ],
   ],
  1. Laravel スケジューラ登録
    LivewireServiceProviderConsole::schedule() にコールバックを追加。
   $schedule->call(fn () => $this->cleanupBucket())
       ->cron(config('livewire.temporary_file_upload.cleanup.schedule'));
  1. クリーンアップ処理
  • livewire-tmp/ 内のオブジェクトを一覧取得
  • LastModified を比較
  • ttl_hours 以上経過したファイルを s3:DeleteObject で削除
  1. エラーログ
  • バケット名が無い、IAM ポリシー不足、リスト取得失敗などでエラーをログへ出力。

よくあるケース

シナリオコマンドのメリット
大きい画像アップロード古い一時ファイルを自動削除し、ストレージ費用を削減
継続的デプロイデプロイ後の残存ファイルをクリーンに保つ
サーバーレス環境(Vapor 等)一時ファイルが容量上限に達するのを防止

トラブルシューティング

症状原因修正
Failed to configure S3 bucket …temporary_file_upload.disks3 でないphp artisan livewire:publish --config で設定し直す
クリーンアップが走らないスケジューラが実行されていないphp artisan schedule:run を cron で定期実行、または Vapor のスケジュール設定
ファイルが残るタイムゾーン不一致TTL は UTC で計算。ローカル時間がずれている場合は --schedule を調整
403 ForbiddenIAM ポリシー不足s3:ListBuckets3:DeleteObject を付与

チェックリスト

  1. ディスク確認
   php artisan config:show livewire.temporary_file_upload.disk
  1. バケット内容確認
   aws s3 ls s3://my-bucket/livewire-tmp/ --region us-east-1
  1. 手動クリーンアップ
   php artisan livewire:cleanup-s3 --bucket=my-bucket
  1. Laravel ログ確認
   tail -f storage/logs/laravel.log

関連コマンド

コマンド用途
php artisan livewire:publish --configLivewire 設定ファイルを公開
php artisan livewire:cleanup-s3クリーンアップを即時実行(デバッグ用)
php artisan livewire:configure-s3-upload-cleanup旧バージョン(非推奨)

速記まとめ

# デフォルト(24h, 3AM UTC)
php artisan livewire:configure-s3-upload-cleanup --bucket=my-bucket

# TTL 48h、毎日深夜(UTC 0:00)に実行
php artisan livewire:configure-s3-upload-cleanup \
    --bucket=my-bucket \
    --ttl=48 \
    --schedule="0 0 * * *"

結果
コマンド実行後、Laravel スケジューラが設定され、指定時間に自動で古い一時アップロードが削除されます。
S3 ストレージを常にクリーンに保ち、手動でファイルを消す手間を省けます。

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする