このドキュメントでは、スキーマ レジストリからサブジェクトを削除する方法について説明します。被写体を削除する方法は 2 つあります。
削除(復元可能)。サブジェクトを削除済みとしてマークしますが、情報は保持され、復元できます。サブジェクトのすべてのバージョンも削除済み(復元可能)になります。
完全に削除。対象者とその関連データを完全に削除します。
サブジェクトから特定のスキーマ バージョンを削除することもできます。詳細については、スキーマ サブジェクト バージョンを削除するをご覧ください。
必要なロールと権限
サブジェクトを削除するために必要な権限を取得するには、サブジェクトに対する Managed Kafka Schema Registry 編集者 (roles/managedkafka.schemaRegistryEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、サブジェクトの削除に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
サブジェクトを削除するには、次の権限が必要です。
-
削除するサブジェクトに次の権限を付与します。
managedkafka.subjects.delete -
コンソールで削除する場合は、サブジェクトを表示する次の権限を付与します。
managedkafka.subjects.list
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
マネージド Kafka スキーマ レジストリ管理者(roles/managedkafka.schemaRegistryAdmin)ロールでも、サブジェクトを削除できます。
事前定義ロールの詳細については、 Managed Service for Apache Kafka の事前定義ロールをご覧ください。
対象を削除(復元可能)する
次の条件を満たしていることを確認します。
削除するサブジェクトが他のスキーマで参照されていない。件名内のいずれかのバージョンが他のスキーマで参照されている場合、削除リクエストは失敗します。
サブジェクトが属するスキーマ レジストリまたはサブジェクト自体が
Read-onlyモードであってはなりません。
サブジェクトを削除(復元可能)するには、次の手順を行います。
コンソール
Google Cloud コンソールで、[スキーマ レジストリ] ページに移動します。
削除するサブジェクトを含むスキーマ レジストリの名前をクリックします。
[このスキーマ レジストリのサブジェクト] で、サブジェクトの名前をクリックします。
[件名の詳細] ページで、[ 削除] をクリックします。
[削除(復元可能)] を選択します。
[スキーマ サブジェクトを削除] ダイアログで、フィールドに「
delete」と入力します。[削除] をクリックします。このアクションでは、サブジェクトを完全に削除する前に、削除(復元可能)します。
REST
リクエストは、Authorization ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報のアクセス トークンを取得する場合は、gcloud auth application-default print-access-token を使用します。
REST API を使用してサブジェクトを削除(復元可能)するには、projects.locations.schemaRegistries.contexts.subjects.delete メソッドを使用して、適切な URI に DELETE リクエストを送信します。
DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
REST API を使用して特定のコンテキストのサブジェクトを削除(復元可能)するには、projects.locations.schemaRegistries.contexts.subjects.delete メソッドを使用して、適切な URI に DELETE リクエストを送信します。
DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
次のように置き換えます。
- PROJECT_ID(必須): Google Cloudプロジェクト ID。
- LOCATION(必須): スキーマ レジストリが配置されている Google Cloud リージョン。
- REGISTRY_ID(必須): スキーマ レジストリの ID。
- CONTEXT_ID(省略可): 特定のコンテキスト内のサブジェクトを削除する場合は、コンテキストの ID または名前。
- SUBJECT_ID(省略可): 削除するサブジェクトの ID または名前。
たとえば、プロジェクト test-gcp-project とロケーション us-central1 のスキーマ レジストリ test_registry から orders-topic-value を削除するには、次のリクエストを行います。
DELETE https://managedkafka.googleapis.com/v1/projects/test-gcp-project/locations/us-central1/schemaRegistries/test_registry/subjects/orders-topic-value
Authorization: Bearer $(gcloud auth application-default print-access-token)
リクエストが成功すると、API は 200 OK ステータス コードを返します。レスポンスの本文には、削除されたサブジェクトに属していたスキーマのバージョン番号の JSON 配列が含まれます。
対象を完全に削除する
サブジェクトの完全削除は元に戻すことができず、関連するすべてのスキーマ バージョンも削除されます。
次の条件を満たしていることを確認します。
削除するサブジェクトが他のスキーマで参照されていない。サブジェクト内のバージョンが他のスキーマで参照されている場合、削除リクエストは失敗します。
サブジェクトが属するスキーマ レジストリまたはサブジェクト自体が
Read-onlyモードになっていない。削除に進む前に、必要なスキーマ情報をバックアップします。
このサブジェクト内のスキーマに依存するアクティブなプロデューサーやコンシューマーは存在しないようにしてください。削除すると中断が発生する可能性があります。
コンソール
Google Cloud コンソールで、[スキーマ レジストリ] ページに移動します。
削除するサブジェクトを含むスキーマ レジストリの名前をクリックします。
[このスキーマ レジストリのサブジェクト] で、サブジェクトの名前をクリックします。
[件名の詳細] ページで、[ 削除] をクリックします。
[完全に削除] を選択します。
[スキーマ サブジェクトを削除] ダイアログで、フィールドに「
delete」と入力します。[削除] をクリックします。このアクションでは、サブジェクトを完全に削除する前に、削除(復元可能)します。
REST
REST API を使用してサブジェクトを完全に削除するには、まずサブジェクトを削除(復元可能)する必要があります。削除(復元可能)が完了したら、削除(完全)に進むことができます。
リクエストは、Authorization ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報のアクセス トークンを取得する場合は、gcloud auth application-default print-access-token を使用します。
REST API を使用してサブジェクトを完全に削除するには、permanent=true クエリ パラメータを含め、projects.locations.schemaRegistries.subjects.delete メソッドを使用して、適切な URI に DELETE リクエストを行います。
DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID?permanent=true
Authorization: Bearer $(gcloud auth application-default print-access-token)
REST API を使用して特定のコンテキストのサブジェクトを完全に削除するには、permanent=true クエリ パラメータを含み、projects.locations.schemaRegistries.contexts.subjects.delete メソッドを使用して、適切な URI に DELETE リクエストを行います。
DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID?permanent=true
Authorization: Bearer $(gcloud auth application-default print-access-token)
次のように置き換えます。
- PROJECT_ID(必須): Google Cloudプロジェクト ID。
- LOCATION(必須): スキーマ レジストリが配置されている Google Cloud リージョン。
- REGISTRY_ID(必須): スキーマ レジストリの ID。
- CONTEXT_ID(省略可): 特定のコンテキスト内のサブジェクトを削除する場合のコンテキストの ID。
- SUBJECT_ID(省略可): 削除するサブジェクトの ID または名前。
たとえば、以前に削除(復元可能)されたサブジェクト orders-topic-value をプロジェクト test-gcp-project のスキーマ レジストリ test_registry とロケーション us-central1 から削除(復元不可)するには、次のリクエストを行います。
DELETE https://managedkafka.googleapis.com/v1/projects/test-gcp-project/locations/us-central1/schemaRegistries/test_registry/subjects/orders-topic-value?permanent=true
Authorization: Bearer $(gcloud auth application-default print-access-token)
リクエストが成功すると、API は 200 OK ステータス コードを返します。レスポンスの本文には、削除されたサブジェクトに属していたスキーマのバージョン番号の JSON 配列が含まれます。
詳細については、projects.locations.schemaRegistries.contexts.subjects.delete をご覧ください。
削除済み(復元可能)のサブジェクトを復元する
削除済み(復元可能)のサブジェクトを復元する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[スキーマ レジストリ] ページに移動します。
削除済み(復元可能)のサブジェクトを含むスキーマ レジストリの名前をクリックします。
[フィルタ] で、 [キャンセル] をクリックして、[削除済み: いいえ] フィルタをクリアします。
復元する科目の名前をクリックします。
[Subject details] ページで、 [Create version to restore] をクリックします。
[スキーマタイプ] で、[Avro] または [プロトコル バッファ] を選択します。
[スキーマ定義] フィールドに、スキーマの定義を入力します。スキーマ フィールド名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。
スキーマがスキーマ レジストリの他のスキーマで定義されたデータ構造を使用または依存している場合は、次の手順を行います。
- [Add Schema reference] をクリックします。
- [Reference name] フィールドに、参照されるスキーマの参照名を入力します。
- [サブジェクト] リストで、参照されるスキーマを含むサブジェクトを選択します。
- [バージョン] リストで、参照されるスキーマのバージョン番号を選択します。
- [OK] をクリックします。
参照されるスキーマごとに、上記の手順を繰り返します。
[作成] をクリックします。
REST
削除済み(復元可能)のサブジェクトを復元するには、schemaRegistries.subjects.versions.create メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
-
PROJECT_ID: 実際の Google Cloud プロジェクト ID -
LOCATION: スキーマ レジストリのロケーション -
REGISTRY_ID: スキーマ レジストリの ID -
SUBJECT: サブジェクト名 -
SCHEMA_DEFINITION: スキーマ定義を含む文字列
HTTP メソッドと URL:
POST https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT/versions
リクエストの本文(JSON):
{
"schema": "SCHEMA_DEFINITION"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"id": SCHEMA_ID
}