Este guia mostra exemplos de funções que são acionadas quando faz alterações a um documento numa coleção especificada.
Antes de começar
Antes de executar o código de exemplo neste guia, tem de fazer o seguinte:
- Ative as APIs e conceda as funções necessárias para implementar funções
- Configure uma base de dados do Firestore
Exemplos
Os exemplos seguintes demonstram como escrever funções que respondem a um acionador do Firestore.
Exemplo 1: função Hello Firestore
O exemplo seguinte imprime os campos de um evento do Firestore de acionamento:
Node.js
Python
Ir
Java
C#
Implemente a função Hello Firestore
Se ainda não o fez, configure a sua base de dados do Firestore.
Clique no separador para ver instruções sobre como usar a ferramenta da sua escolha.
Consola
Quando usa a Google Cloud consola para criar uma função, também pode adicionar um acionador à sua função. Siga estes passos para criar um acionador para a sua função:
Na Google Cloud consola, aceda ao Cloud Run:
Clique em Escrever uma função e introduza os detalhes da função. Para mais informações sobre a configuração de funções durante a implementação, consulte Implementar funções.
Na secção Acionador, clique em Adicionar acionador.
Selecione Acionador do Firestore.
No painel Acionador do Eventarc, modifique os detalhes do acionador da seguinte forma:
Introduza um nome para o acionador no campo Nome do acionador ou use o nome predefinido.
Selecione um Tipo de acionador na lista:
Origens Google para especificar acionadores para o Pub/Sub, o Cloud Storage, o Firestore e outros fornecedores de eventos Google.
Terceiros para integrar com fornecedores que não sejam da Google que oferecem uma origem do Eventarc. Para mais informações, consulte o artigo Eventos de terceiros no Eventarc.
Selecione Firestore na lista Fornecedor de eventos para selecionar um produto que forneça o tipo de evento para acionar a sua função. Para ver a lista de fornecedores de eventos, consulte o artigo Fornecedores de eventos e destinos.
Selecione type=google.cloud.firestore.document.v1.written na lista Tipo de evento. A configuração do acionador varia consoante o tipo de evento suportado. Para mais informações, consulte o artigo Tipos de eventos.
Na secção Filtros, selecione uma base de dados, uma operação e valores de atributos, ou use as seleções predefinidas.
Se o campo Região estiver ativado, selecione uma localização para o acionador do Eventarc. Em geral, a localização de um acionador do Eventarc deve corresponder à localização do recurso que quer monitorizar para eventos. Google Cloud Na maioria dos cenários, também deve implementar a função na mesma região. Consulte o artigo Compreenda as localizações do Eventarc para ver mais detalhes sobre as localizações dos acionadores do Eventarc.
No campo Conta de serviço, selecione uma conta de serviço. Os acionadores do Eventarc estão associados a contas de serviço para usar como identidade quando invocam a sua função. A conta de serviço do acionador do Eventarc tem de ter a autorização para invocar a sua função. Por predefinição, o Cloud Run usa a conta de serviço predefinida do Compute Engine.
Opcionalmente, especifique o caminho do URL do serviço para o qual enviar o pedido recebido. Este é o caminho relativo no serviço de destino para o qual os eventos do acionador devem ser enviados. Por exemplo:
/
,/route
,route
eroute/subroute
.
Depois de preencher os campos obrigatórios, clique em Guardar acionador.
gcloud
Quando cria uma função através da CLI gcloud, tem primeiro de implementar a função e, em seguida, criar um acionador. Siga estes passos para criar um acionador para a sua função:
Execute o seguinte comando no diretório que contém o código de exemplo para implementar a sua função:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Substituir:
FUNCTION com o nome da função que está a implementar. Pode omitir este parâmetro por completo, mas é-lhe pedido o nome se o omitir.
FUNCTION_ENTRYPOINT com o ponto de entrada da sua função no código-fonte. Este é o código que o Cloud Run executa quando a sua função é executada. O valor desta flag tem de ser um nome de função ou um nome de classe totalmente qualificado que exista no seu código-fonte.
BASE_IMAGE_ID com o ambiente de imagem base para a sua função. Para mais detalhes sobre as imagens base e os pacotes incluídos em cada imagem, consulte o artigo Imagens base de tempos de execução.
REGION com a Google Cloud região onde quer implementar a sua função. Por exemplo,
europe-west1
.
Execute o seguinte comando para criar um acionador que filtra eventos:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=REGION \ --event-filters=type=google.cloud.firestore.document.v1.written \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='users/{username}' \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Substituir:
TRIGGER_NAME com o nome do acionador.
EVENTARC_TRIGGER_LOCATION com a localização do acionador do Eventarc. Em geral, a localização de um acionador do Eventarc deve corresponder à localização do Google Cloud recurso que quer monitorizar para eventos. Na maioria dos cenários, também deve implementar a função na mesma região. Para mais informações, consulte o artigo Localizações do Eventarc.
FUNCTION com o nome da função que está a implementar.
REGION com a região do Cloud Run da função.
PROJECT_NUMBER com o seu Google Cloud número do projeto. Os acionadores do Eventarc estão associados a contas de serviço para serem usados como uma identidade quando invocam a sua função. A conta de serviço do seu acionador do Eventarc tem de ter autorização para invocar a sua função. Por predefinição, o Cloud Run usa a conta de serviço de computação predefinida.
Cada sinalização
event-filters
especifica um tipo de evento, com a função a ser acionada apenas quando um evento cumpre todos os critérios especificados nas respetivas sinalizaçõesevent-filters
. Cada acionador tem de ter uma flagevent-filters
que especifique um tipo de evento suportado, como um novo documento escrito no Firestore ou um ficheiro carregado para o Cloud Storage. Não pode alterar o tipo de filtro de eventos após a criação. Para alterar o tipo de filtro de eventos, tem de criar um novo acionador e eliminar o antigo. Opcionalmente, pode repetir a flag--event-filters
com um filtro suportado no formatoATTRIBUTE=VALUE
para adicionar mais filtros.
Terraform
Para criar um acionador do Eventarc para uma função do Cloud Run, consulte o artigo Crie um acionador com o Terraform.
Use os outros campos tal como estão:
--event-filters=type=google.cloud.firestore.document.v1.written
especifica que a função é acionada quando um documento é criado, atualizado ou eliminado, de acordo com ogoogle.cloud.firestore.document.v1.written
tipo de evento.--event-filters=database='(default)'
especifica a base de dados do Firebase. Para o nome da base de dados predefinido, use(default)
.--event-filters-path-pattern=document='users/{username}'
fornece o padrão do caminho dos documentos que devem ser monitorizados para alterações relevantes. Este padrão de caminho indica que todos os documentos na coleçãousers
devem ser monitorizados. Para mais informações, consulte o artigo Compreenda os padrões de caminhos.
Teste a função Hello Firestore
Para testar a função Hello Firestore, configure uma coleção denominada
users
na sua base de dados do Firestore:
Na Google Cloud consola, aceda à página de bases de dados do Firestore:
Clique em Iniciar uma coleção.
Especifique
users
como o ID da coleção.Para começar a adicionar o primeiro documento da coleção, em Adicionar o primeiro documento, aceite o ID do documento gerado automaticamente.
Adicione, pelo menos, um campo para o documento, especificando um nome e um valor. Por exemplo, em Nome do campo, introduza
username
e, em Valor do campo, introduzarowan
.Quando terminar, clique em Guardar.
Esta ação cria um novo documento, acionando assim a sua função.
Para confirmar que a sua função foi acionada, clique no nome associado da função na Google Cloud consola página Vista geral do Cloud Run para abrir a página Detalhes do serviço.
Selecione o separador Registos e procure esta string:
Function triggered by change to: //firestore.googleapis.com/projects/your-project-id/databases/(default)'
Exemplo 2: função de conversão em maiúsculas
O exemplo seguinte obtém o valor adicionado pelo utilizador, converte a string nessa localização em letras maiúsculas e substitui o valor pela string em letras maiúsculas:
Node.js
Use protobufjs para descodificar os dados do evento. Inclua o google.events.cloud.firestore.v1
data.proto
na sua fonte.
Python
Ir
Java
C#
Implemente a função Converter em maiúsculas
Se ainda não o fez, configure a sua base de dados do Firestore.
Clique no separador para ver instruções sobre como usar a ferramenta da sua escolha.
Consola
Quando usa a Google Cloud consola para criar uma função, também pode adicionar um acionador à sua função. Siga estes passos para criar um acionador para a sua função:
Na Google Cloud consola, aceda ao Cloud Run:
Clique em Escrever uma função e introduza os detalhes da função. Para mais informações sobre a configuração de funções durante a implementação, consulte Implementar funções.
Na secção Acionador, clique em Adicionar acionador.
Selecione Acionador do Firestore.
No painel Acionador do Eventarc, modifique os detalhes do acionador da seguinte forma:
Introduza um nome para o acionador no campo Nome do acionador ou use o nome predefinido.
Selecione um Tipo de acionador na lista:
Origens Google para especificar acionadores para o Pub/Sub, o Cloud Storage, o Firestore e outros fornecedores de eventos Google.
Terceiros para integrar com fornecedores que não sejam da Google que oferecem uma origem do Eventarc. Para mais informações, consulte o artigo Eventos de terceiros no Eventarc.
Selecione Firestore na lista Fornecedor de eventos para selecionar um produto que forneça o tipo de evento para acionar a sua função. Para ver a lista de fornecedores de eventos, consulte o artigo Fornecedores de eventos e destinos.
Selecione type=google.cloud.firestore.document.v1.written na lista Tipo de evento. A configuração do acionador varia consoante o tipo de evento suportado. Para mais informações, consulte o artigo Tipos de eventos.
Na secção Filtros, selecione uma base de dados, uma operação e valores de atributos, ou use as seleções predefinidas.
Se o campo Região estiver ativado, selecione uma localização para o acionador do Eventarc. Em geral, a localização de um acionador do Eventarc deve corresponder à localização do recurso que quer monitorizar para eventos. Google Cloud Na maioria dos cenários, também deve implementar a função na mesma região. Consulte o artigo Compreenda as localizações do Eventarc para ver mais detalhes sobre as localizações dos acionadores do Eventarc.
No campo Conta de serviço, selecione uma conta de serviço. Os acionadores do Eventarc estão associados a contas de serviço para usar como identidade quando invocam a sua função. A conta de serviço do acionador do Eventarc tem de ter a autorização para invocar a sua função. Por predefinição, o Cloud Run usa a conta de serviço predefinida do Compute Engine.
Opcionalmente, especifique o caminho do URL do serviço para o qual enviar o pedido recebido. Este é o caminho relativo no serviço de destino para o qual os eventos do acionador devem ser enviados. Por exemplo:
/
,/route
,route
eroute/subroute
.
Depois de preencher os campos obrigatórios, clique em Guardar acionador.
gcloud
Quando cria uma função através da CLI gcloud, tem primeiro de implementar a função e, em seguida, criar um acionador. Siga estes passos para criar um acionador para a sua função:
Execute o seguinte comando no diretório que contém o código de exemplo para implementar a sua função:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Substituir:
FUNCTION com o nome da função que está a implementar. Pode omitir este parâmetro por completo, mas é-lhe pedido o nome se o omitir.
FUNCTION_ENTRYPOINT com o ponto de entrada da sua função no código-fonte. Este é o código que o Cloud Run executa quando a sua função é executada. O valor desta flag tem de ser um nome de função ou um nome de classe totalmente qualificado que exista no seu código-fonte.
BASE_IMAGE_ID com o ambiente de imagem base para a sua função. Para mais detalhes sobre as imagens base e os pacotes incluídos em cada imagem, consulte o artigo Imagens base de tempos de execução.
REGION com a Google Cloud região onde quer implementar a sua função. Por exemplo,
europe-west1
.
Execute o seguinte comando para criar um acionador que filtra eventos:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=REGION \ --event-filters=type=google.cloud.firestore.document.v1.written \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='messages/{pushId}' \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Substituir:
TRIGGER_NAME com o nome do acionador.
EVENTARC_TRIGGER_LOCATION com a localização do acionador do Eventarc. Em geral, a localização de um acionador do Eventarc deve corresponder à localização do Google Cloud recurso que quer monitorizar para eventos. Na maioria dos cenários, também deve implementar a função na mesma região. Para mais informações, consulte o artigo Localizações do Eventarc.
FUNCTION com o nome da função que está a implementar.
REGION com a região do Cloud Run da função.
PROJECT_NUMBER com o seu Google Cloud número do projeto. Os acionadores do Eventarc estão associados a contas de serviço para serem usados como uma identidade quando invocam a sua função. A conta de serviço do seu acionador do Eventarc tem de ter autorização para invocar a sua função. Por predefinição, o Cloud Run usa a conta de serviço de computação predefinida.
Cada sinalização
event-filters
especifica um tipo de evento, com a função a ser acionada apenas quando um evento cumpre todos os critérios especificados nas respetivas sinalizaçõesevent-filters
. Cada acionador tem de ter uma flagevent-filters
que especifique um tipo de evento suportado, como um novo documento escrito no Firestore ou um ficheiro carregado para o Cloud Storage. Não pode alterar o tipo de filtro de eventos após a criação. Para alterar o tipo de filtro de eventos, tem de criar um novo acionador e eliminar o antigo. Opcionalmente, pode repetir a flag--event-filters
com um filtro suportado no formatoATTRIBUTE=VALUE
para adicionar mais filtros.
Terraform
Para criar um acionador do Eventarc para uma função do Cloud Run, consulte o artigo Crie um acionador com o Terraform.
Use os outros campos tal como estão:
--event-filters=type=google.cloud.firestore.document.v1.written
especifica que a função é acionada quando um documento é criado, atualizado ou eliminado, de acordo com ogoogle.cloud.firestore.document.v1.written
tipo de evento.--event-filters=database='(default)'
especifica a base de dados do Firestore. Para o nome da base de dados predefinido, use(default)
.--event-filters-path-pattern=document='messages/{pushId}'
fornece o padrão do caminho dos documentos que devem ser monitorizados para detetar alterações relevantes. Este padrão de caminho indica que todos os documentos na coleçãomessages
devem ser monitorizados. Para mais informações, consulte o artigo Compreenda os padrões de caminhos.
Teste a função Converter em maiúsculas
Para testar a função Convert to Uppercase que acabou de implementar, configure uma coleção denominada messages
na sua base de dados do Firestore:
Na Google Cloud consola, aceda à página de bases de dados do Firestore:
Clique em Iniciar uma coleção.
Especifique
messages
como o ID da coleção.Para começar a adicionar o primeiro documento da coleção, em Adicionar o primeiro documento, aceite o ID do documento gerado automaticamente.
Para acionar a função implementada, adicione um documento em que o Nome do campo seja
original
e o Valor do campo sejaminka
.Quando guarda o documento, pode ver a palavra em minúsculas no campo de valor convertida em maiúsculas.
Se, posteriormente, editar o valor do campo para incluir letras minúsculas, isso aciona novamente a função, convertendo todas as letras minúsculas em maiúsculas.
Limitações para funções
- A ordenação não é garantida. As alterações rápidas podem acionar invocações de funções numa ordem inesperada.
- Os eventos são entregues, pelo menos, uma vez, mas um único evento pode resultar em várias invocações de funções. Evite depender de mecanismos de execução única e escreva funções idempotentes.
- Um acionador está associado a uma única base de dados. Não pode criar um acionador que corresponda a várias bases de dados.
- A eliminação de uma base de dados não elimina automaticamente os acionadores dessa base de dados. O acionador deixa de enviar eventos, mas continua a existir até o eliminar.