Este guia destina-se aos utilizadores da funcionalidade Notificações de alteração de objetos descontinuada do Cloud Storage. As notificações do Pub/Sub para o Cloud Storage são a ferramenta recomendada para gerar notificações que monitorizam as alterações aos objetos nos seus contentores do Cloud Storage. As notificações do Pub/Sub oferecem velocidade, flexibilidade, configuração e rentabilidade melhoradas. Este guia explica as diferenças entre as notificações de alteração de objetos e as notificações do Pub/Sub para o Cloud Storage, e fornece passos de migração das notificações de alteração de objetos para as notificações do Pub/Sub.
Vista geral das notificações de alterações de objetos
As notificações de alterações de objetos são um mecanismo antigo no Cloud Storage para
notificar uma aplicação sobre alterações a objetos num contentor. Quando uma notificação de alteração de objeto é configurada, o Cloud Storage envia pedidos HTTP POST (webhooks) para um URL de aplicação especificado sempre que um objeto é adicionado, atualizado ou eliminado. As notificações de alteração de objetos são estabelecidas através do envio de um pedido watchAll
ao Cloud Storage, usando a API JSON, as bibliotecas cliente ou o comando watchbucket
gsutil notification. Não existe um mecanismo pull
e tem de ter um nome de domínio acessível publicamente suportado por um servidor HTTP
para receber as mensagens do webhook. Recomendamos a utilização de notificações do Pub/Sub para o Cloud Storage para novas implementações devido à sua fiabilidade, escalabilidade e flexibilidade.
Para obter informações mais detalhadas, consulte a notificação de alteração de objeto.
Vista geral das notificações do Pub/Sub
As notificações do Pub/Sub para o Cloud Storage oferecem uma forma moderna, escalável e fiável de acionar ações em resposta a alterações nos seus contentores do Cloud Storage através do envio de informações de eventos para um tópico do Pub/Sub. O Pub/Sub oferece o fornecimento baseado em envio de mensagens como pedidos HTTP POST para webhooks. Quando os objetos são criados, atualizados ou eliminados, o Cloud Storage publica mensagens que contêm metadados de objetos num tópico do Pub/Sub especificado, que podem ser consumidos por vários subscritores, como funções do Cloud Run, pipelines de dados ou microsserviços, o que permite arquiteturas flexíveis e orientadas por eventos com entrega, pelo menos, uma vez e funcionalidades de processamento de erros robustas.
Para informações mais detalhadas, consulte o artigo Notificações do Pub/Sub para o Cloud Storage.
Compare as notificações de alterações de objetos com as notificações do Pub/Sub
A tabela seguinte compara as notificações de alteração de objetos com as funcionalidades de notificações do Pub/Sub:
Funcionalidade | Notificações de alterações de objetos | Notificações do Pub/Sub |
---|---|---|
Purpose | Envia uma notificação diretamente a uma aplicação através de pedidos HTTP POST (webhooks) quando os objetos num contentor são alterados. | Envia informações sobre alterações a objetos em contentores do Cloud Storage para um tópico do Pub/Sub. |
Mecanismo de fornecimento | HTTP POST direto (webhook) para um URL de aplicação especificado. | As mensagens publicadas num tópico do Pub/Sub podem ser consumidas por vários subscritores, como funções do Cloud Run, outras aplicações e pipelines de dados. |
Fiabilidade | Tenta uma entrega fiável, mas a pontualidade não é garantida. As notificações podem sofrer atrasos indefinidamente. | Oferece entrega pelo menos uma vez, o que significa que as mensagens podem ser entregues várias vezes, mas não são perdidas. O Pub/Sub processa a persistência e as novas tentativas de mensagens. |
Escalabilidade | Menos escalável, uma vez que depende de webhooks diretos que a sua aplicação tem de processar. | Altamente escalável e concebido para o processamento de eventos em grande escala. |
Flexibilidade | Limitado à integração direta do webhook. | Altamente flexível. As mensagens do Pub/Sub podem acionar funções do Cloud Run, alimentar pipelines de dados (Dataflow) e ser consumidas por outros microsserviços. |
Filtragem | Nenhum | Opções de filtragem robustas disponíveis ao nível da subscrição do Pub/Sub, o que permite aos subscritores receber apenas mensagens que cumprem critérios específicos. |
Segurança | Requer que o ponto final da sua aplicação seja acessível publicamente (HTTPS). | O Pub/Sub oferece IAM para controlo de acesso detalhado a tópicos e subscrições. O Pub/Sub ajuda com a entrega segura de mensagens, quer esteja a obter notificações diretamente ou a enviá-las para um ponto final público. |
Complexidade | Pode ser mais simples de configurar para exemplos de utilização básicos, mas a gestão da entrega fiável e do escalamento pode tornar-se complexa. | Requer a compreensão dos conceitos do Pub/Sub (tópicos, subscrições), mas oferece uma solução mais robusta e gerível para arquiteturas orientadas por eventos. |
Estado da descontinuação | Descontinuado. Recomendamos que use notificações do Pub/Sub para novas implementações. | Ativo. Este é o método principal e ativamente desenvolvido para notificações do Cloud Storage. |
Utilização recomendada | Não recomendado para novos projetos. Principalmente para integrações antigas menos complexas que não pode migrar. | Altamente recomendado para criar arquiteturas robustas, escaláveis e orientadas por eventos que reagem a alterações do Cloud Storage. |
Por que motivo deve migrar para as notificações do Pub/Sub?
A migração das notificações de alteração de objetos antigas para o Pub/Sub para notificações do Cloud Storage é um passo importante para uma gestão de eventos robusta. O Pub/Sub é recomendado para arquiteturas orientadas por eventos no Google Cloud, oferecendo vantagens técnicas e operacionais significativas em relação às notificações de alteração de objetos.
Seguem-se as vantagens da migração para as notificações do Pub/Sub:
- Entrega fiável: o Pub/Sub entrega cada mensagem publicada, pelo menos, uma vez para cada subscrição, validando que os eventos chegam aos seus consumidores. O fornecimento fiável minimiza a perda de dados e melhora a fiabilidade dos seus fluxos de trabalho em comparação com o modelo de fornecimento menos robusto das notificações de alteração de objetos.
- Escalabilidade: concebidas para um elevado débito, as notificações do Pub/Sub podem processar grandes volumes de eventos automaticamente. Com as notificações do Pub/Sub, pode eliminar os gargalos de desempenho que pode encontrar com as notificações de alteração de objetos à medida que a frequência de dados ou eventos aumenta.
- Integração com Google Cloud serviços: o Pub/Sub integra-se perfeitamente com vários Google Cloud serviços, oferecendo flexibilidade para criar fluxos de trabalho automatizados com funções do Cloud Run, Cloud Run, Dataflow e observabilidade melhorada através do Cloud Logging e Cloud Monitoring.
- Controlo detalhado: com o Pub/Sub, pode filtrar mensagens ao nível da subscrição. Isto permite que os consumidores recebam apenas eventos relevantes, reduzindo o processamento desnecessário e o tráfego de rede.
- Suporte de plataforma: as notificações do Pub/Sub são o serviço de mensagens suportado. A migração ajuda a usar uma tecnologia que recebe melhorias contínuas, atualizações de segurança e documentação abrangente, ao contrário das notificações de alteração de objetos descontinuadas.
Passos de migração
As notificações de alteração de objetos e as notificações do Pub/Sub para o Cloud Storage podem, ocasionalmente, enviar mensagens duplicadas. Por conseguinte, o código de consumo tem de ser concebido para processar mensagens duplicadas em segurança.
Para migrar das notificações de alteração de objetos para notificações do Pub/Sub, siga estes passos:
Comece a usar as notificações do Pub/Sub para o Cloud Storage além da configuração das notificações de alteração de objetos existente. Para ver informações sobre como configurar notificações do Pub/Sub, consulte o artigo Configurar notificações do Pub/Sub para o Cloud Storage.
Teste e verifique se o fluxo de processamento das notificações do Pub/Sub da sua aplicação está a funcionar corretamente. Para obter informações sobre como monitorizar a subscrição do Pub/Sub, consulte o artigo Monitorizar subscrições no Pub/Sub.
Parar o processamento de mensagens recebidas de um canal de notificações de alterações de objetos. Para parar um canal de notificações, faça um pedido de paragem.
Considerações sobre a subscrição push do Pub/Sub
Embora as subscrições de obtenção do Pub/Sub ofereçam maior flexibilidade e controlo, as subscrições de envio do Pub/Sub são muito semelhantes às mensagens de notificação de alteração de objetos. Como resultado, as subscrições push tornam-se um caminho de migração mais rápido para os utilizadores de notificações de alteração de objetos existentes. Para uma comparação detalhada das subscrições push e pull, consulte o artigo Escolha um tipo de subscrição.
Se planeia usar a subscrição push e, da mesma forma, planeia reutilizar o código de processamento de notificações existente, tem de considerar as diferenças entre os formatos de pedido push das notificações de alteração de objetos e das notificações do Pub/Sub, bem como as interpretações dos códigos de resposta. As diferenças são descritas nas secções seguintes.
Formato do pedido push
Esta secção descreve as diferenças de formato dos pedidos push entre as notificações de alteração de objetos e as notificações do Pub/Sub.
Notificações de alteração de objetos: uma notificação de alteração de objetos é enviada como um pedido HTTP POST para o URL da sua aplicação, no seguinte formato:
POST /ApplicationUrlPath Accept: * / * Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost X-Goog-Channel-Id: ChannelId X-Goog-Channel-Token: ClientToken X-Goog-Resource-Id: ResourceId X-Goog-Resource-State: ResourceState X-Goog-Resource-Uri: https://storage.googleapis.com/storage/v1/b/BucketName/o?alt=json { "kind": "storage#object", "id": "BucketName/ObjectName", "selfLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName", "name": "ObjectName", "bucket": "BucketName", "generation": "1367014943964000", "metageneration": "1", "contentType": "application/octet-stream", "updated": "2013-04-26T22:22:23.832Z", "size": "10", "md5Hash": "xHZY0QLVuYng2gnOQD90Yw==", "mediaLink": "https://content-storage.googleapis.com/storage/v1/b/BucketName/o/ObjectName?generation=1367014943964000&alt=media", "owner": { "entity": "user-jeffersonloveshiking@gmail.com" }, "crc32c": "C7+82w==", "etag": "COD2jMGv6bYCEAE=" }
Notificações do Pub/Sub: uma notificação do Pub/Sub, quando configurada para entrega push, é entregue como um pedido HTTP POST. O campo
data
contém o payload do evento do Cloud Storage codificado em base64. Quando o campo de dados é descodificado, corresponde ao corpo da mensagem de notificações de alteração de objeto.POST /YourSpecifiedURL Accept: * / * Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost { "deliveryAttempt": 5, "message": {"attributes": {"notificationConfig":"projects/_/buckets/foo/notificationConfigs/3", "eventType": "OBJECT_FINALIZE", "payloadFormat": "JSON_API_V1", "bucketId": "foo", "objectId": "bar", "objectGeneration": 123456, "eventTime": "2021-01-15T01:30:15.01Z" }, "data": "ewogImtpbm", "messageId": "2070443601311540", "message_id": "2070443601311540", "orderingKey": "key", "publishTime": "2021-02-26T19:13:55.749Z", "publish_time": "2021-02-26T19:13:55.749Z" }, "subscription": "projects/myproject/subscriptions/mysubscription" }
Código de resposta
A tabela seguinte descreve as diferenças de interpretação do código de resposta entre as notificações de alterações de objetos e as notificações do Pub/Sub:
Funcionalidade | Código de resposta | Interpretação | Ação |
---|---|---|---|
Notificações de alterações de objetos | |||
102 , 200 , 201 , 202 e 204
|
Concluído | Mensagem processada | |
500 , 502 , 503 , 504
|
Falha no processamento | Volte a tentar mais tarde | |
Tempos limite excedidos, ligações falhadas, sem resposta | Falha no processamento | Volte a tentar mais tarde | |
Qualquer outro código HTTP. Por exemplo, 404
|
Falha permanente | Não repetir mensagem | |
Notificações do Pub/Sub | |||
102 , 200 , 201 , 202 e 204
|
Concluído | Mensagem confirmada | |
Todos os outros códigos de resposta, limites de tempo e falhas de ligação | Falha | Volte a tentar mais tarde |
O que se segue?
- Configure as notificações do Pub/Sub para o Cloud Storage.
- Saiba mais sobre o Pub/Sub.
- Subscreva um contentor para receber notificações enviadas para o Pub/Sub.