Neste tutorial, mostramos como usar o Cloud Tasks em um aplicativo do App Engine para acionar uma função do Cloud Run e enviar um e-mail programado.
Noções básicas sobre o código
Esta seção analisa o código do aplicativo e explica como ele funciona.
Como criar a tarefa
A página de índice é veiculada usando gerenciadores no app.yaml. As variáveis necessárias para a criação de tarefas são passadas como variáveis de ambiente.
Esse código cria o endpoint /send-email. Esse endpoint processa os envios de formulário da página de índice e passa esses dados para o código de criação de tarefas.
Na verdade, esse código cria a tarefa e a envia para a fila do Cloud Tasks. O código cria a tarefa por:
- Especificando o tipo de segmentação como - HTTP Request.
- Especificando o - HTTP methoda ser usado e o- URLdo destino.
- Definir o cabeçalho - Content-Typecomo- application/jsonpara que os aplicativos downstream possam analisar o payload estruturado.
- Adicionar um e-mail da conta de serviço para que o Cloud Tasks possa fornecer credenciais à segmentação da solicitação, o que requer autenticação. A conta de serviço é criada separadamente. 
- Verifique se a entrada do usuário para data está dentro do máximo de 30 dias e adicione-a à solicitação como campo - scheduleTime.
Como criar o e-mail
Esse código cria a função do Cloud Run, que é o destino da solicitação do Cloud Tasks. Ele usa o corpo da solicitação para construir um e-mail e enviá-lo por meio da API SendGrid.
Como preparar o aplicativo
Como configurar o SendGrid
- Crie uma conta do SendGrid. - É possível fazer isso manualmente por meio do site do SendGrid
- ou usar o Google Cloud Launcher, que criará uma conta para você e integrará o faturamento. Consulte Como criar uma conta do SendGrid usando o Cloud Launcher.
 
- Crie uma chave de API do SendGrid: - Faça login na sua conta do SendGrid. 
- Na barra de navegação esquerda, abra Configurações e clique em Chaves de API. 
- Clique em Criar chave de API e selecione acesso restrito. No cabeçalho Enviar e-mail, selecione Acesso total. 
- Copie a chave de API quando ela for exibida (você verá essa opção apenas uma vez, cole-a em algum lugar para usá-la mais tarde). 
 
Como fazer o download do código-fonte
- Clone o repositório do app de amostra na máquina local: - git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
- Acesse o diretório que contém o exemplo de código: - cd cloud-tasks/
Como implantar a função do Cloud Run
- Navegue até o diretório - function/:- cd function/
- Implante 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 de API.- Este comando usa sinalizações: - --trigger-httppara especificar o tipo de gatilho do Cloud Run functions.
- --no-allow-unauthenticatedpara especificar que a invocação da função requer autenticação.
- --set-env-varpara definir suas credenciais do SendGrid
 
- Defina o controle de acesso da função para permitir apenas usuários autenticados. - Selecione a função - sendEmailna interface do Cloud Run functions.
- Se você não vir informações de permissões para - sendEmail, clique em MOSTRAR PAINEL DE INFORMAÇÕES no canto superior direito.
- Clique no botão Adicionar principais acima. 
- Defina Novos principais 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 SALVAR. 
 
Como criar uma fila do Cloud Tasks
- Crie uma fila usando o seguinte comando - gcloud:- gcloud tasks queues create my-queue --location=LOCATION - Substitua - LOCATIONpelo local preferido da fila, por exemplo,- us-west2. Se você não especificar o local, a CLI gcloud vai escolher o padrão.
- Verifique se ele foi criado com sucesso: - gcloud tasks queues describe my-queue --location=LOCATION - Substitua - LOCATIONpelo local da fila.
Como criar uma conta de serviço
A solicitação do Cloud Tasks precisa fornecer credenciais no cabeçalho Authorization para que a função do Cloud Run autentique a solicitação. Essa conta de serviço permite que o Cloud Tasks crie e adicione um token OIDC para essa finalidade.
- Na interface das contas de serviço, clique em +CRIAR CONTA DE SERVIÇO. 
- Adicione um nome de conta de serviço (nome de exibição amigável) 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. 
Como implantar o endpoint e o criador de tarefas no App Engine
- Navegue até o diretório - app/:- cd ../app/
- Atualize as variáveis no - app.yamlcom seus valores:- Para encontrar o local da fila, use o seguinte comando: - gcloud tasks queues describe my-queue --location=LOCATION - Substitua - LOCATIONpelo local da fila.- Para encontrar o URL da função, use o seguinte comando: - gcloud functions describe sendEmail 
- Implante o aplicativo no ambiente padrão do App Engine usando o seguinte comando: - gcloud app deploy 
- Abra o aplicativo para enviar um cartão-postal como um e-mail: - gcloud app browse