Este documento descreve como criar uma subscrição push. Pode usar a Trusted Cloud consola, a CLI Google Cloud, a biblioteca cliente ou a API Pub/Sub para criar uma subscrição push.
Antes de começar
- Saiba mais acerca das subscrições.
- Compreenda como funcionam as subscrições push.
Funções e autorizações necessárias
Para criar uma subscrição, tem de configurar o controlo de acesso ao nível do projeto. Também precisa de autorizações ao nível do recurso se as suas subscrições e tópicos estiverem em projetos diferentes, conforme abordado mais adiante nesta secção.
Para receber as autorizações de que
precisa para criar subscrições push,
peça ao seu administrador para lhe conceder a
função IAM Editor do Pub/Sub (roles/pubsub.editor
)
no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para criar subscrições push. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para criar subscrições push:
-
Crie uma subscrição:
pubsub.subscriptions.create
-
Elimine uma subscrição:
pubsub.subscriptions.delete
-
Obtenha uma subscrição:
pubsub.subscriptions.get
-
Anuncie uma subscrição:
pubsub.subscriptions.list
-
Atualize uma subscrição:
pubsub.subscriptions.update
-
Anexe uma subscrição a um tópico:
pubsub.topics.attachSubscription
-
Obtenha a Política IAM para uma subscrição:
pubsub.subscriptions.getIamPolicy
-
Configure a política IAM para uma subscrição:
pubsub.subscriptions.setIamPolicy
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Se precisar de criar subscrições push num projeto associadas a um tópico noutro projeto, peça ao administrador do tópico que lhe conceda também a função de IAM (roles/pubsub.editor)
editor do Pub/Sub no tópico.
Envie propriedades de subscrição de emissão
Quando configura uma subscrição push, pode especificar as seguintes propriedades.
Propriedades comuns
Saiba mais sobre as propriedades de subscrição comuns que pode definir em todas as subscrições.
Pontos finais
URL do ponto final (obrigatório). Um endereço HTTPS acessível publicamente. O servidor do ponto final de envio por push tem de ter um certificado SSL válido assinado por uma autoridade de certificação. O serviço Pub/Sub envia mensagens para pontos finais push a partir da mesma região em que o serviço Pub/Sub armazena as mensagens. Trusted Cloud O serviço Pub/Sub envia mensagens da mesma Trusted Cloud região com base no melhor esforço.
Se os subscritores usarem uma firewall, não podem receber pedidos push. Para receber pedidos push, tem de desativar a firewall e validar o símbolo da Web JSON (JWT) usado no pedido. Se um subscritor tiver uma firewall, pode receber um erro
403 permission denied
.O Pub/Sub já não requer prova de propriedade para domínios de URL de subscrição push. Se o seu domínio receber pedidos POST inesperados do Pub/Sub, pode denunciar suspeitas de abuso.
Autenticação
Ative a autenticação. Quando ativada, as mensagens enviadas pelo Pub/Sub para o ponto final de envio push incluem um cabeçalho de autorização para permitir que o ponto final autentique o pedido. Os mecanismos de autenticação e autorização automáticos estão disponíveis para os pontos finais das funções do App Engine Standard e do Cloud Run alojados no mesmo projeto que a subscrição.
A configuração de autenticação para uma subscrição push autenticada consiste numa conta de serviço gerida pelo utilizador e nos parâmetros de público-alvo que são especificados numa chamada create, patch ou ModifyPushConfig. Também tem de conceder uma função específica a uma conta de serviço, conforme abordado na secção seguinte.
Público-alvo. Uma única string não sensível a maiúsculas e minúsculas que o webhook usa para validar o público-alvo pretendido deste token específico.
Conta de serviço. O Pub/Sub cria automaticamente uma conta de serviço para si no formato
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.
Pré-requisitos para ativar a autenticação
A conta de serviço gerida pelo utilizador é a conta de serviço associada à subscrição push. Esta conta é usada como a reivindicação email
do símbolo da Web JSON (JWT) gerado. Segue-se uma lista de requisitos para a conta de serviço:
Esta conta de serviço gerida pelo utilizador tem de estar no mesmo projeto que a subscrição push.
O principal que está a criar ou modificar a subscrição push tem de ter a autorização
iam.serviceAccounts.actAs
na conta de serviço gerida pelo utilizador para anexar a conta de serviço à subscrição push. Para mais informações, consulte o artigo Anexar contas de serviço a recursos.Autorizações necessárias: esta conta de serviço tem de ter a autorização
iam.serviceAccounts.getOpenIdToken
(incluída na funçãoroles/iam.serviceAccountTokenCreator
) para permitir que o Pub/Sub crie tokens JWT para a conta de serviço especificada autenticar pedidos push.
Unwrapping do payload
A opção Ativar a anulação da união de payloads remove todos os metadados das mensagens do Pub/Sub, exceto os dados das mensagens. Com a anulação da união do payload, os dados da mensagem são entregues diretamente como o corpo HTTP.
Também pode ativar a opção Escrever metadados. A opção Escrever metadados adiciona novamente os metadados de mensagens removidos anteriormente ao cabeçalho do pedido.
Efetue a entrega em endereços VPC privados
O Pub/Sub funciona fora das redes da VPC e não pode enviar mensagens diretamente para endereços da VPC privados. No entanto, pode usar o Eventarc para encaminhar mensagens para serviços na sua VPC. O Pub/Sub pode enviar mensagens para um acionador do Eventarc, que, por sua vez, pode encaminhá-las para um serviço na sua VPC, como um serviço do Cloud Run ou uma execução do Workflows. Para mais informações, consulte a documentação do Eventarc.
VPC Service Controls
Para um projeto protegido pelos VPC Service Controls, tenha em atenção as seguintes limitações para subscrições push:
Só pode criar novas subscrições push para as quais o ponto final push esteja definido para um serviço do Cloud Run com um URL
run.app
predefinido ou uma execução do Workflows. Os domínios personalizados não funcionam.Quando encaminha eventos através do Eventarc para destinos do Workflows para os quais o ponto final de envio está definido para uma execução do Workflows, só pode criar novas subscrições de envio através do Eventarc.
Não pode atualizar as subscrições push existentes. Estas subscrições push continuam a funcionar, embora não estejam protegidas pelo VPC Service Controls.
Crie uma subscrição push
Os exemplos seguintes demonstram como criar uma subscrição com entrega push, usando as predefinições fornecidas.
Por predefinição, as subscrições usam a entrega por obtenção, a menos que defina explicitamente uma configuração de envio, conforme mostrado nos exemplos seguintes.
Consola
Para criar uma subscrição de push, conclua os seguintes passos:
- Na Trusted Cloud consola, aceda à página Subscrições.
- Clique em Criar subscrição.
- No campo ID da subscrição, introduza um nome.
Para obter informações sobre como atribuir um nome a uma subscrição, consulte as diretrizes para atribuir um nome a um tópico ou a uma subscrição.
- Escolha ou crie um tópico no menu pendente. A subscrição recebe mensagens do tópico.
- Selecione o Tipo de fornecimento como Push.
- Especifique um URL do ponto final.
- Mantenha todos os outros valores predefinidos.
- Clique em Criar.
Também pode criar uma subscrição na secção Tópicos. Este atalho é útil para associar tópicos a subscrições.
- Na Trusted Cloud consola, aceda à página Tópicos.
- Clique emmore_vertjunto ao tópico no qual quer criar uma subscrição.
- No menu de contexto, selecione Criar subscrição.
- Introduza o ID da subscrição.
Para obter informações sobre como atribuir um nome a uma subscrição, consulte as diretrizes para atribuir um nome a um tópico ou a uma subscrição.
- Selecione o Tipo de fornecimento como Push.
- Especifique um URL do ponto final.
- Mantenha todos os outros valores predefinidos.
- Clique em Criar.
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.
-
Para criar uma subscrição push, execute o comando
gcloud pubsub subscriptions create
.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Substitua o seguinte:
SUBSCRIPTION_ID
: o nome ou o ID da sua nova subscrição push.TOPIC_ID
: o nome ou o ID do seu tópico.- PUSH_ENDPOINT: o URL a usar como ponto final para esta subscrição.
Por exemplo,
https://myproject.appspot.com/myhandler
.
- PROJECT_ID é o ID do seu projeto.
- SUBSCRIPTION_ID é o ID da sua subscrição.
- TOPIC_ID é o ID do seu tópico.
- PUSH_ENDPOINT é um URL a usar como ponto final. Por exemplo,
https://myproject.appspot.com/myhandler
.
REST
Para criar uma subscrição push, use o método
projects.subscriptions.create
:
Pedido:
O pedido tem de ser autenticado com um token de acesso no cabeçalho Authorization
. Para obter uma chave de acesso para as Credenciais padrão da aplicação atuais: gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
Corpo do pedido:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", // Only needed if you are using push delivery "pushConfig": { "pushEndpoint": "PUSH_ENDPOINT" } }
Onde:
Resposta:
{ "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++
Antes de experimentar este exemplo, siga as instruções de configuração do C++ no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Node.ts
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP Pub/Sub.
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Monitorize as subscrições de notificações push
O Cloud Monitoring fornece várias métricas para monitorizar subscrições.
Para ver uma lista de todas as métricas disponíveis relacionadas com o Pub/Sub e as respetivas descrições, consulte a documentação de monitorização do Pub/Sub.
Também pode monitorizar as subscrições no Pub/Sub.
O que se segue?
- Crie ou modifique uma subscrição com
gcloud
comandos. - Crie ou modifique uma subscrição com APIs REST.