Trasmetti le modifiche a Pub/Sub utilizzando l'attivatore facoltativo della funzione Cloud Run

Questo tutorial mostra come utilizzare il modello Flussi di modifiche in tempo reale di Bigtable in Pub/Sub, inclusa la configurazione di un argomento e del modello. Facoltativamente, puoi creare una funzione Cloud Run, nel linguaggio di programmazione che preferisci, attivata dal flusso di eventi.

Questo tutorial è rivolto agli utenti tecnici che hanno familiarità con Bigtable, la scrittura di codice e i servizi di streaming di eventi.

Obiettivi

Questo tutorial mostra come eseguire le seguenti operazioni:

  • Crea una tabella Bigtable con un flusso di modifiche abilitato.
  • Crea un argomento Pub/Sub con lo schema del flusso di modifiche di Bigtable.
  • Esegui il deployment di un flusso di modifiche di Bigtable in una pipeline Pub/Sub su Dataflow utilizzando il modello.
  • Visualizza il flusso di eventi direttamente in Pub/Sub o nei log di una funzione Cloud Run.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi Google Cloud utenti potrebbero avere diritto a una prova senza costi.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.

Prima di iniziare

    Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    Nella Google Cloud console, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della Google Cloud console, viene avviata una sessiona di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  1. Aggiorna e installa l'interfaccia a riga di comando cbt CLI .
    gcloud components update
    gcloud components install cbt

Crea un argomento Pub/Sub

  1. Nella Google Cloud console, vai alla pagina Argomenti di Pub/Sub.

    Vai ad Argomenti

  2. Fai clic su Crea argomento.

  3. Imposta l'ID su bigtable-change-stream-topic.

  4. Seleziona Utilizza uno schema.

  5. Nel menu a discesa Seleziona uno schema Pub/Sub, fai clic su Crea nuovo schema. Si apre una nuova scheda in cui definisci lo schema.

    1. Imposta l'ID schema su bigtable-change-stream-schema.
    2. Imposta il tipo di schema su Avro.
    3. Incolla il seguente codice come definizione dello schema. Per ulteriori informazioni sullo schema, consulta la pagina della documentazione del modello.
      {
          "name" : "ChangelogEntryMessage",
          "type" : "record",
          "namespace" : "com.google.cloud.teleport.bigtable",
          "fields" : [
            { "name" : "rowKey", "type" : "bytes"},
            {
              "name" : "modType",
              "type" : {
                "name": "ModType",
                "type": "enum",
                "symbols": ["SET_CELL", "DELETE_FAMILY", "DELETE_CELLS", "UNKNOWN"]}
            },
            { "name": "isGC", "type": "boolean" },
            { "name": "tieBreaker", "type": "int"},
            { "name": "columnFamily", "type": "string"},
            { "name": "commitTimestamp", "type" : "long"},
            { "name" : "sourceInstance", "type" : "string"},
            { "name" : "sourceCluster", "type" : "string"},
            { "name" : "sourceTable", "type" : "string"},
            { "name": "column", "type" : ["null", "bytes"]},
            { "name": "timestamp", "type" : ["null", "long"]},
            { "name": "timestampFrom", "type" : ["null", "long"]},
            { "name": "timestampTo", "type" : ["null", "long"]},
            { "name" : "value", "type" : ["null", "bytes"]}
        ]
      }
    
    1. Fai clic su Crea per creare lo schema.
  6. Chiudi la scheda Crea schema , aggiorna l'elenco degli schemi e seleziona lo schema appena definito.

  7. Fai clic su Crea per creare l'argomento.

(Facoltativo) Crea una funzione Cloud Run

Potresti voler elaborare il flusso Pub/Sub con una funzione Cloud Run.

  1. Nella pagina Dettagli dell'argomento bigtable-change-stream-topic, fai clic su Attiva funzione Cloud Functions .
  2. Nel campo Nome funzione, inserisci il nome bt-ps-tutorial-function.
  3. Nella sezione Codice sorgente, fai clic sul menu a discesa Runtime, quindi seleziona il runtime e il linguaggio di programmazione che preferisci. Viene generato un hello world che stampa il flusso di modifiche in entrata. Consulta la documentazione per scoprire di più sulla scrittura di funzioni Cloud Run.
  4. Utilizza i valori predefiniti per tutti gli altri campi.
  5. Fai clic su Esegui il deployment della funzione.

Crea una tabella con un flusso di modifiche abilitato

  1. Nella Google Cloud console, vai alla pagina Istanze di Bigtable.

    Vai a Istanze

  2. Fai clic sull'ID dell'istanza che stai utilizzando per questo tutorial.

    Se non hai un'istanza disponibile, creane una con le configurazioni predefinite in una regione vicina.

  3. Nel riquadro di navigazione a sinistra, fai clic su Tabelle.

  4. Fai clic su Crea una tabella.

  5. Assegna alla tabella il nome change-streams-pubsub-tutorial.

  6. Aggiungi una famiglia di colonne denominata cf.

  7. Seleziona Abilita flusso di modifiche.

  8. Fai clic su Crea.

Inizializza una pipeline di dati per acquisire il flusso di modifiche

  1. Nella pagina Tabelle di Bigtable, trova la tabella change-streams-pubsub-tutorial.
  2. Nella colonna Flusso di modifiche, fai clic su Connetti.
  3. Nella finestra di dialogo, seleziona Pub/Sub.
  4. Fai clic su Crea job Dataflow.
  5. Nella pagina Crea job di Dataflow, imposta il nome dell'argomento Pub/Sub di output su: bigtable-change-stream-topic.
  6. Imposta l'ID profilo applicazione Bigtable su default.
  7. Fai clic su Esegui job.
  8. Attendi che lo stato del job sia Avvio o In esecuzione prima di procedere. Una volta che il job è in coda, sono necessari circa 5 minuti.

Scrivi alcuni dati in Bigtable

  1. In Cloud Shell, scrivi alcune righe in Bigtable in modo che il log delle modifiche possa scrivere alcuni dati nel flusso Pub/Sub. Se scrivi i dati dopo la creazione del job, le modifiche vengono visualizzate. Non devi attendere che lo stato del job diventi running.

    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user123 cf:col1=abc
    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user546 cf:col1=def
    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user789 cf:col1=ghi
    

Visualizza i log delle modifiche in Pub/Sub

  1. Nella Google Cloud console, vai alla pagina Sottoscrizioni di Pub/Sub.

    Vai ad Abbonamenti

  2. Fai clic sulla sottoscrizione creata automaticamente per l'argomento bigtable-change-stream-topic. Il nome dovrebbe essere bigtable-change-stream-topic-sub.

  3. Vai alla scheda Messaggi.

  4. Fai clic su Pull.

  5. Esplora l'elenco dei messaggi e visualizza i dati che hai scritto.

    Messaggi del log delle modifiche in
Pub/Sub

(Facoltativo) Visualizza le modifiche nei log delle funzioni Cloud Run

Se hai creato una funzione Cloud Run, puoi visualizzare le modifiche nei log.

  1. Nella Google Cloud console, vai a Funzioni Cloud Run.

    Vai alle funzioni Cloud Run

  2. Fai clic sulla funzione bt-ps-tutorial-function.

  3. Vai alla scheda Log.

  4. Assicurati che Gravità sia impostata almeno su Informazioni in modo da poter visualizzare i log.

  5. Esplora i log e visualizza i dati che hai scritto.

L'output è simile al seguente:

Pub/Sub message: {"rowKey":"user789","modType":"SET_CELL","isGC":false,"tieBreaker":0,"columnFamily":"cf","commitTimestamp":1695653833064548,"sourceInstance":"YOUR-INSTANCE","sourceCluster":"YOUR-INSTANCE-c1","sourceTable":"change-streams-pubsub-tutorial","column":{"bytes":"col1"},"timestamp":{"long":1695653832278000},"timestampFrom":null,"timestampTo":null,"value":{"bytes":"ghi"}}

Libera spazio

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina la tabella Bigtable

  1. Nella Google Cloud console, vai alla pagina Istanze di Bigtable.

    Vai a Istanze

  2. Fai clic sull'ID dell'istanza che stai utilizzando per questo tutorial.

  3. Nel riquadro di navigazione a sinistra, fai clic su Tabelle.

  4. Trova la tabella change-streams-pubsub-tutorial.

  5. Fai clic su Modifica.

  6. Deseleziona Abilita flusso di modifiche.

  7. Fai clic su Salva.

  8. Apri il menu extra per la tabella.

  9. Fai clic su Elimina e inserisci il nome della tabella per confermare.

Arresta la pipeline del flusso di modifiche

  1. Nella Google Cloud console, vai alla pagina Job di Dataflow.

    Vai a Job

  2. Seleziona il job di streaming dall'elenco dei job.

  3. Nella navigazione, fai clic su Arresta.

  4. Nella finestra di dialogo Arresta job, annulla la pipeline, quindi fai clic su Arresta job.

Elimina l'argomento e la sottoscrizione Pub/Sub

  1. Nella Google Cloud console, vai alla pagina Argomenti di Pub/Sub.

    Vai ad Argomenti

  2. Seleziona l'argomento bigtable-change-stream-topic.

  3. Fai clic su Elimina e conferma.

  4. Fai clic su Sottoscrizioni nella barra laterale.

  5. Seleziona la sottoscrizione bigtable-change-stream-topic-sub.

  6. Fai clic su Elimina e conferma.

Elimina la funzione Cloud Run

  1. Nella Google Cloud console, vai a Funzioni Cloud Run.

    Vai alle funzioni Cloud Run

  2. Seleziona la funzione bt-ps-tutorial-function.

  3. Fai clic su Elimina e conferma.

Passaggi successivi