新しいスキーマ バージョンを作成すると、スキーマ レジストリは新しいバージョンが以前のバージョンと互換性があることを確認します。スキーマの互換性を適用すると、データ構造が進化しても、データ プロデューサーとコンシューマーが正しく動作し続けるようになります。
互換性タイプでサポートされている値は、下位互換性、下位互換性(推移的)、上位互換性、上位互換性(推移的)、完全互換性、完全互換性(推移的)、なしです。
互換性タイプは JSON オブジェクトとして管理されます。次に例を示します。
{ "compatibility": "BACKWARD" }明示的に設定されていない場合、スキーマ レジストリの互換性タイプはデフォルトで Backward になります。
サブジェクトに互換性タイプが設定されていない場合、スキーマ レジストリから値が継承されます。
サブジェクト レベルで設定された構成は、スキーマ レジストリ レベルの構成をオーバーライドします。
互換性タイプを更新しても、更新後に登録された新しいスキーマ バージョンにのみ影響します。
互換性タイプについて詳しくは、互換性タイプについてをご覧ください。
互換性タイプを更新するために必要なロールと権限
スキーマ レジストリまたはサブジェクトの互換性タイプを更新するために必要な権限を取得するには、プロジェクトに対する Managed Kafka Schema Registry 編集者 (roles/managedkafka.schemaRegistryEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、スキーマ レジストリまたはサブジェクトの互換性タイプを更新するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スキーマ レジストリまたはサブジェクトの互換性タイプを更新するには、次の権限が必要です。
-
互換性タイプを更新するリソースに次の権限を付与します。
managedkafka.config.update
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
スキーマ レジストリの互換性タイプを更新する
コンソール
スキーマ レジストリ全体の互換性タイプを更新する手順は次のとおりです。
- Google Cloud コンソールで、[スキーマ レジストリ] ページに移動します。
プロジェクト内のスキーマ レジストリのリストが表示されます。
- 互換性タイプを更新するスキーマ レジストリの名前をクリックします。
[スキーマ レジストリの詳細] ページが開きます。
- レジストリのメインの詳細セクションで、[互換性タイプ] 設定を見つけて、その横にある [編集] アイコンをクリックします。
[互換性タイプの編集] ページが開きます。
- [互換性タイプ] プルダウン メニューから値を選択します。
- [保存] をクリックします。
gcloud
スキーマ レジストリの互換性タイプを更新するには、gcloud alpha managed-kafka schema-registries update コマンドを使用します。
gcloud alpha managed-kafka schema-registries update SCHEMA_REGISTRY_ID
--location=LOCATION
--compatibility=COMPATIBILITY_TYPE
SCHEMA_REGISTRY_ID: 更新するスキーマ レジストリの ID。LOCATION: スキーマ レジストリのリージョン。COMPATIBILITY_TYPE: 新しい互換性タイプ。有効な値は、BACKWARD、BACKWARD_TRANSITIVE、FORWARD、FORWARD_TRANSITIVE、FULL、FULL_TRANSITIVE、NONEです。
例: us-central1 リージョンの test-registry スキーマ レジストリの互換性タイプを FORWARD に更新します。
gcloud alpha managed-kafka schema-registries update test-registry
--location=us-central1
--compatibility=FORWARD
REST
スキーマ レジストリの互換性タイプを更新するには、REST API に PUT リクエストを行います。
まず、アクセス トークンを取得します。
gcloud auth application-default print-access-token
次に、レジストリの構成エンドポイントに PUT リクエストを送信します。
PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/config
次のパスパラメータを置き換えます。
PROJECT_ID: Google Cloud プロジェクト ID。LOCATION: スキーマ レジストリが存在するリージョン。SCHEMA_REGISTRY_ID: スキーマ レジストリの ID。
リクエスト本文に次の JSON オブジェクトを含めます。
{ "compatibility": "COMPATIBILITY_TYPE" }
COMPATIBILITY_TYPE は、NONE、BACKWARD、FORWARD、FULL などの有効な値に置き換えます。
成功すると、API は 200 OK ステータス コードを返します。
サブジェクトの互換性タイプを更新する
コンソール
特定のサブジェクトの互換性タイプを更新する手順は次のとおりです。
- Google Cloud コンソールで、[スキーマ レジストリ] ページに移動します。
- サブジェクトを含むスキーマ レジストリの名前をクリックします。
[スキーマ レジストリの詳細] ページが開きます。
- [このスキーマ レジストリのサブジェクト] テーブルで、サブジェクトの名前をクリックします。
- 対象の [互換性タイプ] 設定を見つけて、その横にある [編集] アイコンをクリックします。
[互換性タイプの編集] ページが開きます。
- [互換性タイプ] プルダウン メニューから値を選択します。ここで値を選択すると、このサブジェクトのレジストリ レベルの設定がオーバーライドされます。
- [保存] をクリックします。
gcloud
サブジェクトの互換性タイプを更新するには、gcloud alpha managed-kafka schema-registries subject update コマンドを使用します。
gcloud alpha managed-kafka schema-registries subject update SUBJECT_ID
--schema-registry=SCHEMA_REGISTRY_ID
--location=LOCATION
--compatibility=COMPATIBILITY_TYPE
SUBJECT_ID: 更新するサブジェクトの ID。SCHEMA_REGISTRY_ID: サブジェクトを含むスキーマ レジストリの ID。LOCATION: スキーマ レジストリのリージョン。COMPATIBILITY_TYPE: 新しい互換性タイプ。有効な値は、BACKWARD、BACKWARD_TRANSITIVE、FORWARD、FORWARD_TRANSITIVE、FULL、FULL_TRANSITIVE、NONEです。
例: us-central1 リージョンの test-registry スキーマ レジストリ内の test-subject サブジェクトの互換性タイプを FORWARD_TRANSITIVE に更新します。
gcloud alpha managed-kafka schema-registries subject update test-subject
--schema-registry=test-registry
--location=us-central1
--compatibility=FORWARD_TRANSITIVE
REST
サブジェクトの互換性タイプを更新するには、REST API に PUT リクエストを送信します。
まず、アクセス トークンを取得します。
gcloud auth application-default print-access-token
デフォルトのコンテキストでサブジェクトの互換性を更新します。
PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/config/SUBJECT_ID
特定のコンテキストのサブジェクトの互換性を更新します。
PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/contexts/CONTEXT_ID/config/SUBJECT_ID
次のパスパラメータを置き換えます。
PROJECT_ID: Google Cloud プロジェクト ID。LOCATION: スキーマ レジストリが存在するリージョン。SCHEMA_REGISTRY_ID: スキーマ レジストリの ID。SUBJECT_ID: サブジェクトの ID。CONTEXT_ID: コンテキストの ID(該当する場合)。
リクエスト本文に次の JSON オブジェクトを含めます。
{ "compatibility": "COMPATIBILITY_TYPE" }
COMPATIBILITY_TYPE は、FORWARD_TRANSITIVE などの有効な値に置き換えます。
例: サブジェクト user_events の互換性を FORWARD_TRANSITIVE に設定します。
PUT https://managedkafka.googleapis.com/v1main/projects/test-project/locations/us-central1/schemaRegistries/test_registry/config/user_events さんへのリクエスト
本文あり:
{ "compatibility": "FORWARD_TRANSITIVE" }
成功すると、API は 200 OK ステータス コードを返します。