Questo documento descrive come creare una sottoscrizione push. Puoi utilizzare lo nella console Google Cloud, in Google Cloud CLI, nella libreria client API Pub/Sub per creare una sottoscrizione push.
Prima di iniziare
- Scopri di più sugli abbonamenti.
- Informazioni su come funzionano le iscrizioni push.
Ruoli e autorizzazioni richiesti
Per creare una sottoscrizione, devi configurare il controllo dell'accesso nel a livello di progetto. Hai bisogno anche di autorizzazioni a livello di risorsa se le tue sottoscrizioni e gli argomenti sono in progetti diversi, come discusso più avanti in questa sezione.
Per ottenere le autorizzazioni necessarie per creare sottoscrizioni push,
chiedi all'amministratore di concederti
Ruolo IAM dell'editor Pub/Sub (roles/pubsub.editor
) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare sottoscrizioni push. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare sottoscrizioni push sono necessarie le seguenti autorizzazioni:
-
Creare una sottoscrizione:
pubsub.subscriptions.create
-
Eliminare una sottoscrizione:
pubsub.subscriptions.delete
-
Acquistare un abbonamento:
pubsub.subscriptions.get
-
Crea una sottoscrizione:
pubsub.subscriptions.list
-
Aggiornare un abbonamento:
pubsub.subscriptions.update
-
Collegare una sottoscrizione a un argomento:
pubsub.topics.attachSubscription
-
Ottieni il criterio IAM per una sottoscrizione:
pubsub.subscriptions.getIamPolicy
-
Configura il criterio IAM per un abbonamento:
pubsub.subscriptions.setIamPolicy
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.
Se devi creare un push
sottoscrizioni in un progetto associate a un argomento in un altro
chiedi all'amministratore dell'argomento di concederti anche l'editor Pub/Sub
(roles/pubsub.editor)
nell'argomento.
Proprietà delle sottoscrizioni push
Quando configuri una sottoscrizione push, puoi specificare quanto segue proprietà.
Proprietà comuni
Scopri di più sulle proprietà di abbonamento comuni che puoi impostare per tutte le sottoscrizioni.
Endpoint
URL endpoint (obbligatorio). Un indirizzo HTTPS pubblicamente accessibile. Il server per il push l'endpoint deve avere un certificato SSL valido firmato da un'autorità di certificazione. Il servizio Pub/Sub consegna i messaggi da cui eseguire il push degli endpoint nella stessa regione Google Cloud del servizio Pub/Sub archivia i messaggi. Il servizio Pub/Sub recapita i messaggi nella stessa regione Google Cloud secondo il criterio del "best effort".
Pub/Sub non richiede più la prova della proprietà per il push domini URL di abbonamento. Se il tuo dominio riceve richieste POST impreviste da Pub/Sub, puoi segnalare i presunti abusi.
Autenticazione
Attiva autenticazione. Quando questa opzione è abilitata, i messaggi consegnati da Pub/Sub all'endpoint push includono un'intestazione di autorizzazione a per consentire all'endpoint di autenticare la richiesta. Autenticazione automatica e sono disponibili meccanismi di autorizzazione per gli endpoint App Engine Standard e Cloud Functions ospitati nello stesso progetto dell'abbonamento.
La configurazione dell'autenticazione di un abbonamento push autenticato è costituito da un account di servizio gestito dall'utente, e i parametri dei segmenti di pubblico sono specificati in un elemento create, patch, o ModifyPushConfig chiamata. Devi inoltre concedere un ruolo specifico a un agente di servizio, come illustrato in nella prossima sezione.
Account di servizio gestito dall'utente (obbligatorio). L'account di servizio associato al push abbonamento. Questo account viene utilizzato come attestazione
email
del token JWT (JSON Web Token) generato. Di seguito è riportato un elenco dei requisiti per l'account di servizio:Questo account di servizio deve trovarsi nello stesso progetto della sottoscrizione push.
L'entità che crea o modifica la sottoscrizione push deve dispongono dell'autorizzazione
iam.serviceAccounts.actAs
per l'account di servizio. Puoi concedere un ruolo con questa autorizzazione al progetto, alla cartella o organizzazione per consentire per impersonare più account di servizio o concedere un ruolo autorizzazione sul servizio per consentire al chiamante rappresentare solo questo account di servizio.
Pubblico. Una singola stringa senza distinzione tra maiuscole e minuscole a cui il webhook per convalidare il pubblico previsto di questo particolare token.
Agente di servizio (obbligatorio).
Pub/Sub crea automaticamente un account di servizio per te con il formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.A questo agente di servizio deve essere concesso Autorizzazione
iam.serviceAccounts.getOpenIdToken
(inclusa inroles/iam.serviceAccountTokenCreator
) per consentire a Pub/Sub di creare token JWT per richieste push autenticate.
Annullamento del wrapping del payload
L'opzione Abilita l'annullamento del wrapping del payload rimuove Pub/Sub messaggi di tutti i metadati dei messaggi, ad eccezione dei dati dei messaggi. Con carico utile l'unwrapping, i dati del messaggio vengono consegnati direttamente come corpo HTTP.
- Scrivi metadati. Aggiunge di nuovo i metadati del messaggio rimossi in precedenza nel l'intestazione della richiesta.
Controlli di servizio VPC
Per un progetto protetto da Controlli di servizio VPC, tieni presente le seguenti limitazioni per le sottoscrizioni push:
Puoi creare solo nuove sottoscrizioni push per le quali l'endpoint push è impostato su un servizio Cloud Run con un URL
run.app
predefinito o Esecuzione di Workflows. I domini personalizzati non funzionano.Durante il routing degli eventi tramite Eventarc a Workflows destinazioni per le quali l'endpoint push è impostato su Workflows puoi creare nuove sottoscrizioni push solo tramite Eventarc.
Non puoi aggiornare le sottoscrizioni push esistenti. Queste sottoscrizioni push continuano a funzionare, anche se non sono protetti dai Controlli di servizio VPC.
Creare una sottoscrizione push
I seguenti esempi mostrano come creare una sottoscrizione con push usando le impostazioni predefinite fornite.
Per impostazione predefinita, gli abbonamenti utilizzano consegna pull, a meno che non imposti esplicitamente una configurazione push, come mostrato negli esempi seguenti.
Console
Per creare una sottoscrizione push, completa i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Abbonamenti.
- Fai clic su Crea sottoscrizione.
- Inserisci un nome nel campo Subscription ID (ID abbonamento).
Per informazioni su come assegnare un nome a una sottoscrizione, vedi Linee guida per assegnare un nome a un argomento o a una sottoscrizione.
- Scegli o crea un argomento dal menu a discesa. La sottoscrizione riceve messaggi dall'argomento.
- Seleziona Push come Tipo di pubblicazione.
- Specifica l'URL di un endpoint.
- Conserva tutti gli altri valori predefiniti.
- Fai clic su Crea.
Puoi creare una sottoscrizione anche dalla sezione Argomenti. Questa scorciatoia è utile per associare gli argomenti alle sottoscrizioni.
- Nella console Google Cloud, vai alla pagina Argomenti.
- Fai clic su more_vert accanto all'argomento per il quale creare una sottoscrizione.
- Dal menu contestuale, seleziona Crea abbonamento.
- Inserisci l'ID abbonamento.
Per informazioni su come assegnare un nome a una sottoscrizione, vedi Linee guida per assegnare un nome a un argomento o a una sottoscrizione.
- Seleziona Push come Tipo di pubblicazione.
- Specifica l'URL di un endpoint.
- Conserva tutti gli altri valori predefiniti.
- Fai clic su Crea.
gcloud
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
-
Per creare una sottoscrizione 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 del nuovo push abbonamento.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
.
REST
Per creare una sottoscrizione push, utilizza
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:
https://myproject.appspot.com/myhandler
.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 per la configurazione di C++ in 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 per la configurazione di C# nel Guida rapida di Pub/Sub con librerie client. Per ulteriori informazioni, consulta API Pub/Sub C# documentazione di riferimento.
Per eseguire l'autenticazione su Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di Pub/Sub con librerie client. Per ulteriori informazioni, consulta API Pub/Sub Go documentazione di riferimento.
Per eseguire l'autenticazione su Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di Pub/Sub con librerie client. Per ulteriori informazioni, consulta API Pub/Sub Java documentazione di riferimento.
Per eseguire l'autenticazione su Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Node.js
Node.js
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nel Guida rapida di Pub/Sub con librerie client. Per ulteriori informazioni, consulta API Pub/Sub PHP documentazione di riferimento.
Per eseguire l'autenticazione su Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di Pub/Sub con librerie client. Per ulteriori informazioni, consulta API Pub/Sub Python documentazione di riferimento.
Per eseguire l'autenticazione su Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nel Guida rapida di Pub/Sub con librerie client. Per ulteriori informazioni, consulta API Pub/Sub Ruby documentazione di riferimento.
Per eseguire l'autenticazione su Pub/Sub, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Passaggi successivi
- Crea o modifica una sottoscrizione con i comandi
gcloud
. - Crea o modifica un abbonamento con le API REST.