Como implantar do computador local

Esta página mostra como implantar um Cloud Function a partir de sua máquina local usando a ferramenta de linha de comando gcloud. Ao usar a ferramenta de linha de comando, o Google Cloud Functions faz o upload do conteúdo do diretório da função para um intervalo do Cloud Storage automaticamente e exclui arquivos desnecessários por meio do arquivo .gcloudignore.

Como alternativa, é possível usar a interface do Cloud Functions no Cloud Console para fazer upload de um arquivo ZIP que você mesmo cria.

Para ver um exemplo completo de execução que inclui código de amostra para download, consulte o guia de início rápido Como usar a ferramenta de linha de comando gcloud.

Implantar usando a ferramenta gcloud

Usando a ferramenta de linha de comando gcloud, implante sua função a partir do diretório que contém o código de função com o comando gcloud functions deploy:

gcloud functions deploy NAME --runtime RUNTIME TRIGGER [FLAGS...]
Argumento Descrição
NAME O nome de uma das Cloud Functions que você está implantando. Esse nome só pode conter letras, números, sublinhados e hífens. A menos que você especifique a sinalização --entry-point, seu código precisará conter uma função com o mesmo nome.
--runtime RUNTIME O nome do ambiente de execução que você está usando. Para ver uma lista completa, consulte a referência do gcloud. Observe que você deve incluir essa sinalização na primeira vez que implantar uma função, mas pode omiti-la em implantações subsequentes.
TRIGGER O tipo de acionador dessa função (consulte Eventos e acionadores). As regras para especificar acionadores ao implantar uma função são as seguintes:
  • Se você não especificar um acionador ao implantar uma atualização para uma função existente, será mantido o acionador atual.
  • Ao implantar uma nova função, especifique --trigger-http, --trigger-topic ou --trigger-bucket, ou especifique ambos --trigger-event E --trigger-resource. Use a sinalização --trigger-http para implantar funções HTTP. Use as outras sinalizações para implantar funções de plano de fundo.
FLAGS... (Opcional) Sinalizações adicionais que você pode especificar durante a implantação, como --stage-bucket ou --entry-point. Para uma referência completa, consulte a documentação do gcloud functions deploy.

Cada ambiente de execução tem requisitos específicos de estruturação de arquivos para que o Cloud Functions possa encontrar a definição de sua função.

Exemplo de função HTTP

Há dois tipos de Cloud Functions: funções HTTP e funções de plano de fundo. Para um exemplo que mostra como implantar uma função de segundo plano, consulte Exemplo de função de segundo plano. O exemplo a seguir implanta uma função HTTP escrita em Python e atribui a ela um acionador, usando a sinalização --trigger-http:

gcloud functions deploy helloworld --runtime python37 --trigger-http

Consulte os argumentos neste comando:

Argumento Descrição
helloworld O nome do Cloud Function que você está implantando, neste caso helloworld. O Cloud Function implantado será registrado com o nome helloworld e o arquivo de origem deve conter uma função chamada helloworld.
--runtime python37 O ambiente de execução dessa função, neste caso python37.
--trigger-http O tipo de acionador dessa função. Neste caso, uma solicitação HTTP (webhook).

O seguinte exemplo implanta a mesma função, mas com um nome diferente:

gcloud functions deploy hello --entry-point helloworld --runtime python37 --trigger-http

Consulte os argumentos neste comando:

Argumento Descrição
hello O nome do Cloud Function que você está implantando, neste caso hello. O Cloud Function implantado será registrado com o nome hello.
--entry-point helloworld Uma das Cloud Functions implantadas usará uma função chamada helloworld no arquivo de origem.
--runtime python37 O ambiente de execução dessa função, neste caso python37.
--trigger-http O tipo de acionador dessa função. Neste caso, uma solicitação HTTP (webhook).

A opção --entry-point é útil quando as funções em seu código-fonte não atendem aos requisitos de nomenclatura do Cloud Functions.

Exemplo de função em segundo plano

O exemplo a seguir implanta uma função de segundo plano escrita em Node.js 8 que será acionada pelo Cloud Storage:

gcloud functions deploy helloGCSGeneric --runtime nodejs8 --trigger-resource TRIGGER_BUCKET_NAME --trigger-event google.storage.object.finalize

Consulte os argumentos neste comando:

Argumento Descrição
helloGCSGeneric O nome do Cloud Function que você está implantando, neste caso helloGCSGeneric. O Cloud Function implantado será registrado com o nome helloGCSGeneric e o arquivo de origem deve conter uma função chamada helloGCSGeneric.
--runtime nodejs8 O ambiente de execução dessa função, neste caso nodejs8.
--trigger-resource O recurso do acionador para esta função. O recurso do acionador especifica o recurso para o qual o evento do acionador está sendo observado. Nesse caso, o recurso é o nome (TRIGGER_BUCKET_NAME) do intervalo do Cloud Storage que aciona a função.
--trigger-event O evento de acionador desta função, que especifica qual ação deve acionar a função. Nesse caso, o evento é google.storage.object.finalize.

Usar as sinalizações --trigger-resource MY_RESOURCE e --trigger-event MY_EVENT é a maneira mais explícita de especificar um acionador para uma função de segundo plano. No entanto, a gcloud fornece atalhos para Pub/Sub e Cloud Storage:

  • Ao implantar funções atribuídas a acionadores Pub/Sub, é possível usar a sinalização --trigger-topic MY_TOPIC. Essa sinalização é uma abreviação de --trigger-resource MY_TOPIC --trigger-event google.pubsub.topic.publish.

  • Ao implantar funções que são acionadores do Cloud Storage, é possível usar a sinalização --trigger-bucket MY_STORAGE_BUCKET para acionar a execução da função sempre que os arquivos no intervalo especificado forem alterados.

A seguir