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 method
a ser usado e oURL
do destino.Definir o cabeçalho
Content-Type
comoapplication/json
para 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_KEY
pela sua chave de API.Este comando usa sinalizações:
--trigger-http
para especificar o tipo de gatilho do Cloud Run functions.--no-allow-unauthenticated
para especificar que a invocação da função requer autenticação.--set-env-var
para definir suas credenciais do SendGrid
Defina o controle de acesso da função para permitir apenas usuários autenticados.
Selecione a função
sendEmail
na 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
LOCATION
pelo 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
LOCATION
pelo 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.yaml
com seus valores:Para encontrar o local da fila, use o seguinte comando:
gcloud tasks queues describe my-queue --location=LOCATION
Substitua
LOCATION
pelo 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