YAML設定ファイルの使い方
LightFile Batchは設定オプションが多いため、YAML設定ファイルで設定を構造化して記述できます。複雑な設定を読みやすく管理し、チームメンバーや複数のサーバーで共有できます。
YAML設定ファイルとは
YAML設定ファイルを使用すると、LightFile Batchの設定を一つのファイルにまとめて管理できます。
メリット:
- 決まった設定セットを一つのファイルとして共有できる - チームメンバーや複数のサーバーで同じ設定を使用
- 設定をバージョン管理できる - Gitなどで設定の変更履歴を追跡
- 環境ごとに設定ファイルを分けられる - 開発・本番など、異なる環境で異なる設定を適用
- コマンドラインが短くシンプルになる - 複雑な設定を毎回入力する必要がない
基本的な使い方
暗黙の設定ファイル
LightFile Batchは、以下のパスに設定ファイルが存在する場合、自動的に読み込みます。
~/.lightfile-next/batch/config.ymlこの暗黙の設定ファイルは、すべての実行時に適用されます。環境全体で共通の設定を記述しておくと便利です。
設定ファイルの明示的な指定
# 単一の設定ファイル
lightfile-batch --config config.yaml
# 複数の設定ファイル(後のファイルが優先)
lightfile-batch --config base.yaml --config override.yaml複数の設定ファイルの挙動
複数の設定ファイルを指定した場合、以下の順序で設定が適用されます。
- 暗黙の設定ファイル (
~/.lightfile-next/batch/config.yml) - 存在すれば自動読み込み - 最初の
--configで指定したファイル - 2番目の
--configで指定したファイル - 3番目以降も同様
- コマンドラインオプション - 最優先
後から読み込まれた設定が、前の設定を上書きします。
例:
lightfile-batch --config base.yaml --config override.yaml --quality highこの場合:
~/.lightfile-next/batch/config.ymlが読み込まれる(存在すれば)base.yamlの設定で上書きoverride.yamlの設定でさらに上書き--quality highが最終的に適用される
最小限の設定例
ファイルシステムの種類は batch.fileSystem に、処理対象ディレクトリは batch.dir に、接続設定は batch.<ファイルシステム> の下に書きます。
ローカルファイルシステムの場合:
# config.yaml
batch:
fileSystem: local
dir: /path/to/imageslightfile-batch --config config.yamlS3の場合:
# config.yaml
batch:
fileSystem: s3
s3:
bucket: my-bucket
acl: privatelightfile-batch --config config.yamlYAML設定ファイルだけで実行する
v6.0.10 から、FTP・SFTP・WebDAV・S3 のジョブもYAML設定ファイルだけで実行できます。サブコマンドを付けずに -c(--config)だけを渡すと、設定ファイルの batch.fileSystem(ftp / sftp / s3 / webdav / local)に従って処理します。
# job.yaml
batch:
fileSystem: ftp
dir: images # basePath の下の処理対象ディレクトリ
ftp:
host: ftp.example.com
user: myuser
password: mypassword
basePath: /public_html
modTimeSource: mdtm # 更新日時をMDTMで取る(任意)lightfile-batch -c job.yaml| 実行のしかた | 使われるファイルシステム |
|---|---|
lightfile-batch -c job.yaml | 設定ファイルの batch.fileSystem(v6.0.10 から) |
lightfile-batch -c job.yaml /path/to/images | ローカル(対象ディレクトリの引数を付けた場合は従来どおり) |
lightfile-batch local -c job.yaml | ローカル |
lightfile-batch ftp -c job.yaml など | サブコマンドのファイルシステム |
- サブコマンドを付けた場合も、設定ファイルの接続先はそのまま使われます。
--ftp-hostなどの引数は、指定したときだけ設定ファイルの値を上書きします - 接続先の必須項目(FTPの
host、SFTPのhostとuser、WebDAVのurl、S3のbucketとacl)は、引数か設定ファイルのどちらかにあれば実行できます
v6.0.8 までの挙動
v6.0.8 までは、サブコマンドを省略すると設定ファイルの batch.fileSystem にかかわらず常にローカルとして扱われました。また ftp / sftp サブコマンドは、--ftp-host などを指定しなかった場合に、設定ファイルの接続先を空の値で上書きしていました。
設定の優先順位
複数の設定方法が指定された場合、以下の優先順位で適用されます。
- コマンドラインオプション(最優先)
- 環境変数
- 明示的に指定したYAML設定ファイル(複数指定時は後のファイルが優先)
- 暗黙の設定ファイル (
~/.lightfile-next/batch/config.yml) - デフォルト値(最低優先)
例:
# ~/.lightfile-next/batch/config.yml(暗黙の設定)
optimization:
quality: low
# config.yaml(明示的に指定)
optimization:
quality: medium# コマンドラインで上書き
lightfile-batch --config config.yaml --quality high
# → quality=high が適用される(コマンドラインオプションが最優先)
# 設定ファイルのみ指定
lightfile-batch --config config.yaml
# → quality=medium が適用される(config.yamlが暗黙の設定を上書き)
# 設定ファイルを指定しない場合
lightfile-batch local /path/to/images
# → quality=low が適用される(暗黙の設定ファイルが使用される)設定ファイルのバリデーション
LightFile Batchは起動時に設定をバリデーションします。
よくあるエラー
必須項目の不足
S3バケットが必要です(英語環境では S3 bucket is required)、FTPホストが必要です のようなメッセージで止まります。
対処法: 必須項目を設定ファイル(batch.s3.bucket など)またはコマンドラインで指定してください。
無効な値
Error: 設定が無効です: invalid log level: "verbose"対処法: 有効な値を指定してください(例: debug, info, warn, error)。
複数ファイルシステムの指定
Error: 設定が無効です: multiple file systems specified対処法: local, s3, ftp, sftp, webdav のいずれか1つのみを指定してください。
設定ファイルのテスト
設定ファイルが正しいか確認するには、ドライラン(プレビュー)で実行します。
lightfile-batch --config config.yaml --dry-runこれにより、実際の処理を行わずに設定の検証とファイルスキャンのみ実行されます。
セキュリティに関する注意
機密情報の管理
以下の情報はYAMLファイルに直接記述せず、環境変数で管理することを推奨します。
licenseTokenbatch.s3.accessKeyId/batch.s3.secretAccessKeybatch.ftp.password/batch.sftp.passwordnotify.smtp.password
.gitignoreへの追加
機密情報を含む設定ファイルはバージョン管理から除外してください。
# .gitignore
config.yaml
config-*.yaml
*.secret.yamlファイルパーミッション
# 設定ファイルを自分のみ読み書き可能にする
chmod 600 config.yaml関連ページ
- YAML設定ファイル完全リファレンス - すべての設定項目の詳細
- コマンドラインオプション - コマンドラインでの設定方法
- 環境変数 - 環境変数での設定方法