YAMLバリデーター
デプロイやCIパイプラインに支障が出る前に、YAMLの構文エラーをチェックできます。バリデーターはYAML 1.2パーサーで入力内のすべてのドキュメントを解析し、キーの重複、インデントへのタブ使用、エイリアスの過剰な展開を検出します。最初に見つかったエラーについて、ドキュメント、行、列を示します。有効な入力では、ドキュメント数、それぞれのトップレベルの型、警告が表示されます。Kubernetes、Docker Compose、設定ファイルの作成者向けです。
よくある質問
YAMLバリデーターは何をチェックしますか?
インデント、ブロック形式とフロー形式のコレクション、引用符付きと引用符なしのスカラー、アンカー、エイリアス、タグ、ディレクティブなど、YAMLの構文全体を解析します。また、マッピング内のキーの重複もエラーとして扱います。結果には、簡単な概要とともに成功が表示されるか、最初のエラーの位置と説明が表示されます。
どのYAMLバージョンに準拠していますか?
バリデーターは、仕様の現行バージョンであるYAML 1.2のコアスキーマを使用します。1.2では、yes、no、on、offなどの語はブール値ではなく通常の文字列として扱われるため、これらが原因でエラーになることはありません。YAML 1.1向けに書かれたドキュメントも、構文が正しければ引き続き受け付けられます。
重複したキーがエラーとして報告されるのはなぜですか?
YAML仕様では、マッピング内のキーは一意である必要があります。多くのパーサーは最後の値を黙って保持するため、同じ設定が二重に定義されているなどの設定ミスが見えなくなります。バリデーターは重複したキーの行と列を報告するので、どの値を残すか判断できます。
行番号、列番号、ドキュメント番号はどのように数えますか?
行番号と列番号は、貼り付けた入力の先頭を1として数えます。ドキュメントは、---の行で区切られた出現順に数えるため、最初のドキュメントはドキュメント1です。位置はパーサーが問題を検出した箇所を示すため、実際の誤りの直後になることがあります。
複数のYAMLドキュメントを一度に検証できますか?
はい。複数のドキュメントを扱うKubernetesマニフェストのように、---で区切ると、すべてのドキュメントが解析されます。有効な結果には、ドキュメント数と各ドキュメントのトップレベルの型が表示されます。
トップレベルの型とは何ですか?
各ドキュメントのルートに含まれるものを示します。キーと値のマッピング、項目のシーケンス、単一のスカラー値、または何もない状態です。ほとんどの設定ファイルはマッピングで、リソースの一覧はシーケンスであることがよくあります。ここで型が間違っている場合、ダッシュの位置やインデントが誤っていることが多いです。
警告とは何ですか?
警告は、解析を止めない問題です。たとえば、パーサーが認識しないタグは通常の値として読み込まれます。警告はそれぞれ行と列とともに、最大20件まで表示されます。警告があるドキュメントも有効として扱われます。
タブが拒否されるのはなぜですか?
YAMLでは、幅が一定しないため、インデントにタブ文字を使うことが禁止されています。報告された行の先頭にあるタブをスペースに置き換え、前後の行とインデントを揃えてください。値や引用符で囲まれた文字列の中ではタブを使用できます。
エイリアス爆弾への対策はありますか?
あります。エイリアスの展開は最大100回までです。そのため、エイリアスを増殖させてギガバイト単位のデータを生成するように作られたドキュメントは、一般に「Billion Laughs攻撃」と呼ばれる攻撃として、メモリを使い果たすことなく無効と報告されます。設定を共有するためにアンカーやエイリアスを通常どおり使用する場合、この上限を大きく下回ります。
KubernetesやOpenAPIなどのスキーマに照らして検証しますか?
いいえ。特定のスキーマにキーと値が合致するかではなく、構文と構造のみを確認します。入力の上限は5 MiBです。有効なYAMLをJSON、TOML、または別の形式に変換するには、Data Format Converterをお使いください。