Questo documento descrive come eliminare un oggetto da un registro di schema. Esistono due modi per eliminare un oggetto:
Eliminazione temporanea. Contrassegna l'oggetto come eliminato, ma le relative informazioni vengono conservate e possono essere recuperate. Anche tutte le versioni dell'oggetto vengono eliminate temporaneamente.
Eliminazione definitiva. Rimuove definitivamente l'oggetto e i dati associati.
Puoi anche eliminare una versione dello schema specifica da un oggetto. Per saperne di più, consulta Eliminare una versione dell'oggetto di schema.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per eliminare un oggetto,
chiedi all'amministratore di concederti il
ruolo IAM Editor del registro di schema Kafka gestito (roles/managedkafka.schemaRegistryEditor) sull'oggetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per eliminare un oggetto. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per eliminare un oggetto sono necessarie le seguenti autorizzazioni:
-
Concedi la seguente autorizzazione sull'oggetto da eliminare:
managedkafka.subjects.delete -
Se elimini nella console, concedi la seguente autorizzazione per visualizzare l'oggetto:
managedkafka.subjects.list
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Eliminare temporaneamente un oggetto
Assicurati che siano soddisfatte le seguenti condizioni:
L'oggetto che stai per eliminare non fa riferimento ad altri schemi. Una richiesta di eliminazione non va a buon fine se una qualsiasi versione dell'oggetto fa riferimento ad altri schemi.
Il registro di schema a cui appartiene l'oggetto o l'oggetto stesso non deve essere in modalità
Read-only.
Per eliminare temporaneamente un oggetto:
Console
Nella Google Cloud console, vai alla pagina Registri di schema.
Fai clic sul nome del registro di schema contenente l'oggetto da eliminare.
In Oggetti in questo registro di schema, fai clic sul nome dell'oggetto.
Nella pagina Dettagli oggetto, fai clic su Elimina.
Seleziona Elimina temporaneamente.
Nella finestra di dialogo Elimina oggetto di schema, digita
deletenel campo.Fai clic su Elimina. Questa azione elimina temporaneamente l'oggetto prima di eliminarlo definitivamente.
REST
La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization. Per ottenere un token di accesso per le credenziali predefinite dell'applicazione corrente:
gcloud auth application-default print-access-token.
Per eliminare temporaneamente un oggetto utilizzando l'API REST, invia una DELETE richiesta all'
URI appropriato utilizzando il
projects.locations.schemaRegistries.contexts.subjects.delete
metodo.
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)
Per eliminare temporaneamente un oggetto in un contesto specifico utilizzando l'API REST,
invia una DELETE richiesta all'URI appropriato utilizzando il
projects.locations.schemaRegistries.contexts.subjects.delete
metodo.
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)
Sostituisci quanto segue:
- PROJECT_ID (obbligatorio): l' Google Cloud ID del progetto.
- LOCATION (obbligatorio): la Google Cloud regione in cui si trova il registro di schema.
- REGISTRY_ID (obbligatorio): l'ID del registro di schema.
- CONTEXT_ID (facoltativo): l'ID o il nome del contesto, se elimini un oggetto in un contesto specifico.
- SUBJECT_ID (facoltativo): l'ID o il nome dell'oggetto che vuoi eliminare.
Ad esempio, per eliminare temporaneamente orders-topic-value dal registro di schema test_registry nel progetto test-gcp-project e nella località us-central1, invia la seguente richiesta:
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)
Se la richiesta va a buon fine, l'API restituisce un codice di stato 200 OK. Il corpo della risposta contiene un array JSON dei numeri di versione degli schemi appartenenti all'oggetto eliminato.
Eliminare definitivamente un oggetto
L'eliminazione definitiva di un oggetto è irreversibile e comporta anche l'eliminazione di tutte le versioni dello schema associate.
Assicurati che siano soddisfatte le seguenti condizioni:
L'oggetto che stai per eliminare non fa riferimento ad altri schemi. Una richiesta di eliminazione non va a buon fine se una qualsiasi versione dell'oggetto fa riferimento ad altri schemi.
Il registro di schema a cui appartiene l'oggetto o l'oggetto stesso non deve essere in modalità
Read-only.Esegui il backup di tutte le informazioni dello schema necessarie prima di procedere con l'eliminazione.
Nessun produttore o consumatore attivo deve fare affidamento sugli schemi all'interno di questo oggetto, poiché l'eliminazione può causare interruzioni.
Console
Nella Google Cloud console, vai alla pagina Registri di schema.
Fai clic sul nome del registro di schema contenente l'oggetto da eliminare.
In Oggetti in questo registro di schema, fai clic sul nome dell'oggetto.
Nella pagina Dettagli oggetto, fai clic su Elimina.
Seleziona Elimina definitivamente.
Nella finestra di dialogo Elimina oggetto di schema, digita
deletenel campo.Fai clic su Elimina. Questa azione elimina temporaneamente l'oggetto prima di eliminarlo definitivamente.
REST
Per eliminare definitivamente un oggetto utilizzando l'API REST, devi prima eliminarlo temporaneamente. Una volta eliminato temporaneamente, puoi procedere con l'eliminazione definitiva.
La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization. Per ottenere un token di accesso per le credenziali predefinite dell'applicazione corrente:
gcloud auth application-default print-access-token.
Per eliminare definitivamente un oggetto utilizzando l'API REST, invia una DELETE richiesta all'
URI appropriato, includendo il parametro di query permanent=true e utilizzando il
projects.locations.schemaRegistries.subjects.delete
metodo.
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)
Per eliminare definitivamente un oggetto in un contesto specifico utilizzando l'API REST, invia
una DELETE richiesta all'URI appropriato, includendo il permanent=true
parametro di query e utilizzando il
projects.locations.schemaRegistries.contexts.subjects.delete
metodo.
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)
Sostituisci quanto segue:
- PROJECT_ID (obbligatorio): l' Google Cloud ID del progetto.
- LOCATION (obbligatorio): la Google Cloud regione in cui si trova il registro di schema.
- REGISTRY_ID (obbligatorio): l'ID del registro di schema.
- CONTEXT_ID (facoltativo): l'ID del contesto, se elimini un oggetto in un contesto specifico.
- SUBJECT_ID (facoltativo): l'ID o il nome dell'oggetto che vuoi eliminare.
Ad esempio, per eliminare definitivamente l'oggetto orders-topic-value eliminato temporaneamente in precedenza dal registro di schema test_registry nel progetto test-gcp-project e nella località us-central1, invia la seguente richiesta:
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)
Se la richiesta va a buon fine, l'API restituisce un codice di stato 200 OK. Il corpo della risposta contiene un array JSON dei numeri di versione degli schemi appartenenti all'oggetto eliminato.
Per saperne di più, consulta
projects.locations.schemaRegistries.contexts.subjects.delete.
Ripristinare un oggetto eliminato temporaneamente
Per ripristinare un oggetto eliminato temporaneamente:
Console
Nella Google Cloud console, vai alla pagina Registri di schema.
Fai clic sul nome del registro di schema contenente l'oggetto eliminato temporaneamente.
Per Filtro, fai clic su Annulla per cancellare il Eliminato temporaneamente: No filtro.
Fai clic sul nome dell'oggetto da ripristinare.
Nella pagina Dettagli oggetto, fai clic su Crea versione da ripristinare.
In Tipo di schema, seleziona Avro o Protocol Buffer.
Nel campo Definizione dello schema, inserisci la definizione dello schema. Non includere informazioni sensibili come quelle che consentono l'identificazione personale (PII) oppure dati di sicurezza nei nomi dei campi dello schema.
Se lo schema utilizza o dipende da strutture di dati definite in altri schemi nel registro di schema:
- Fai clic su Aggiungi riferimento allo schema.
- Nel campo Nome di riferimento, inserisci il nome di riferimento dello schema a cui fai riferimento.
- Nell'elenco Oggetto, seleziona l'oggetto contenente lo schema a cui fai riferimento.
- Nell'elenco Versione, seleziona il numero di versione dello schema a cui fai riferimento.
- Fai clic su OK.
Ripeti questi passaggi per ogni schema a cui fai riferimento.
Fai clic su Crea.
REST
Per ripristinare un oggetto eliminato temporaneamente, utilizza il
schemaRegistries.subjects.versions.create
metodo.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
-
PROJECT_ID: l'ID del tuo Google Cloud progetto -
LOCATION: la località del registro di schema -
REGISTRY_ID: l'ID del registro di schema -
SUBJECT: il nome dell'oggetto -
SCHEMA_DEFINITION: una stringa che contiene la definizione dello schema
Metodo HTTP e URL:
POST https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT/versions
Corpo JSON della richiesta:
{
"schema": "SCHEMA_DEFINITION"
}
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{
"id": SCHEMA_ID
}
Passaggi successivi
- Scopri di più sul registro di schema
- Elencare gli oggetti
- Elencare le versioni dell'oggetto
- Eliminare una versione dell'oggetto di schema