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 oURLdo destino.Definir o cabeçalho
Content-Typecomoapplication/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.gitAcesse 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