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.
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 o- URLdo destino.
- Definir o cabeçalho - Content-Typecomo- application/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á no 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.git
- Altere 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 da 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 da 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 da 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 da 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 sua posiçã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