CloudEvents インスペクター

CloudEvents のイベント、または本文付きの ce-* ヘッダーを貼り付けると、欠けているコンテキスト属性やペイロードの競合を確認できます。正規化したイベント JSON と HTTP バイナリモードのヘッダーはそのままコピーできます。

ブラウザ内でローカルに実行
このツールの処理はすべてブラウザ内で行われます。KivTools が入力内容をアップロード・保存したり、外部 API に送信したりすることはありません。
CloudEvent JSON または HTTP ヘッダー構造化イベント、または ce-* ヘッダーと任意の本文を貼り付けてください。

構造化 JSON または HTTP バイナリモードを使用します。このツールはイベントを公開したりエンドポイントを呼び出したりしません。

正規化された構造化イベント

CloudEvent を検証する手順

CloudEvents インスペクターは、HTTP バインディングが定める 2 つの形式のどちらでも 1 件ずつ読み取ります。JSON エンベロープ(構造化モード)か、ce-* ヘッダーと任意の本文の組み合わせ(バイナリモード)です。CloudEvents 1.0 に照らしてコンテキスト属性を確認し、同じイベントを正規化した構造化 JSON とバイナリモードのヘッダーとして書き直します。

処理はすべてこのタブ内で完結します。イベントの公開、エンドポイントの呼び出し、スキーマレジストリへの問い合わせは行わず、貼り付けて変換している間もネットワークログは空のままです。

  1. CloudEvents の JSON エンベロープを貼り付けるか、ce-specversion: 1.0 に続けて ce-id、ce-source、ce-type を並べたヘッダーブロックを貼り付け、空行の後に本文を書きます。ヘッダー名の大文字と小文字は区別されず、POST /events HTTP/1.1 のようなリクエスト行は無視されます。
  2. 「検証と変換」を押します。「例を読み込む」を使うと、すべての検査を通るイベントが入力欄に入ります。
  3. まず概要を確認します。4 つ中いくつのコアフィールドがあるか、拡張属性の数、ペイロードのサイズ、判定された入力モードです。下の指摘リストには、欠落・型違い・規約違反の属性が個別に並びます。
  4. 各パネル上部のボタンで、正規化した構造化イベントまたは HTTP バイナリモードのヘッダーをコピーし、次のイベントの前に「クリア」を押します。

検査内容と出力

構造化 JSON と HTTP バイナリモード

入力が波かっこで始まる場合は JSON エンベロープとして解析します。それ以外はヘッダーブロックとして読み取り、Content-Type が application/cloudevents+json のブロックはヘッダーの下の本文を構造化 JSON として復号します。

バイナリモードでは、最初の空行より後がすべて本文です。Content-Type が JSON を示す場合は本文をオブジェクトとして扱い、それ以外は文字列のままにするため、テキストのペイロードと JSON のペイロードが混ざることはありません。

CloudEvents 1.0 に対して確認する内容

必須の 4 属性 specversion、id、source、type は、欠落または空の場合と型が違う場合を分けて報告します。specversion は 1.0、source は空白を含まない空でない URI 参照、time はオフセットを含む RFC 3339 のタイムスタンプである必要があります。data と data_base64 は同時に使えず、data_base64 は正しい base64 でなければなりません。ペイロードがないイベントは仕様上認められているため、エラーではなく警告になります。

拡張属性は数えてそのまま保持します。コンテキスト属性の JSON null は未設定として扱い、これは JSON 形式の仕様に沿った挙動です。subject: null は正規化した出力から消え、data: null は明示的な null ペイロードとして残ります。

2 つの出力

正規化した構造化イベントは、コア属性、拡張属性(アルファベット順)、ペイロードの順に並びます。「コピー」はパネルの内容をそのまま取得するため、テスト用ファイルや差分に直接貼り付けられます。

バイナリモードのヘッダーには、コンテキスト属性ごとの ce-* ヘッダー(拡張属性を含む)と、ペイロードがある場合だけ Content-Type ヘッダーが入ります。ペイロードは空行の後に続き、data_base64 はそのまま転記されます。表示されるサイズは base64 文字列の長さではなく、復号後のバイト数です。

できないこと

これはエンベロープの検査です。ペイロードをスキーマに対して検証することはなく、CloudEvents の署名検証やブローカー固有の規則も対象外です。拡張属性の名前が仕様の命名規則に合っているかどうかも確認しません。

問題なしという結果は、イベントの形式が正しいことを意味するだけで、受信側が受け入れる保証ではありません。連携が失敗する場合は、プロデューサーを変更する前に、ブローカーのドキュメントや仕様の適合性テストと照合してください。

最近使ったツール: