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