Questo documento descrive come creare un abbonamento push. Puoi utilizzare la consoleTrusted Cloud , Google Cloud CLI, la libreria client o l'API Pub/Sub per creare una sottoscrizione push.
Prima di iniziare
- Scopri di più sugli abbonamenti.
- Comprendere il funzionamento delle iscrizioni push.
Ruoli e autorizzazioni richiesti
Per creare un abbonamento, devi configurare il controllo dell'accesso a livello di progetto. Hai bisogno anche delle autorizzazioni a livello di risorsa se gli abbonamenti e gli argomenti si trovano in progetti diversi, come descritto più avanti in questa sezione.
Per ottenere le autorizzazioni
necessarie per creare sottoscrizioni push,
chiedi all'amministratore di concederti il
ruolo IAM Pub/Sub Editor (roles/pubsub.editor
) nel progetto.
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 creare sottoscrizioni push. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare abbonamenti push sono necessarie le seguenti autorizzazioni:
-
Crea un abbonamento:
pubsub.subscriptions.create
-
Eliminare un abbonamento:
pubsub.subscriptions.delete
-
Acquista un abbonamento:
pubsub.subscriptions.get
-
Elenca un abbonamento:
pubsub.subscriptions.list
-
Aggiornare un abbonamento:
pubsub.subscriptions.update
-
Allegare un abbonamento a un argomento:
pubsub.topics.attachSubscription
-
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 push 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.
Proprietà della sottoscrizione push
Quando configuri un abbonamento push, puoi specificare le seguenti proprietà.
Proprietà comuni
Scopri di più sulle proprietà comuni degli abbonamenti che puoi impostare per tutti gli abbonamenti.
Endpoint
URL dell'endpoint (obbligatorio). Un indirizzo HTTPS accessibile pubblicamente. Il server per l'endpoint push deve avere un certificato SSL valido firmato da un'autorità di certificazione. Il servizio Pub/Sub recapita i messaggi agli endpoint push dalla stessa regione Trusted Cloud in cui il servizio Pub/Sub archivia i messaggi. Il servizio Pub/Sub recapita i messaggi dalla stessa regione Trusted Cloud con il criterio "best effort".
Se gli abbonati utilizzano un firewall, non possono ricevere richieste push. Per ricevere richieste push, devi disattivare il firewall e verificare il token JWT (JSON Web Token) utilizzato nella richiesta. Se un abbonato ha un firewall, potresti ricevere un errore
403 permission denied
.Pub/Sub non richiede più la prova della proprietà per i domini URL con sottoscrizione push. Se il tuo dominio riceve richieste POST impreviste da Pub/Sub, puoi segnalare un sospetto abuso.
Autenticazione
Attiva l'autenticazione. Se questa opzione è abilitata, i messaggi inviati da Pub/Sub all'endpoint push includono un'intestazione di autorizzazione per consentire all'endpoint di autenticare la richiesta. Sono disponibili meccanismi di autenticazione e autorizzazione automatici per gli endpoint di App Engine Standard e Cloud Run Functions ospitati nello stesso progetto dell'abbonamento.
La configurazione dell'autenticazione per un abbonamento push autenticato è costituita da un account di servizio gestito dall'utente e dai parametri audience specificati in una chiamata create, patch o ModifyPushConfig. Devi anche concedere un ruolo specifico a un account di servizio, come descritto nella sezione successiva.
Pubblico. Una singola stringa senza distinzione tra maiuscole e minuscole che il webhook utilizza per convalidare il pubblico di destinazione di questo token specifico.
Service account. Pub/Sub crea automaticamente un account di servizio per te con il formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.
Prerequisiti per l'abilitazione dell'autenticazione
Il service account gestito dall'utente è il account di servizio associato
all'abbonamento push. Questo account viene utilizzato come attestazione email
del
token web JSON (JWT) generato. Di seguito è riportato un elenco dei requisiti per
ilaccount di serviziot:
Questo service account gestito dall'utente deve trovarsi nello stesso progetto dell'abbonamento push.
L'entità che crea o modifica la sottoscrizione push deve disporre dell'autorizzazione
iam.serviceAccounts.actAs
per l'account di servizio gestito dall'utente per collegare l'account di servizio alla sottoscrizione push. Per saperne di più, consulta Collegamento di service account alle risorse.Autorizzazioni richieste: a questo service account deve essere concessa l'autorizzazione
iam.serviceAccounts.getOpenIdToken
(inclusa nel ruoloroles/iam.serviceAccountTokenCreator
) per consentire a Pub/Sub di creare token JWT per l'account di servizio specificato per autenticare le richieste push.
Annullamento del wrapping del payload
L'opzione Abilita l'annullamento del wrapping del payload rimuove tutti i metadati dei messaggi Pub/Sub, ad eccezione dei dati dei messaggi. Con l'unwrapping del payload, i dati del messaggio vengono inviati direttamente come corpo HTTP.
Puoi anche attivare l'opzione Scrivi metadati. L'opzione Scrivi metadati aggiunge nuovamente i metadati del messaggio rimossi in precedenza all'intestazione della richiesta.
Eseguire la consegna agli indirizzi VPC privati
Pub/Sub opera al di fuori delle reti VPC e non può eseguire il push diretto dei messaggi agli indirizzi VPC privati. Tuttavia, puoi utilizzare Eventarc per indirizzare i messaggi ai servizi all'interno del tuo VPC. Pub/Sub può inviare messaggi a un trigger Eventarc, che può poi inoltrarli a un servizio all'interno del tuo VPC, ad esempio un servizio Cloud Run o un'esecuzione di Workflows. Per ulteriori informazioni, consulta la documentazione di Eventarc.
Controlli di servizio VPC
Per un progetto protetto da Controlli di servizio VPC, tieni presente le seguenti limitazioni per gli abbonamenti push:
Puoi creare nuove sottoscrizioni push per le quali l'endpoint push è impostato su un servizio Cloud Run con un URL
run.app
predefinito o un'esecuzione di Workflows. I domini personalizzati non funzionano.Quando esegui il routing degli eventi tramite Eventarc verso destinazioni Workflows per le quali l'endpoint push è impostato su un'esecuzione di Workflows, puoi creare nuove sottoscrizioni push solo tramite Eventarc.
Non puoi aggiornare le iscrizioni push esistenti. Questi abbonamenti push continuano a funzionare, anche se non sono protetti dai Controlli di servizio VPC.
Creare una sottoscrizione push
Gli esempi riportati di seguito mostrano come creare un abbonamento con push utilizzando le impostazioni predefinite fornite.
Per impostazione predefinita, gli abbonamenti utilizzano la consegna pull, a meno che tu non imposti esplicitamente una configurazione push, come mostrato negli esempi seguenti.
Console
Per creare una sottoscrizione push:
- Nella console Trusted Cloud , vai alla pagina Abbonamenti.
- Fai clic su Crea sottoscrizione.
- Per il campo ID sottoscrizione, inserisci un nome.
Per informazioni su come denominare 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.
- Seleziona Tipo di consegna come Push.
- Specifica un URL endpoint.
- Mantieni tutti gli altri valori predefiniti.
- Fai clic su Crea.
Puoi anche creare una sottoscrizione dalla sezione Argomenti. Questa scorciatoia è utile per associare argomenti alle sottoscrizioni.
- Nella console Trusted Cloud , vai alla pagina Argomenti.
- Fai clic sumore_vertaccanto all'argomento su cui creare un abbonamento.
- Dal menu contestuale, seleziona Crea abbonamento.
- Inserisci l'ID abbonamento.
Per informazioni su come denominare un abbonamento, consulta le linee guida per assegnare un nome a un argomento o a un abbonamento.
- Seleziona Tipo di consegna come Push.
- Specifica un URL endpoint.
- Mantieni tutti gli altri valori predefiniti.
- Fai clic su Crea.
gcloud
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted 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 un abbonamento push, esegui il comando
gcloud pubsub subscriptions create
.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Sostituisci quanto segue:
SUBSCRIPTION_ID
: Il nome o l'ID della nuova iscrizione push.TOPIC_ID
: Il nome o l'ID dell'argomento.- PUSH_ENDPOINT: l'URL da utilizzare come endpoint per questo abbonamento.
Ad esempio,
https://myproject.appspot.com/myhandler
.
- PROJECT_ID è l'ID progetto.
- SUBSCRIPTION_ID è l'ID abbonamento.
- TOPIC_ID è l'ID argomento.
- PUSH_ENDPOINT è un URL da utilizzare come endpoint. Ad esempio,
https://myproject.appspot.com/myhandler
.
REST
Per creare una sottoscrizione push, utilizza il metodo
projects.subscriptions.create
:
Richiesta:
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 correnti: gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
Corpo della richiesta:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", // Only needed if you are using push delivery "pushConfig": { "pushEndpoint": "PUSH_ENDPOINT" } }
Dove:
Risposta:
{ "name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID", "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "pushConfig": { "pushEndpoint": "https://PROJECT_ID.appspot.com/myhandler", "attributes": { "x-goog-version": "v1" } }, "ackDeadlineSeconds": 10, "messageRetentionDuration": "604800s", "expirationPolicy": { "ttl": "2678400s" } }
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Vai
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Node.ts
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Ruby
Il seguente esempio utilizza la libreria client Ruby Pub/Sub v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Monitorare le sottoscrizioni push
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 Monitoring per Pub/Sub.
Puoi anche monitorare gli abbonamenti all'interno di Pub/Sub.
Passaggi successivi
- Crea o modifica un abbonamento con i comandi
gcloud
. - Crea o modifica un abbonamento con le API REST.