YAML設定ファイル
LightFile Batchのすべての設定をYAMLファイルで管理できます。このページではYAML設定ファイルで使用できるすべての設定項目を説明します。
全設定レイアウト
YAMLファイルは以下のトップレベルセクションで構成されます。
# ライセンス
licenseToken: "your-license-token"
# システムディレクトリ
dir:
system: ~/.lightfile-next/batch
project: ""
fileMemory: ""
backup: ""
session: ""
sessions: "" # v6.0.4+
sessionRetentionDays: 28
# ログ設定
log:
level: info
progressInterval: 30s
quiet: false
verbose: false
sessionLogProgress: false # v6.0.4+
# 実行制御
dryRun: false
nonExclusive: false
# インデックスファイル
index:
file: ""
remoteFile: ""
# 処理対象(ファイルシステム・ディレクトリ・フィルタ・接続設定)
batch:
fileSystem: local # local, s3, ftp, sftp, webdav
dir: /path/to/images
# フィルタ・実行制御
after: ""
before: ""
minSize: ""
maxSize: ""
extensions: []
include: []
exclude: []
limit: 0
concurrency: 1
# 接続設定(fileSystem に応じていずれか1つ)
s3:
# S3/S3互換ストレージの設定
ftp:
# FTPサーバーの設定
sftp:
# SFTPサーバーの設定
webdav:
# WebDAVサーバーの設定
# バックアップ設定
backup:
mode: strict
fileSystem: local
# 最適化設定
optimization:
quality: medium
jpegQuality: medium
pngQuality: medium
# レポート設定
report:
skip: false
# 通知設定
notify:
smtp:
# SMTP通知設定
email:
# Lambda Email通知設定
slack:
# Slack通知設定共通設定
ライセンス
licenseToken: "your-license-token-here"説明: ライセンストークンを指定します。
優先順位:
- コマンドラインオプション
--license-token - 環境変数
LF_TOKEN - ファイル
~/.lightfile-next/token - YAML設定ファイル(この項目)
詳細は ライセンスのセットアップ を参照してください。
システムディレクトリ
dir:
system: ~/.lightfile-next/batch # システムディレクトリ
project: "" # プロジェクトディレクトリ(空の場合は自動生成)
fileMemory: "" # KVS保存先(空の場合は <project>/memory)
backup: "" # バックアップディレクトリ(空の場合は <project>/backup)
session: "" # セッションディレクトリ(空の場合は自動生成)
sessions: "" # セッション親ディレクトリ (v6.0.4+)
sessionRetentionDays: 28 # セッション保持日数(0で無制限)デフォルト値:
sessionRetentionDays:28日間
詳細は システムディレクトリ を参照してください。
ログ設定
log:
level: info # ログレベル: debug, info, warn, error
progressInterval: 30s # 進捗ログの出力間隔(0で無効化)
quiet: false # コンソール出力を抑制(エラーのみ表示)
verbose: false # 内部処理の詳細ログを表示
sessionLogProgress: false # 進捗ログをセッションログファイルにも記録 (v6.0.4+)デフォルト値:
level:infoprogressInterval:30s(30秒)quiet:falseverbose:falsesessionLogProgress:false
時間単位: ms(ミリ秒)、s(秒)、m(分)、h(時間)
詳細は ログ機能 を参照してください。
実行制御
dryRun: false # ドライラン(プレビュー)(上書き保存も処理済みの記録もしない)
nonExclusive: false # 排他制御を無効化デフォルト値: すべて false
dryRun: true のときは、処理済みの記録に何も書きません(v6.0.10 から)。詳細は ドライラン(プレビュー) を参照してください。
注意: quiet の設定は log: セクション内で log.quiet として指定してください。トップレベルの quiet: は認識されません。
インデックスファイル
index:
file: "" # ローカルインデックスファイルのパス
remoteFile: "" # リモートインデックスファイルの相対パス(リモートFS用)詳細は インデックスファイル を参照してください。
処理対象とファイルシステム設定
処理対象は batch セクションにまとめて書きます。
batch.fileSystem- ファイルシステムの種類(local/s3/ftp/sftp/webdav)batch.dir- 処理対象ディレクトリbatch.afterなどのフィルタとbatch.limit/batch.concurrency- すべてのファイルシステムで共通batch.s3/batch.ftp/batch.sftp/batch.webdav- 接続設定
接続設定は batch の下に書く
接続設定やフィルタをトップレベルの ftp: / sftp: / webdav: / s3: / local: に書いても、処理には使われません(トップレベルから読み取られるのは dir だけです)。batch.ftp のように batch の下に書いてください。
batch.fileSystem を書いておけば、サブコマンドなしの lightfile-batch -c job.yaml だけで実行できます(v6.0.10 から)。詳細は YAML設定ファイルの使い方 を参照してください。
共通項目(フィルタ・実行制御)
batch:
fileSystem: local # local, s3, ftp, sftp, webdav
dir: /path/to/images # 処理対象ディレクトリ
# フィルタオプション
after: "" # 指定日時より新しいファイル(例: 7d, 2024-01-01)
before: "" # 指定日時より古いファイル(例: 30d, 2024-12-31)
minSize: "" # 最小ファイルサイズ(例: 100kb, 2mb)
maxSize: "" # 最大ファイルサイズ(例: 5mb, 1gb)
extensions: # 処理対象拡張子(デフォルト: .jpg,.jpeg,.png,.jfif)
- .jpg
- .jpeg
- .png
include: # 対象パターン(glob形式)
- "uploads/**/*.jpg"
exclude: # 除外パターン(glob形式)
- "**/thumbnails/**"
# 実行制御
limit: 0 # 処理ファイル数上限(0で無制限)
concurrency: 1 # 並列処理数デフォルト値:
extensions:[".jpg", ".jpeg", ".png", ".jfif"]minSize/maxSize: 未指定なら5kb/5mb(最適化エンジンの既定値。範囲外のファイルは v6.0.10 からスキャンの段階で対象外)limit:0(無制限)concurrency:1(順次処理)
dir の意味はファイルシステムによって違います:
| ファイルシステム | batch.dir |
|---|---|
local | 処理対象ディレクトリそのもの(必須) |
ftp / sftp | basePath の下のディレクトリ。この下だけをたどる |
webdav | url の下のディレクトリ。この下だけをたどる |
s3 | 使わない(batch.s3.prefix で絞る) |
FTP/SFTP/WebDAVの dir では、先頭の / は無視されます。指定したディレクトリが存在しない場合はエラーで止まります。処理済みの記録はベースパス基準なので、dir を変えても記録は引き継がれます。v6.0.8 までは dir が無視され、ベースパスの下をすべて処理していました。
ローカルファイルシステム
batch:
fileSystem: local
dir: /path/to/images # 処理対象ディレクトリ(必須)S3/S3互換ストレージ
batch:
fileSystem: s3
s3:
# 接続設定
endpoint: "" # S3互換エンドポイント(Amazon S3の場合は空)
bucket: my-bucket # バケット名(必須)
region: us-east-1 # リージョン
accessKeyId: "" # アクセスキー(環境変数でも可)
secretAccessKey: "" # シークレットキー(環境変数でも可)
prefix: "" # バケット内のプレフィックス(パス)
# S3設定
acl: private # ACL(必須: private, public-read, etc.)
forcePathStyle: false # パススタイルを強制(MinIO等で使用)
useSSL: true # SSL/TLS使用
batchSize: 1000 # リスト取得のバッチサイズデフォルト値:
region:us-east-1useSSL:truebatchSize:1000
必須項目: bucket, acl(コマンドラインの --s3-bucket / --s3-acl でも可)
詳細は リモートファイルシステム - S3 を参照してください。
FTP/FTPS
batch:
fileSystem: ftp
dir: images # basePath の下の処理対象ディレクトリ
ftp:
# 接続設定
host: ftp.example.com # ホスト名(必須)
port: 21 # ポート番号
user: ftpuser # ユーザー名(空なら匿名)
password: ftppassword # パスワード
# TLS設定
useTLS: false # 明示的TLS使用(AUTH TLS)
useImplicitTLS: false # 暗黙的TLS使用(ポート990)
ignoreTLSErrors: false # TLSエラーを無視(開発用)
# 接続オプション
passiveMode: true # パッシブモード
shortTimeout: 30 # 短いタイムアウト(秒)
longTimeout: 300 # 長いタイムアウト(秒)
basePath: "" # ベースパス(空ならログイン直後のディレクトリ)
modTimeSource: list # 更新日時の取り方: list(既定)| mdtm(v6.0.10+)デフォルト値:
port:21passiveMode:trueshortTimeout:30秒longTimeout:300秒(5分)modTimeSource:list
必須項目: host(コマンドラインの --ftp-host でも可)
modTimeSource(v6.0.10+):
list- 一覧の時刻を使う(MLSD があれば MLSD、無ければ LIST)。LIST は多くのサーバーで現地時刻・分単位(古いファイルは日付のみ)で、時差の分だけずれた UTC として読まれるmdtm- ファイルごとに MDTM で取る(秒単位・UTC・正確)。1ファイル1往復かかるのでスキャンは遅くなる。MDTM に失敗したファイルは一覧の時刻を使う
Microsoft FTP Service(IIS)など MLSD の無いサーバーや、旧 LightFile から移行した記録を使う場合は mdtm を推奨します。list から mdtm に切り替えると、記録済みの時刻と合わず全ファイルを1度読み直します。
注意: useImplicitTLSを使用する場合は、通常ポート990を指定します(port: 990)。
詳細は リモートファイルシステム - FTP を参照してください。
SFTP
batch:
fileSystem: sftp
dir: images # basePath の下の処理対象ディレクトリ
sftp:
# 接続設定
host: sftp.example.com # ホスト名(必須)
port: 22 # ポート番号
user: sftpuser # ユーザー名(必須)
# 認証設定(パスワードまたは秘密鍵)
password: "" # パスワード認証
privateKey: "" # 秘密鍵の中身(PEM文字列)
privateKeyPath: "" # 秘密鍵ファイルのパス(--sftp-private-key に対応)
privateKeyPassword: "" # 秘密鍵のパスフレーズ
# 接続オプション
shortTimeout: 30 # 短いタイムアウト(秒)
longTimeout: 300 # 長いタイムアウト(秒)
basePath: "" # ベースパス(空ならログイン直後のディレクトリ。--sftp-base-path に対応)
walkConcurrency: 4 # スキャンで並列に読むディレクトリの数(1 = 直列。--sftp-walk-concurrency に対応。v6.0.10+)デフォルト値:
port:22shortTimeout:30秒longTimeout:300秒(5分)walkConcurrency:4
必須項目: host, user(コマンドラインの --sftp-host / --sftp-user でも可)
詳細は リモートファイルシステム - SFTP を参照してください。
WebDAV
batch:
fileSystem: webdav
dir: Photos # url の下の処理対象ディレクトリ
webdav:
# 接続設定
url: https://webdav.example.com/remote.php/dav/files/user/ # WebDAV URL(必須)
user: webdavuser # ユーザー名
password: webdavpassword # パスワード
# 接続オプション
shortTimeout: 30 # 短いタイムアウト(秒)
longTimeout: 300 # 長いタイムアウト(秒)デフォルト値:
shortTimeout:30秒longTimeout:300秒(5分)
必須項目: url(コマンドラインの --webdav-url でも可)
WebDAVでは url そのものが処理の起点です。
詳細は リモートファイルシステム - WebDAV を参照してください。
バックアップ設定
backup:
# 基本設定
mode: strict # strict(必須、失敗で中止), loose(失敗しても続行), none(バックアップなし)
fileSystem: local # local または s3
# ローカルバックアップ - ディスク容量管理
freeSpaceThreshold: 10gb # 空き容量しきい値(これを下回ると古いバックアップを削除)
targetFreeSpace: 15gb # 目標空き容量
requiredFreeSpace: 5gb # 開始時に必要な空き容量(下回っていたら処理せずに終了。v6.1.0〜)
# ローカルバックアップ - サイズ管理
maxTotalSize: 50gb # バックアップの最大サイズ
targetTotalSize: 40gb # バックアップの目標サイズ
# 共通設定
checkInterval: 1gb # 容量チェック間隔(この容量だけバックアップが増えるごとにチェック)
# S3バックアップ
s3:
endpoint: "" # S3互換エンドポイント
bucket: "" # バケット名
region: us-east-1 # リージョン
prefix: "" # プレフィックス(パス)
accessKeyId: "" # アクセスキー
secretAccessKey: "" # シークレットキー
acl: private # ACL
maxTotalSize: 100gb # S3バックアップの最大サイズ
targetTotalSize: 80gb # S3バックアップの目標サイズデフォルト値:
mode:strictfileSystem:localcheckInterval:1gbs3.region:us-east-1s3.acl:private
バックアップモード:
strict: バックアップ必須。失敗したら処理を中止(デフォルト)loose: バックアップを試みるが、失敗しても処理を続行none: バックアップしない
詳細は バックアップ機能 を参照してください。
最適化設定
optimization:
quality: medium # 全体品質: low, medium, high
jpegQuality: medium # JPEG品質: low, medium, high
pngQuality: medium # PNG品質: low, medium, highデフォルト値:
quality:mediumjpegQuality:mediumpngQuality:medium
品質レベル:
low: 最大圧縮(ファイルサイズ優先)medium: バランス型(デフォルト)high: 高品質(画質優先)
注意: jpegQualityとpngQualityが指定されていない場合は、qualityの値が使用されます。
レポート設定
report:
skip: false # レポート機能を無効化(デフォルト: false)デフォルト値:
skip:false(レポート機能は有効)
説明:
- LightFile Batchは使用統計(処理結果、エラー情報など)をLightFile6のレポートシステムに送信します
skip: trueを設定すると、レポート機能が無効化されます- レポートデータにはライセンス情報、処理統計、エラー情報が含まれます
- レポートはバッファリングされ、定期的にバックグラウンドで送信されます
コマンドラインオプション:
# レポート機能を無効化
lightfile-batch --config config.yaml --no-report通知設定
バッチ処理を続行できないエラー(Fatal Error)が発生したときに通知を送信します。複数の通知方法を同時に設定できます。
SMTP Email通知
notify:
smtp:
to: admin@example.com # 宛先
from: lightfile@example.com # 送信元
host: smtp.example.com # SMTPホスト
port: 587 # SMTPポート
user: smtp_user # SMTP認証ユーザー名
password: smtp_password # SMTP認証パスワード
useTLS: true # TLS使用
ignoreTLSErrors: false # TLSエラーを無視(開発用)デフォルト値:
port:587ignoreTLSErrors:false
注意: useTLSを指定しない場合はTLSが無効のままになります。ポート番号による自動判定は行われないため、TLSを使う場合は useTLS: true を必ず設定してください。
簡易Email通知
notify:
email:
to: # 宛先(複数指定可能)
- admin@example.com
- staff@example.com
cc: # CC(複数指定可能)
- manager@example.com
functionName: notificationSendPrd-m8p3q7r2s5 # Lambda関数名
region: ap-northeast-1 # AWSリージョンデフォルト値:
functionName:notificationSendPrd-m8p3q7r2s5region:ap-northeast-1
Slack通知
notify:
slack:
webhookUrl: https://hooks.slack.com/services/YOUR/WEBHOOK/URL # Webhook URL
channel: "#alerts" # チャンネル(Webhook設定を上書き)複数通知の組み合わせ
notify:
# SMTP経由でメール送信
smtp:
to: admin@example.com
from: lightfile@example.com
host: smtp.example.com
port: 587
user: smtp_user
password: smtp_password
# 同時にSlackにも通知
slack:
webhookUrl: https://hooks.slack.com/services/YOUR/WEBHOOK/URL
channel: "#alerts"詳細は 通知機能 を参照してください。
関連ページ
- YAML設定ファイルの使い方 - YAML設定ファイルの基本的な使い方と実用例
- コマンドラインオプション - すべてのCLIオプション
- 環境変数 - 環境変数での設定方法