Questo documento descrive come creare un abbonamento a Cloud Storage. Puoi utilizzare la console Google Cloud, Google Cloud CLI, la libreria client o l'API Pub/Sub per creare una sottoscrizione Cloud Storage.
Prima di iniziare
Prima di leggere questo documento, assicurati di conoscere quanto segue:
- Come funziona un abbonamento a Cloud Storage.
- Come funziona Cloud Storage e come creare e gestire i bucket Cloud Storage.
- Come configurare un argomento messaggi non recapitabili per gestire gli errori dei messaggi.
Ruoli e autorizzazioni richiesti
Di seguito è riportato un elenco di linee guida relative a ruoli e autorizzazioni:
Per creare un abbonamento, devi configurare il controllo dell'accesso a livello di progetto.
Sono inoltre necessarie autorizzazioni a livello di risorsa se le iscrizioni e gli argomenti si trovano in progetti diversi, come spiegato più avanti in questa sezione.
Per creare un abbonamento Cloud Storage, l'account di servizio Pub/Sub deve disporre dell'autorizzazione per scrivere nel bucket Cloud Storage specifico e per leggere i metadati del bucket. Per ulteriori informazioni su come concedere queste autorizzazioni, consulta la sezione successiva di questo documento.
Per ottenere le autorizzazioni necessarie per creare sottoscrizioni Cloud Storage,
chiedi all'amministratore di concederti il ruolo IAM Editor Pub/Sub (roles/pubsub.editor
) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare abbonamenti Cloud Storage. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per creare sottoscrizioni Cloud Storage sono necessarie le seguenti autorizzazioni:
-
Creare un abbonamento:
pubsub.subscriptions.create
-
Allega una sottoscrizione a un argomento:
pubsub.topics.attachSubscription
-
Estrazione da un abbonamento:
pubsub.subscriptions.consume
-
Acquista un abbonamento:
pubsub.subscriptions.get
-
Elencare un abbonamento:
pubsub.subscriptions.list
-
Aggiornare un abbonamento:
pubsub.subscriptions.update
-
Eliminare un abbonamento:
pubsub.subscriptions.delete
-
Recupera il criterio IAM per un abbonamento:
pubsub.subscriptions.getIamPolicy
-
Configura il criterio IAM per un abbonamento:
pubsub.subscriptions.setIamPolicy
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Se devi creare abbonamenti Cloud Storage in un progetto associati a un argomento in un altro progetto, chiedi all'amministratore dell'argomento di concederti anche il ruolo IAM Editor Pub/Sub(roles/pubsub.editor)
per l'argomento.
Assegna i ruoli Cloud Storage all'account di servizio Pub/Sub
Alcuni servizi Google Cloud dispongono di account di servizio gestiti da Google Cloud che consentono ai servizi di accedere alle tue risorse. Questi account di servizio sono noti come agenti di servizio. Pub/Sub crea e gestisce un account di servizio per ogni progetto nel formatoservice-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
.
Per creare un abbonamento Cloud Storage, l'account di servizio Pub/Sub deve disporre dell'autorizzazione per scrivere nel bucket Cloud Storage specifico e leggere i metadati del bucket. Scegli una delle seguenti procedure:
Concedi le autorizzazioni a livello di bucket. Al bucket Cloud Storage specifico, concedi all'account di servizio Pub/Sub il ruolo Creatore oggetti Storage (
roles/storage.objectCreator
) e il ruolo Lettore di bucket legacy Storage (roles/storage.legacyBucketReader
).Se devi concedere i ruoli a livello di progetto, puoi concedere il ruolo Amministratore archiviazione (
roles/storage.admin
) al progetto contenente il bucket Cloud Storage. Concedi questo ruolo all'account di servizio Pub/Sub.
Autorizzazioni del bucket
Per concedere i ruoli Creatore oggetti Storage
(roles/storage.objectCreator
) e Lettore di bucket legacy Storage
(roles/storage.legacyBucketReader
) a livello di bucket, svolgi i seguenti passaggi:
Nella console Google Cloud, vai alla pagina Cloud Storage.
Fai clic sul bucket Cloud Storage in cui vuoi scrivere i messaggi.
Viene visualizzata la pagina Dettagli bucket.
Nella pagina Dettagli bucket, fai clic sulla scheda Autorizzazioni.
Nella scheda Autorizzazioni > Visualizza per entità, fai clic su Concedi accesso.
Viene visualizzata la pagina Concedi l'accesso.
Nella sezione Aggiungi entità, inserisci il nome del tuo account di servizio Pub/Sub.
Il formato dell'account di servizio è
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
. Ad esempio, per un progetto con PROJECT_NUMBER=112233445566
, l'account di servizio è nel formatoservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Nel menu a discesa Assegna i ruoli > Seleziona un ruolo, inserisci
Creator
e seleziona il ruolo Creatore oggetti Storage.Fai clic su Aggiungi un altro ruolo.
Nel menu a discesa Seleziona un ruolo, inserisci
Bucket Reader
e seleziona il ruolo Lettore di bucket legacy di Storage.Fai clic su Salva.
Autorizzazioni per il progetto
Per concedere il ruolo Amministratore archiviazione
(roles/storage.admin
) a livello di progetto, svolgi i seguenti passaggi:
Nella console Google Cloud, vai alla pagina IAM.
Nella scheda Autorizzazioni > Visualizza per entità, fai clic su Concedi accesso.
Viene visualizzata la pagina Concedi l'accesso.
Nella sezione Aggiungi entità, inserisci il nome del tuo account di servizio Pub/Sub.
Il formato dell'account di servizio è
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
. Ad esempio, per un progetto con PROJECT_NUMBER=112233445566
, l'account di servizio è nel formatoservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Nel menu a discesa Assegna i ruoli > Seleziona un ruolo, inserisci
Storage Admin
e seleziona il ruolo Amministratore dello spazio di archiviazione.Fai clic su Salva.
Per ulteriori informazioni su Cloud Storage IAM, consulta Identity and Access Management (IAM) di Cloud Storage.
Proprietà dell'abbonamento a Cloud Storage
Quando configuri un abbonamento a Cloud Storage, devi specificare le proprietà comuni a tutti i tipi di abbonamento e alcune proprietà aggiuntive specifiche per l'abbonamento a Cloud Storage.
Proprietà comuni degli abbonamenti
Scopri le proprietà comuni degli abbonamenti che puoi impostare su tutti gli abbonamenti.
Nome bucket
Prima di creare un abbonamento Cloud Storage, deve già esistere un bucket Cloud Storage.
I messaggi vengono inviati in batch e archiviati nel bucket Cloud Storage. Un singolo batch o file viene archiviato come oggetto nel bucket.
Il bucket Cloud Storage deve avere la funzionalità Pagamento a carico del richiedente disabilitata.
Per creare un bucket Cloud Storage, consulta Creare bucket.
Prefisso, suffisso e data e ora del nome file
I file Cloud Storage di output generati dall'abbonamento Cloud Storage vengono archiviati come oggetti nel bucket Cloud Storage. Il nome
dell'oggetto archiviato nel bucket Cloud Storage è nel seguente
formato: <file-prefix><UTC-date-time>_<uuid><file-suffix>
.
L'elenco seguente include i dettagli del formato del file e i campi che puoi personalizzare:
<file-prefix>
è il prefisso del nome file personalizzato. Questo è un campo facoltativo.<UTC-date-time>
è una stringa generata automaticamente personalizzabile in base al momento della creazione dell'oggetto.<uuid>
è una stringa casuale generata automaticamente per l'oggetto.<file-suffix>
è il suffisso del nome file personalizzato. Questo è un campo facoltativo. Il sufisso del nome del file non può terminare con "/".Puoi modificare il prefisso e il suffisso del nome file:
Ad esempio, se il valore del prefisso del nome del file è
prod_
e il valore del suffisso del nome del file è_archive
, un nome di oggetto di esempio èprod_2023-09-25T04:10:00+00:00_uN1QuE_archive
.Se non specifichi il prefisso e il suffisso del nome file, il nome dell'oggetto memorizzato nel bucket Cloud Storage ha il seguente formato:
<UTC-date-time>_<uuid>
.I requisiti di denominazione degli oggetti Cloud Storage si applicano anche al prefisso e al suffisso del nome del file. Per saperne di più, consulta Informazioni sugli oggetti Cloud Storage.
Puoi modificare la modalità di visualizzazione della data e dell'ora nel nome file:
Confronti datetime obbligatori che puoi utilizzare una sola volta: anno (
YYYY
oYY
), mese (MM
), giorno (DD
), ora (hh
), minuto (mm
), secondo (ss
). Ad esempio,YY-YYYY
oMMM
non sono validi.Confronti facoltativi che puoi utilizzare una sola volta: separatore data/ora (
T
) e differenza di fuso orario (Z
o+00:00
).Elementi facoltativi che puoi utilizzare più volte: trattino (
-
), trattino basso (_
), due punti (:
) e barra (/
).Ad esempio, se il valore del formato data e ora del nome del file è
YYYY-MM-DD/hh_mm_ssZ
, un nome di oggetto di esempio èprod_2023-09-25/04_10_00Z_uNiQuE_archive
.Se il formato data/ora del nome del file termina con un carattere che non è un'espressione di corrispondenza, questo carattere sostituirà il separatore tra
<UTC-date-time>
e<uuid>
. Ad esempio, se il valore del formato data e ora del nome del file èYYYY-MM-DDThh_mm_ss-
, un nome di oggetto di esempio èprod_2023-09-25T04_10_00-uNiQuE_archive
.
Raggruppamento di file
Le iscrizioni Cloud Storage ti consentono di decidere quando creare un nuovo file di output archiviato come oggetto nel bucket Cloud Storage. Pub/Sub scrive un file di output quando viene soddisfatta una delle condizioni di raggruppamento specificate. Di seguito sono riportate le condizioni di raggruppamento di Cloud Storage:
Durata massima del batch di archiviazione. Questa è un'impostazione obbligatoria. L'abbonamento Cloud Storage scrive un nuovo file di output se viene superato il valore specificato per la durata massima. Se non lo specifichi, viene applicato un valore predefinito di 5 minuti. Di seguito sono riportati i valori applicabili per la durata massima:
- Valore minimo = 1 minuto
- Valore predefinito = 5 minuti
- Valore massimo = 10 minuti
Byte massimi batch di archiviazione. Questa è un'impostazione facoltativa. L'abbonamento Cloud Storage scrive un nuovo file di output se viene superato il valore specificato di byte massimi. Di seguito sono riportati i valori applicabili per i byte massimi:
- Valore minimo = 1 KB
- Valore massimo = 10 GiB
Messaggi relativi al limite massimo del batch di archiviazione. Questa è un'impostazione facoltativa. L'abbonamento Cloud Storage scrive un nuovo file di output se viene superato il numero specificato di messaggi massimi. Di seguito sono riportati i valori applicabili per i messaggi massimi:
- Valore minimo = 1000
Ad esempio, puoi configurare la durata massima come 6 minuti e il numero massimo di byte come 2 GB. Se al quarto minuto il file di output raggiunge le dimensioni di 2 GB, Pub/Sub completa il file precedente e inizia a scrivere in un nuovo file.
Un abbonamento Cloud Storage potrebbe scrivere contemporaneamente in più file di un bucket Cloud Storage. Se hai configurato il tuo abbonamento in modo da creare un nuovo file ogni 6 minuti, potresti notare la creazione di più file Cloud Storage ogni 6 minuti.
In alcuni casi, Pub/Sub potrebbe iniziare a scrivere in un nuovo file prima dell'ora configurata dalle condizioni di raggruppamento dei file. Un file potrebbe anche superare il valore di byte massimi se l'abbonamento riceve messaggi più grandi del valore di byte massimi.
Formato file
Quando crei un abbonamento Cloud Storage, puoi specificare il formato dei file di output da archiviare in un bucket Cloud Storage come Testo o Avro.
Testo: i messaggi vengono memorizzati in testo normale. Un carattere di a capo separa un messaggio dal messaggio precedente nel file. Vengono archiviati solo i payload dei messaggi, non gli attributi o altri metadati.
Avro: i messaggi vengono archiviati in formato binario Apache Avro. Quando selezioni Avro, puoi attivare le seguenti proprietà aggiuntive:
Scrivi metadati: questa opzione ti consente di archiviare i metadati del messaggio insieme al messaggio. I metadati come i campi
subscription_name
,message_id
,publish_time
eattributes
vengono scritti nei campi di primo livello dell'oggetto Avro di output, mentre tutte le altre proprietà del messaggio diverse dai dati (ad esempio, un valore ordering_key, se presente) vengono aggiunte come voci nella mappaattributes
.Se l'opzione metadati di scrittura è disattivata, nell'oggetto Avro di output viene scritto solo il payload del messaggio. Ecco lo schema Avro per i messaggi di output con i metadati di scrittura disattivati:
{ "type": "record", "namespace": "com.google.pubsub", "name": "PubsubMessage", "fields": [ { "name": "data", "type": "bytes" } ] }
Ecco lo schema Avro per i messaggi di output con metadati di scrittura abilitati:
{ "type": "record", "namespace": "com.google.pubsub", "name": "PubsubMessageWithMetadata", "fields": [ { "name": "subscription_name", "type": "string" }, { "name": "message_id", "type": "string" }, { "name": "publish_time", "type": { "type": "long", "logicalType": "timestamp-micros" } }, { "name": "attributes", "type": { "type": "map", "values": "string" } }, { "name": "data", "type": "bytes" } ] }
Utilizza schema argomento: questa opzione consente a Pub/Sub di utilizzare lo schema dell'argomento Pub/Sub a cui è associata la sottoscrizione durante la scrittura dei file Avro.
Quando utilizzi questa opzione, ricordati di verificare i seguenti requisiti aggiuntivi:
Lo schema dell'argomento deve essere in formato Apache Avro.
Se sono abilitati sia Utilizza schema dell'argomento sia Scrivi metadati, lo schema dell'argomento deve avere un oggetto Record alla radice. Pub/Sub espande l'elenco dei campi del record in modo da includere i campi dei metadati. Di conseguenza, il record non può contenere campi con lo stesso nome dei campi dei metadati (
subscription_name
,message_id
,publish_time
oattributes
).
Crea una sottoscrizione Cloud Storage
Console
-
Nella console Google Cloud, vai alla pagina Abbonamenti.
-
Fai clic su Crea sottoscrizione.
-
Per il campo ID sottoscrizione, inserisci un nome.
Per informazioni su come assegnare un nome a un abbonamento, consulta le linee guida per assegnare un nome a un argomento o a un abbonamento.
-
Scegli o crea un argomento dal menu a discesa.
La sottoscrizione riceve i messaggi dall'argomento.
Per informazioni su come creare un argomento, vedi Creare e gestire gli argomenti.
-
Seleziona Tipo di importazione come Scrive in Cloud Storage.
-
Per il bucket Cloud Storage, fai clic su Sfoglia.
-
Puoi selezionare un bucket esistente da qualsiasi progetto appropriato.
-
Puoi anche fare clic sull'icona Crea e seguire le istruzioni sullo schermo per creare un nuovo bucket.
Dopo aver creato il bucket, selezionalo per l'abbonamento Cloud Storage.
Per scoprire di più su come creare un bucket, consulta Creare bucket.
Quando specifichi il bucket, Pub/Sub controlla se sono presenti le autorizzazioni appropriate per l'account di servizio Pub/Sub. In caso di problemi di autorizzazione, viene visualizzato un messaggio simile al seguente:
Unable to verify if the Pub/Sub service agent has write permissions on this bucket. You may be lacking permissions to view or set permissions
. -
-
Se si verificano problemi di autorizzazione, fai clic su Imposta autorizzazione e segui le istruzioni sullo schermo.
In alternativa, segui le istruzioni riportate in Assegnare i ruoli Cloud Storage all'account di servizio Pub/Sub.
-
Per Formato file, seleziona Testo o Avro.
Se selezioni Avro, puoi anche specificare se vuoi archiviare i metadati dei messaggi nell'output.
Per ulteriori informazioni sulle due opzioni, inclusa l'opzione dei metadati dei messaggi per il formato Avro, consulta Formato.
-
(Facoltativo) Puoi specificare il prefisso, il suffisso e la data e l'ora del nome del file per tutti i file da scrivere nel bucket Cloud Storage. Un file viene archiviato come oggetto nel bucket.
Per ulteriori informazioni su come impostare il prefisso, il suffisso e la data e l'ora del file, consulta Prefisso, suffisso e data e ora del nome del file.
-
Per l'aggregazione di file, specifica un tempo massimo che deve trascorrere prima di creare un nuovo file.
Se vuoi, puoi anche impostare le dimensioni massime del file o il numero massimo di messaggi per i file.
Per ulteriori informazioni su entrambe le opzioni di raggruppamento dei file, vedi Raggruppamento dei file.
-
Ti consigliamo vivamente di attivare la funzionalità Posta inutilizzata per gestire gli errori dei messaggi.
Per ulteriori informazioni, consulta la sezione Oggetto con messaggi inutilizzati.
-
Puoi mantenere le altre impostazioni predefinite e fare clic su Crea.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Per creare una
sottoscrizione Cloud Storage, esegui il comando
gcloud pubsub subscriptions create
.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --cloud-storage-bucket=BUCKET_NAME \ --cloud-storage-file-prefix=CLOUD_STORAGE_FILE_PREFIX \ --cloud-storage-file-suffix=CLOUD_STORAGE_FILE_SUFFIX \ --cloud-storage-file-datetime-format=CLOUD_STORAGE_FILE_DATETIME_FORMAT \ --cloud-storage-max-duration=CLOUD_STORAGE_MAX_DURATION \ --cloud-storage-max-bytes=CLOUD_STORAGE_MAX_BYTES \ --cloud-storage-max-messages=CLOUD_STORAGE_MAX_MESSAGES \ --cloud-storage-output-format=CLOUD_STORAGE_OUTPUT_FORMAT \ --cloud-storage-write-metadata --cloud-storage-use-topic-schema
Nel comando sono obbligatori solo
SUBSCRIPTION_ID
, il--topic
e il--cloud-storage-bucket
. I flag rimanenti sono facoltativi e possono essere omessi.Sostituisci quanto segue:
SUBSCRIPTION_ID
: il nome o l'ID del nuovo abbonamento Cloud Storage.TOPIC_ID
: il nome o l'ID dell'argomento.BUCKET_NAME
: specifica il nome di un bucket esistente. Ad esempio,prod_bucket
. Il nome del bucket non deve includere l'ID progetto. Per creare un bucket, consulta la sezione Creare bucket.CLOUD_STORAGE_FILE_PREFIX
: specifica il prefisso per il nome del file di Cloud Storage. Ad esempio,log_events_
.CLOUD_STORAGE_FILE_SUFFIX
: specifica il suffisso per il nome del file Cloud Storage. Ad esempio,.txt
.CLOUD_STORAGE_FILE_DATETIME_FORMAT
: Specifica il formato data e ora per il nome del file di Cloud Storage. Ad esempio,YYYY-MM-DD/hh_mm_ssZ
.CLOUD_STORAGE_MAX_DURATION
: la durata massima che può trascorrere prima che venga creato un nuovo file Cloud Storage. Il valore deve essere compreso tra 1 m e 10 m. Ad esempio,5m
.CLOUD_STORAGE_MAX_BYTES
: il numero massimo di byte che possono essere scritti in un file Cloud Storage prima che venga creato un nuovo file. Il valore deve essere compreso tra 1 KB e 10 GB. Ad esempio,20MB
.CLOUD_STORAGE_MAX_MESSAGES
: il numero massimo di messaggi che possono essere scritti in un file Cloud Storage prima che venga creato un nuovo file. Il valore deve essere maggiore o uguale a 1000. Ad esempio,100000
.CLOUD_STORAGE_OUTPUT_FORMAT
: il formato di output per i dati scritti in Cloud Storage. I valori sono i seguenti:text
: i messaggi vengono scritti come testo non elaborato, separati da un a capo.avro
: i messaggi vengono scritti come file binario Avro.--cloud-storage-write-metadata
e--cloud-storage-use-topic-schema
influiscono solo su gli abbonamenti con formato di outputavro
.
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java riportate nella guida rapida di Pub/Sub che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Java.
Per autenticarti a Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Monitorare una sottoscrizione Cloud Storage
Cloud Monitoring fornisce una serie di metriche per monitorare gli abbonamenti.
Per un elenco di tutte le metriche disponibili relative a Pub/Sub e le relative descrizioni, consulta la documentazione di monitoraggio per Pub/Sub.
Puoi anche monitorare le iscrizioni dall'interno di Pub/Sub.
Passaggi successivi
Risolvi i problemi relativi a un abbonamento Cloud Storage.
Scopri di più su Cloud Storage.
Controlla i prezzi di Pub/Sub, incluso l'abbonamento a Cloud Storage.