Neste tutorial, mostramos como usar o Cloud Tasks em um aplicativo do App Engine para acionar uma função do Cloud e enviar um e-mail programado.
Objetivos
- Entender o código em cada um dos componentes.
- Crie uma conta do SendGrid.
- Fazer o download do código-fonte.
- Implantar uma Função do Cloud para receber solicitações do Cloud Tasks e enviar um e-mail por meio da API SendGrid.
- Criar uma fila do Cloud Tasks.
- Criar uma conta de serviço para autenticar suas solicitações do Cloud Tasks.
- Implantar o código do cliente que permite que um usuário envie um e-mail.
Custos
O Cloud Tasks, o Cloud Functions e o App Engine têm um nível gratuito. Portanto, desde que você execute o tutorial dentro desse nível dos produtos determinados, isso não resultará em custos adicionais. Para mais informações, consulte Preços.
Antes de começar
Selecione ou crie um projeto do Google Cloud.
Inicialize um aplicativo do App Engine no seu projeto:
Na página Bem-vindo ao App Engine, clique em Criar aplicativo.
Selecione uma região para o aplicativo. Esse local servirá como o parâmetro
LOCATION_ID
para suas solicitações do Cloud Tasks. Portanto, anote-o. Observe que dois locais, denominados europe-west e us-central nos comandos do App Engine, são chamados, respectivamente, europe-west1 e us-central1 nos comandos do Cloud Tasks.Selecione Node.js para a linguagem e Padrão para o ambiente.
Se o pop-up Ativar faturamento for exibido, selecione sua conta de faturamento. Se você não tiver uma conta de faturamento atualmente, clique em Criar conta de faturamento e siga o assistente.
Na página Primeiros passos, clique em Avançar. Você cuidará disso mais tarde.
Ative as APIs Cloud Functions e Cloud Tasks.
Instale e inicialize a gcloud CLI.
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 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 código de amostra:
cd cloud-tasks/
Como implantar o Cloud Function
Acesse 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 Functions.--no-allow-unauthenticated
para especificar 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 IU do Cloud 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 o Papel.
- Funções de primeira geração (1a geração): defina o papel como
Cloud Function Invoker
. - Funções de segunda geração (2a geração): defina o papel como
Cloud Run Invoker
.
- Funções de primeira geração (1a geração): defina o papel 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 de sua preferência para a fila, por exemplo,us-west2
. Se você não especificar o local, a CLI gcloud 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 deve fornecer credenciais no cabeçalho Authorization
do Cloud Function para autenticar a solicitação. Essa conta de serviço permite que o Cloud Tasks crie e adicione um token OIDC para essa finalidade.
Na interface de 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 o Papel e clique em Continuar.
- Funções de primeira geração (1a geração): defina o papel como
Cloud Function Invoker
. - Funções de segunda geração (2a geração): defina o papel como
Cloud Run Invoker
.
- Funções de primeira geração (1a geração): defina o papel 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
Limpar
Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.
Como excluir recursos
É possível limpar os recursos criados no Google Cloud para que eles não ocupem cota e você não seja cobrado por eles no futuro. As próximas seções descrevem como excluir ou desativar esses recursos.
Excluir a Função do Cloud
Acesse a página de visão geral do Cloud Functions no console do Google Cloud.
Clique nas caixas de seleção ao lado das funções.
Clique no botão Excluir na parte superior da página e confirme.
Excluir a fila do Cloud Tasks
Abra a página de filas do Cloud Tasks no console.
Selecione o nome da fila que você quer excluir e clique em Excluir fila.
Confirme a ação.
Excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto:
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
A seguir
- Saiba mais sobre como criar tarefas de destino HTTP.
- Saiba mais sobre como configurar sua fila do Cloud Tasks.