Um gatilho de serviço da Alibaba Cloud invoca uma função em resposta a eventos de serviços como Cloud Monitor, ActionTrail, ECS e IoT Platform. Este tópico usa um evento do ECS como exemplo para demonstrar como crie um gatilho, configure seu parâmetro de entrada e escrever o código da função no console do Function Compute.
Como funciona
Ao criar um gatilho no console do Function Compute, o sistema cria automaticamente uma regra de evento chamada FunctionName-TriggerName no barramento de eventos default do EventBridge. Após a criação, visualize as informações do gatilho no console do Function Compute e consulte a regra de evento gerada automaticamente no console do EventBridge. Quando o barramento de eventos recebe um evento do tipo especificado proveniente da origem, ele invoca a função associada ao gatilho.
Observações de uso
O barramento de eventos default do EventBridge aceita no máximo 10 regras de evento. Ao atingir esse limite, não é possível criar novos gatilhos para serviços da Alibaba Cloud.
O Serverless Devs não oferece suporte à criação de gatilhos para serviços da Alibaba Cloud.
Pré-requisitos
EventBridge: Ativar o EventBridge e conceder permissões
Function Compute: Criar uma função
Etapa 1: Crie um gatilho
Faça login no console do Function Compute. No painel de navegação à esquerda, escolha .
Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função desejada.
Na página de detalhes da função, clique em na aba Triggers e, em seguida, clique em Create Trigger.
-
No painel Create Trigger, configure os parâmetros e clique em OK.
Parâmetro
Ações
Exemplo
Trigger Type
Selecione ECS.
ECS
Name
Insira um nome personalizado para o gatilho.
ecs-trigger
Version or Alias
O valor padrão é LATEST. Para criar um gatilho para uma versão ou alias diferente, alterne primeiro para ela no canto superior direito da página de detalhes da função. Para mais informações, consulte Gerenciar versões e Gerenciar aliases.
LATEST
Event Type
Escolha Custom Event Types ou Select All Event Types. Caso opte por Custom Event Types, selecione um ou mais tipos de evento para o ECS.
Disk Retained
Event Pattern Content
Este parâmetro é somente leitura. O conteúdo é preenchido automaticamente após a seleção de um tipo de evento. Para mais detalhes sobre padrões de eventos, consulte Padrões de eventos.
{ "source": [ "acs.ecs" ], "type": [ "ecs:Disk:ConvertToPostpaidCompleted" ] }Invocation Method
Defina o método de invocação da função. Valores válidos:
Sync Invocation: Método padrão. Após um evento acionar a invocação, o Function Compute aguarda a conclusão e retorna o resultado. Para mais informações, consulte invocação síncrona.
Async Invocation: Recomendado para funções com alta latência. Assim que o evento dispara a função, o Function Compute retorna uma resposta imediata e garante pelo menos uma execução bem-sucedida, sem retornar o resultado da execução. Para mais informações, consulte invocação assíncrona.
Synchronous Invocation
Trigger State
Define se o gatilho estará ativo logo após a criação. Por padrão, a opção Enable Trigger vem selecionada.
Enable Trigger
Após a criação, o gatilho aparecerá na lista Trigger Name. Para modifique ou exclua o gatilho, consulte Gerenciar gatilhos.
Etapa 2: Configure o parâmetro de entrada
A função recebe eventos do ECS como parâmetro de entrada event. Passe manualmente um exemplo de event para a função a fim de simular um gatilho.
Na aba Code da página de detalhes da função, clique em no ícone
ao lado de Test Function e selecione Configure Test Parameters na lista suspensa.-
No painel Configure Test Parameters, selecione Create New Test Event ou Modify Existing Test Event, insira o nome e o conteúdo do evento e clique em OK.
O código abaixo ilustra o formato do parâmetro
event. Para consultar o conteúdo de eventos de todas as origens oficiais, veja Origens de eventos oficiais da Alibaba Cloud.{ "datacontenttype": "application/json;charset=utf-8", "aliyunaccountid": "123456789098****", "data": { "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }, "subject": "acs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****", "source": "acs.ecs", "type": "ecs:Disk:ConvertToPostpaidCompleted", "aliyunpublishtime": "2021-01-18T03:58:31.762Z", "specversion": "1.0", "aliyuneventbusname": "default", "id": "70c0414c-b260-4923-b584-1d6e5646****", "time": "2021-01-18T11:58:31.125+08:00", "aliyunregionid": "cn-hangzhou", "aliyunpublishaddr": "172.25.XX.XX" }A tabela a seguir descreve os parâmetros presentes no payload do evento.
Parâmetro
Tipo
Exemplo
Descrição
datacontenttype
String
application/json;charset=utf-8
Indica o formato de conteúdo do parâmetro data. O parâmetro datacontenttype aceita apenas o formato application/json.
aliyunaccountid
String
123456789098****
ID da conta Alibaba Cloud.
data
Struct
{ "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }Conteúdo do evento. Trata-se de um objeto JSON cujo conteúdo depende do serviço que originou o evento. Os CloudEvents podem incluir contexto do produtor do evento, encapsulado no campo data.
subject
String
acs:ecs:cn-hangzhou:123456789098**:disk/d-bp11ba7acc69nkta**
Assunto do evento.
source
String
acs.ecs
Origem do evento.
type
String
ecs:Disk:ConvertToPostpaidCompleted
Tipo do evento.
aliyunpublishtime
Timestamp
2021-01-18T03:58:31.762Z
Momento em que o evento foi recebido.
specversion
String
1.0
Versão da especificação CloudEvents.
aliyuneventbusname
String
default
Nome do barramento de eventos que recebeu o evento.
id
String
70c0414c-b260-4923-b584-1d6e5646****
ID do evento.
time
Timestamp
2021-01-18T11:58:31.125+08:00
Horário em que o evento ocorreu.
aliyunregionid
String
cn-hangzhou
Região onde o evento foi recebido.
aliyunpublishaddr
String
172.25.XX.XX
Endereço IP do servidor que recebeu o evento.
Etapa 3: Escrever e testar o código
Depois de criar o gatilho do ECS, escreva e teste o código da função para confirmar seu funcionamento correto. Em um cenário real, quando um evento do ECS chega ao Function Compute via EventBridge, o gatilho invoca a função automaticamente.
-
Na página de detalhes da função, acesse a aba Code, escreva seu código no editor e clique em Deploy.
Este tópico usa código Node.js como exemplo.
'use strict'; /* To enable the initializer feature, implement the initializer function as follows: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event parameter and process the event. callback(null, 'return result'); } Clique em Test Function.
Mais informações
Para modifique ou exclua um gatilho, consulte Gerenciar gatilhos.