サブジェクトを作成する

このドキュメントでは、スキーマ レジストリでサブジェクトを作成する方法について説明します。サブジェクトは、スキーマのさまざまなバージョンを格納する論理コンテナです。 サブジェクトを初めて作成するときに、そのサブジェクトのスキーマの最初のバージョンも作成します。

サブジェクトは、次のいずれかの方法で作成できます。

  • 暗黙的(デフォルト): 多くのプロデューサー クライアントとコンシューマー クライアントのデフォルトの動作では、クライアントが接続したときに存在しないスキーマが自動的に作成されます。スキーマを参照するサブジェクトとバージョンも自動的に作成されます。これは便利ですが、複数のクライアントが同時にバージョンを作成すると、データの不整合が生じる可能性があります。

  • 明示的(推奨): この方法では、プロデューサー クライアントまたはコンシューマー クライアントが使用する前に、各スキーマをレジストリに作成する必要があります。これを行うには、 コンソールまたは Managed Kafka API Google Cloud を使用します。

この動作は、クライアント設定で構成する必要があります。詳細については、シリアライザまたはデシリアライザ クライアント ライブラリのドキュメントをご覧ください。

始める前に

必要なロールと権限

サブジェクトの作成に必要な権限を取得するには、プロジェクトまたはスキーマ レジストリに対するManaged Kafka スキーマ レジストリ編集者 roles/managedkafka.schemaRegistryEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには サブジェクトの作成に必要な権限が含まれています。必要とされる正確な権限については、必要な権限セクションを開いてご確認ください。

必要な権限

サブジェクトを作成するには、次の権限が必要です。

  • 親コンテキストまたはデフォルト コンテキストに次の権限を付与します。 managedkafka.versions.create

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

サブジェクトまたはスキーマの最初のバージョンを作成する

サブジェクトを作成すると、その最初のバージョンも作成されます。この最初のバージョンでは、新しいスキーマが作成されるか、既存のスキーマが参照されます。

コンソール

  1. コンソールで、[**スキーマ レジストリ**] ページに移動します。 Google Cloud

    [スキーマ レジストリ] に移動

  2. サブジェクトを作成するスキーマ レジストリの名前をクリックします。

  3. [ [サブジェクトを作成]] をクリックします。

  4. [**サブジェクト名**] に、サブジェクトの一意の名前を入力します。

    名前は文字で始まり、文字、数字、次の特殊文字のみを含める必要があります。ダッシュ(-)、ピリオド(.)、アンダースコア(_)、チルダ(~)、パーセント(%)、プラス記号(+)。サブジェクトの名前は変更できません。

    サブジェクト名の選択の詳細については、 サブジェクトの命名戦略をご覧ください。

  5. For [Context] で、コンテキストを選択するか、新しいコンテキストを作成します。コンテキストは名前空間のように機能して、サブジェクトとスキーマを整理し、異なるグループ間の分離を提供します。

    • 既存のコンテキストを使用するには、[コンテキスト] リストからコンテキストを選択します。 デフォルト コンテキストは (default context) と表示されます。

    • 新しいコンテキストを作成するには、次の操作を行います。

      1. [コンテキスト] リストから [コンテキストを作成] を選択します。

      2. [コンテキスト名] フィールドに、コンテキストの名前を入力します。

        名前は文字で始まり、文字、数字、次の特殊文字のみを含める必要があります。ダッシュ(-)、ピリオド(.)、アンダースコア(_)、チルダ(~)、パーセント(%)、プラス記号(+)。コンテキストの名前は変更できません。

      3. [保存] をクリックします。

  6. [**スキーマタイプ**] で [**Avro**] または [**プロトコル バッファ**] を選択します。

  7. [スキーマ定義] フィールドに、スキーマ定義を入力します。スキーマの形式は、スキーマタイプと一致している必要があります。スキーマ フィールド名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。

  8. スキーマがスキーマ レジストリの他のスキーマで定義されたデータ構造を使用または依存している場合は、次の操作を行います。

    1. [スキーマ参照を追加] をクリックします。
    2. [参照名] フィールドに、参照されるスキーマの参照名を入力します。
    3. [サブジェクト] リストで、参照されるスキーマを含むサブジェクトを選択します。
    4. [バージョン] リストで、参照されるスキーマのバージョン番号を選択します。
    5. [OK] をクリックします。

    参照されるスキーマごとに、上記の手順を繰り返します。

  9. [作成] をクリックします。

REST

リクエストは、Authorization ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報 のアクセス トークンを取得する場合は、 gcloud auth application-default print-access-token を使用します。

次の REST API サンプルでは、サブジェクトの最初のバージョンを作成します。

デフォルト コンテキスト内にサブジェクトを作成するには、POST リクエストを 指定された URI に projects.locations.schemaRegistries.subjects.versions.create メソッドを使用して送信します。

POST https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID/versions
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json

または、特定のコンテキストを使用する場合は、サブジェクト コレクション URI を使用して projects.locations.schemaRegistries.contexts.subjects.versions.create メソッド:

POST https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID/versions
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json

次のように置き換えます。

  • PROJECT_ID(必須): Google Cloud プロジェクト ID。

  • LOCATION(必須): スキーマ レジストリが存在する Google Cloud リージョン 。

  • REGISTRY_ID(必須): ターゲット スキーマ レジストリの ID。

  • CONTEXT_ID(省略可): サブジェクトを含むコンテキストの ID。明示的に指定する場合は、デフォルト コンテキストに . を使用します。それ以外の場合は、 /contexts/CONTEXT_ID を省略して、デフォルト コンテキストを 暗黙的に使用します。

    名前は文字で始まり、文字、数字、次の特殊文字のみを含める必要があります。ダッシュ(-)、ピリオド(.)、アンダースコア(_)、チルダ(~)、パーセント(%)、プラス記号(+)。コンテキストの名前は変更できません。

  • SUBJECT_ID(必須): 最初のバージョンを作成する新しいサブジェクトの ID 。

    名前は文字で始まり、文字、数字、次の特殊文字のみを含める必要があります。ダッシュ(-)、ピリオド(.)、アンダースコア(_)、チルダ(~)、パーセント(%)、プラス記号(+)。サブジェクトの名前は変更できません。

リクエストの本文:

リクエストの本文に、スキーマの詳細を指定する JSON オブジェクトを含めます。

{
  "schema": "YOUR_SCHEMA_DEFINITION_STRING",
  "schema_type": "AVRO" | "PROTOBUF", // Optional, defaults to AVRO
  "references": [ // Optional
    {
      "name": "REFERENCE_NAME",
      "subject": "REFERENCED_SUBJECT_ID",
      "version": REFERENCED_VERSION_NUMBER
    }
    // ... more references
  ]
  // "version": VERSION_NUMBER, // Optional: Usually omitted, let service assign next
  // "id": SCHEMA_ID, // Optional: Usually omitted, let service assign or reuse
}

次のように置き換えます。

  • YOUR_SCHEMA_DEFINITION_STRING (必須): 実際のスキーマ定義ペイロードを含む文字列。

    スキーマ フィールド名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。

  • schemaType(省略可): スキーマのタイプ。AVRO または PROTOBUF を指定できます。省略すると、デフォルトで AVRO になります。

  • references (省略可): このスキーマで参照されるスキーマを定義するオブジェクトの配列。

    • REFERENCE_NAME: このスキーマの定義内で他のスキーマを参照するために使用される名前。
    • REFERENCED_SUBJECT_ID: 参照されるスキーマのサブジェクト ID。
    • REFERENCED_VERSION_NUMBER: 参照されるサブジェクトのスキーマの特定のバージョン番号。
  • versionIdschemaId: 通常はサービスによって処理される省略可能なフィールド。サブジェクトの最初のバージョンでは、versionId は「1」になります。

リクエストが成功し、スキーマが有効で、互換性チェックに合格した場合(構成されている場合)、API は 200 OK ステータス コードを返します。レスポンスの本文には、作成されたバージョンで使用されるスキーマ ID が含まれます。これはバージョン ID とは異なります。

詳しくは、 REST API のドキュメントをご覧ください。

次のステップ

Apache Kafka® は、Apache Software Foundation または米国その他の諸国における関連会社の商標です。