Este tutorial mostra como usar o Cloud Tasks numa aplicação do App Engine para acionar uma função do Cloud Run e enviar um email agendado.
Objetivos
- Compreenda o código em cada um dos componentes.
- Crie uma conta do SendGrid.
- Transfira o código-fonte.
- Implemente uma função do Cloud Run para receber pedidos do Cloud Tasks e enviar um email através da API SendGrid.
- Crie uma fila do Cloud Tasks.
- Crie uma conta de serviço para autenticar os seus pedidos do Cloud Tasks.
- Implemente o código do cliente que permite a um utilizador enviar um email.
Custos
O Cloud Tasks, as funções do Cloud Run e o App Engine têm um nível gratuito. Por isso, desde que esteja a executar o tutorial no nível gratuito dos produtos indicados, não deve resultar em custos adicionais. Para mais informações, consulte a secção Preços.
Antes de começar
Selecione ou crie um Google Cloud projeto.
Inicialize uma aplicação do App Engine no seu projeto:
Na página Bem-vindo ao App Engine, clique em Criar aplicação.
Selecione uma região para a sua aplicação. Esta localização vai servir como o parâmetro
LOCATION_IDpara os seus pedidos do Cloud Tasks, por isso, tome nota. Tenha em atenção que duas localizações, denominadas europe-west e us-central nos comandos do App Engine, são denominadas, respetivamente, europe-west1 e us-central1 nos comandos do Cloud Tasks.Selecione Node.js para o idioma e Standard para o ambiente.
Se for apresentado o pop-up Ativar faturação, selecione a sua conta de faturação. Se não tiver atualmente uma conta de faturação, clique em Criar conta de faturação e siga o assistente.
Na página Começar, clique em Seguinte. Vai tratar disto mais tarde.
Ative as APIs Cloud Run Functions e Cloud Tasks.
Instale e inicialize a CLI gcloud.
Compreender o código
Esta secção explica o código da app e como funciona.
Criar a tarefa
A página de índice é publicada através de controladores no app.yaml. As variáveis necessárias para a criação de tarefas são transmitidas como variáveis de ambiente.
Este código cria o ponto final /send-email. Este ponto final processa os envios de formulários da página de índice e transmite esses dados para o código de criação de tarefas.
Este código cria efetivamente a tarefa e envia-a para a fila do Cloud Tasks. O código cria a tarefa:
Especificar o tipo de destino como
HTTP Request.Especificar o
HTTP methoda usar e oURLdo destino.Definir o cabeçalho
Content-Typecomoapplication/jsonpara que as aplicações a jusante possam analisar a carga útil estruturada.Adicionar um email de conta de serviço para que o Cloud Tasks possa fornecer credenciais ao destino do pedido, o que requer autenticação. A conta de serviço é criada separadamente.
Verificar se a entrada do utilizador para a data está dentro do máximo de 30 dias e adicioná-la ao pedido como campo
scheduleTime.
Criar o email
Este código cria a função do Cloud Run que é o destino do pedido do Cloud Tasks. Usa o corpo do pedido para criar um email e enviá-lo através da API SendGrid.
A preparar a aplicação
Configurar o SendGrid
Crie uma conta do SendGrid.
- Pode fazê-lo manualmente através do Website do SendGrid
- Em alternativa, pode usar o Google Cloud Launcher, que cria uma conta para si e integra a faturação. Consulte o artigo Criar uma conta do SendGrid através do Cloud Launcher.
Crie uma chave da API SendGrid:
Inicie sessão na sua conta do SendGrid.
No menu de navegação do lado esquerdo, abra Definições e clique em Chaves de API.
Clique em Criar chave da API e selecione acesso restrito. No cabeçalho Mail Send, selecione Acesso total.
Copie a chave API quando for apresentada (só a vê uma vez. Certifique-se de que a cola noutro local para a poder usar mais tarde).
Transferir o código-fonte
Clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitAltere para o diretório que contém o código de exemplo:
cd cloud-tasks/
Implementar a função do Cloud Run
Navegue para o diretório
function/:cd function/Implemente a função:
gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \
Substitua
SENDGRID_API_KEYpela sua chave da API.Este comando usa sinalizadores:
--trigger-httppara especificar o tipo de acionador de funções do Cloud Run.--no-allow-unauthenticatedpara especificar que a invocação da função requer autenticação.--set-env-varpara definir as suas credenciais do SendGrid
Defina o controlo de acesso para a função de modo a permitir apenas utilizadores autenticados.
Selecione a função
sendEmailna IU das funções do Cloud Run.Se não vir informações de autorizações para
sendEmail, clique em MOSTRAR PAINEL DE INFORMAÇÕES no canto superior direito.Clique no botão Adicionar diretores acima.
Defina Novos diretores como
allAuthenticatedUsers.Defina a Função.
- Funções de primeira geração (1.ª geração): defina a função como
Cloud Function Invoker - Funções de segunda geração (2.ª geração): defina a função como
Cloud Run Invoker
- Funções de primeira geração (1.ª geração): defina a função como
Clique em GUARDAR.
Criar uma fila do Cloud Tasks
Crie uma fila com o seguinte comando
gcloud:gcloud tasks queues create my-queue --location=LOCATION
Substitua
LOCATIONpela sua localização preferida para a fila, por exemplo,us-west2. Se não especificar a localização, a CLI gcloud escolhe a predefinição.Verifique se foi criado com êxito:
gcloud tasks queues describe my-queue --location=LOCATION
Substitua
LOCATIONpela localização da fila.
Criar uma conta de serviço
O pedido Cloud Tasks tem de fornecer credenciais no cabeçalho Authorization para que a função do Cloud Run autentique o pedido. Esta conta de serviço permite que o Cloud Tasks crie e adicione um token OIDC para esse fim.
Na IU de contas de serviço, clique em +CRIAR CONTA DE SERVIÇO.
Adicione um nome da conta de serviço(nome a apresentar simples) e selecione criar.
Defina a Função e clique em Continuar.
- Funções de primeira geração (1.ª geração): defina a função como
Cloud Function Invoker - Funções de segunda geração (2.ª geração): defina a função como
Cloud Run Invoker
- Funções de primeira geração (1.ª geração): defina a função como
Selecione Concluído.
Implementar o ponto final e o criador de tarefas no App Engine
Navegue para o diretório
app/:cd ../app/Atualize as variáveis no
app.yamlcom os seus valores:Para encontrar a localização na fila, use o seguinte comando:
gcloud tasks queues describe my-queue --location=LOCATION
Substitua
LOCATIONpela localização da fila.Para encontrar o URL da função, use o seguinte comando:
gcloud functions describe sendEmail
Implemente a aplicação no ambiente padrão do App Engine com o seguinte comando:
gcloud app deploy
Abra a aplicação para enviar um postal como email:
gcloud app browse
Limpar
Depois de concluir o tutorial, pode limpar os recursos que criou para que deixem de usar a quota e incorrer em custos. As secções seguintes descrevem como eliminar ou desativar estes recursos.
Eliminar recursos
Pode limpar os recursos que criou no Google Cloud para que não ocupem quota e não lhe sejam faturados no futuro. As secções seguintes descrevem como eliminar ou desativar estes recursos.
Elimine a função do Cloud Run
Aceda à página Funções do Cloud Run na Google Cloud consola.
Clique nas caixas de verificação junto às suas funções.
Clique no botão Eliminar na parte superior da página e confirme a eliminação.
Elimine a fila do Cloud Tasks
Abra a página de filas do Cloud Tasks na consola.
Selecione o nome da fila que quer eliminar e clique em Eliminar fila.
Confirme a ação.
Eliminar o projeto
A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.
Para eliminar o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
O que se segue?
- Saiba mais sobre a criação de tarefas de destino HTTP.
- Saiba como configurar a fila do Cloud Tasks.