Este tópico descreve como usar o EventBridge para assinar eventos do ECS e entregá-los a serviços downstream.
Informações básicas
O EventBridge é o hub de eventos da Alibaba Cloud. Ele oferece um centro de eventos unificado para conectar serviços da Alibaba Cloud a aplicações e integrar aplicações entre si. O EventBridge utiliza o protocolo padrão CloudEvents 1.0. Com ele, você gerencia eventos provenientes de serviços da Alibaba Cloud, aplicações SaaS (Software as a Service) e suas próprias aplicações de negócios. O EventBridge garante a qualidade dos eventos originados nos serviços upstream da Alibaba Cloud, melhora a experiência de assinatura de eventos e aumenta a confiabilidade na entrega de dados. Além disso, o EventBridge oferece um Acordo de Nível de Serviço (SLA) que assegura 99,99999999% de confiabilidade dos dados e 99,95% de disponibilidade do service.
Utilizar o EventBridge para assinar eventos traz as seguintes vantagens em comparação à chamada da operação de API DescribeInstanceHistoryEvents do ECS para consultar novos eventos periodicamente:
Maior agilidade: ao detectar um evento de um tipo específico, o sistema dispara uma operação definida em milissegundos.
Custos reduzidos: elimina a necessidade de consultas periódicas por eventos, evitando sobrecarga desnecessária.

Cenários
Assine eventos específicos do ECS para acionar notificações via DingTalk, mensagens de texto ou e-mail.
Envie eventos específicos do ECS para serviços HTTP ou HTTPS downstream pela internet ou por uma VPC.
Agrupe eventos do ECS de várias contas da Alibaba Cloud.
Dispare ações específicas usando o Function Compute quando ocorrer um evento determinado do ECS.
Entregue eventos do ECS ao Simple Message Queue (formerly MNS) para assinatura em cenários com alta latência ou grande volume de eventos.
Pré-requisitos
Crie um robô do DingTalk e anote sua URL de webhook e chave.
Crie um service e uma função. Para mais informações, consulte Manage services e Manage functions.
Crie uma fila do Simple Message Queue (formerly MNS). Para mais informações, consulte Activate Simple Message Queue (formerly MNS) and grant permissions e Create a queue.
Etapa 1: Selecione o barramento de eventos dedicado a serviços da Alibaba Cloud
O barramento de eventos do sistema é o barramento default que o EventBridge cria automaticamente. Os serviços da Alibaba Cloud entregam eventos ao barramento default em tempo real. Nesse barramento, você localiza e assina eventos provenientes desses serviços.
Faça login no console do EventBridge. No painel de navegação à esquerda, clique em Event Buses.
Na barra de navegação superior, selecione uma região.
Na página EventBridge, clique em default.
Etapa 2: Crie uma regra de evento para eventos do ECS
Na página EventBridge, clique em Event Rules no painel de navegação à esquerda e, em seguida, clique em Create Rule.
-
No painel Create Rule, conclua as etapas a seguir.
Na aba Configure Basic Info, insira um nome na caixa de texto Name e uma descrição na caixa de texto Description. Depois, clique em Next.
-
Na aba Configure Event Pattern, configure o padrão de evento. Em seguida, clique em Next.
Clique na aba Alibaba Cloud Service Event Sources.
Na lista suspensa Event Source, selecione acs.ecs.
Na lista suspensa Event Type, escolha os tipos de evento que deseja assinar. É possível selecionar vários tipos.
-
Na seção Event Pattern Debugging, visualize um exemplo correspondente ao tipo de evento selecionado. Por exemplo, ao escolher ecs.Instance.StateChange for instance lifetime status changes, o sistema exibe o seguinte exemplo:
{ "id": "45ef4dewdwe1-7c35-447a-bd93-fab****", "source": "acs.ecs", "specversion": "1.0", "subject": "acs.ecs:cn-hangzhou:123456789098****:215672", "time": "2020-11-19T21:04:41Z", "type": "ecs:Instance:StateChange", "aliyunaccountid": "123456789098****", "aliyunpublishtime": "2020-11-19T21:04:42Z", "aliyuneventbusname": "default", "aliyunregionid": "cn-hangzhou", "aliyunpublishaddr": "172.25.XX.XX", "data": { "instanceName": "iZ0jl0kyquo46h****", "instanceType": "ecs.c6.large", "privateIpAddress": "172.21.XX.XX", "publicIpAddress": "8.37.XX.XX", "resourceId": "i-0jl0kyquo46****", "resourceType": "ALIYUN::ECS::Instance", "spotStrategy": "SpotWithPriceLimit", "state": "Running" } }
-
Na aba Configure Targets, selecione um Service Type e configure o cenário de envio.
Cenário 1: Envio para o Simple Message Queue (formerly MNS)
O Simple Message Queue (formerly MNS) permite assinar eventos em cenários com alta latência ou grande volume de eventos. Para mais detalhes sobre o faturamento do Simple Message Queue (formerly MNS), consulte Billing.
Service Type: Selecione Simple Message Queue (formerly MNS).
Queue: Escolha a fila criada anteriormente.
Message Body: Selecione Complete Event.
Enable Base64 Decoding: Marque Yes. Ao ativar a codificação Base64, os dados são codificados antes da entrega à fila de destino no Simple Message Queue (formerly MNS).
Se você definir Service Type como Simple Message Queue (formerly MNS), utilize o arquivo NetworkInterfaceDemo.zip para escutar mensagens do Simple Message Queue (formerly MNS) e recuperar os eventos.
Cenário 2: Envio para o DingTalk
Service Type: Selecione DingTalk.
Address: Insira a URL de webhook do robô do DingTalk.
Secret Key: Insira a chave do robô do DingTalk.
-
Pushed Content: Utilize o recurso de modelo do EventBridge para enviar parâmetros do evento ao robô do DingTalk. Por exemplo, para enviar o nome da instância (
instanceName) e o estado de execução (state) de uma instância ECS, configure os seguintes parâmetros:-
Parameters: Use uma expressão JSONPath para especificar os campos que deseja extrair do evento e defina nomes de variáveis.
{ "instanceName":"$.data.instanceName", "state":"$.data.state" } -
Template: Defina um modelo no formato exigido pelo robô do DingTalk e referencie as variáveis definidas.
{ "msgtype": "text", "text": { "content": "${instanceName} state is ${state}" } }
-
Cenário 3: Envio para um service HTTP downstream
Service Type: Selecione HTTP ou HTTPS.
URL: Configure a URL para receber os eventos.
Body: Defina o formato do conteúdo do evento. O EventBridge transforma eventos e os envia a um destino HTTP no formato necessário. Os formatos de transformação suportados incluem: Complete Event, Partial Event, Static Field e Template. Para mais informações, consulte Event transformation.
-
Network Type:
Internet: Acessa a URL de destino pela internet.
VPC: Escolha esta opção se a URL de destino não estiver exposta à internet. É necessário especificar o ID da VPC, o ID do vSwitch e o ID do grupo de segurança.
Cenário 4: Disparar uma ação após o envio
Para disparar uma ação mais personalizada quando ocorrer um evento do ECS, defina o tipo de service como Function Compute. Assim, o evento chega a uma função específica onde você escreve código no Function Compute para definir a ação personalizada.
Service Type: Selecione Function Compute.
Service: Nome do service criado no Function Compute.
Function: Nome da função criada no Function Compute.
Event: Configure o formato do conteúdo do evento. O EventBridge transforma eventos e os envia ao Function Compute no formato necessário. Os modelos de transformação suportados são: Complete Event, Partial Event, Static Field e Template. Para mais informações, consulte Event transformation.
-
Invocation Mode:
Síncrono: o Function Compute recebe o evento e a solicitação é considerada bem-sucedida após o processamento pela função.
Assíncrono: a solicitação é considerada bem-sucedida assim que o Function Compute recebe o evento.
Para mais informações, consulte Route to Function Compute.
Cenário 5: Agregar eventos do ECS de várias contas da Alibaba Cloud
O EventBridge agrega eventos do ECS de diferentes contas e regiões em um único barramento de eventos, em uma conta e região específicas. Para isso, defina o tipo de service como EventBridge Event Bus.
-
Destination Type:
Same-account Event Bus: Entrega eventos a outro barramento na conta atual.
Cross-account Event Bus: Entrega eventos a um barramento em outra conta. Ao escolher esta opção, conceda as permissões necessárias. Para mais informações, consulte Route events to EventBridge.
Region: A entrega entre regiões é suportada entre regiões na China continental e entre regiões fora da China continental.
Event Bus: Nome do barramento de eventos de destino.
Event: Por padrão, o evento completo é entregue. Essa configuração não pode ser alterada.
Na parte inferior da aba Configure Targets, configure uma política de nova tentativa e uma fila de mensagens mortas conforme necessário. Para mais informações, consulte Retries and dead-letter queues.
Para mais detalhes sobre outros cenários, consulte Tipos de service de destino.
Etapa 3: Dispare um evento
Este tópico usa o tipo de evento ecs.Instance.StateChange (alterações de status durante o ciclo de vida da instância) como exemplo. Para disparar esse evento, altere o status de execução de uma instância ECS.
Faça login no console do ECS.
No painel de navegação à esquerda, escolha .
Na barra de navegação superior, selecione a região onde o recurso de destino está localizado.
Localize a instância ECS desejada. Na coluna Actions, escolha e altere o status de execução da instância.
Etapa 4: Visualize o resultado da entrega
-
Verifique se um evento do ECS foi gerado.
O EventBridge permite buscar eventos do ECS por intervalo de tempo, tipo de evento, nome da regra ou ID do evento. O ID do evento corresponde ao ID do evento do ECS. Para mais informações, consulte Query events.
-
Verifique o resultado da entrega da assinatura de eventos do ECS.
Com o ID do evento obtido na etapa anterior, clique em Event Trace na coluna Actions para visualizar o rastreamento de envio do evento. Esse rastreamento inclui detalhes como destino, status, quantidade de envios e horário. Os detalhes do Event Trace mostram:
Recepção do evento: a source do evento é Elastic Compute Service (ECS) acs.ecs, o tipo de evento é
ecs:Instance:StateChangee o barramento de eventos é default.Entrega do evento: o nome da regra é test, com 1 destino bem-sucedido, 0 destinos com falha e 1 entrega total. O destino da entrega é a URL de webhook do robô do DingTalk, o status da entrega é Succeeded, a latência de entrega é de 258 milissegundos e a resposta da entrega é
[200]NoMessage.
Monitoramento e alertas de eventos
No painel de monitoramento do EventBridge, visualize o número de chamadas, a taxa de sucesso de envio e a latência de envio da tarefa de assinatura de eventos do ECS criada. Também é possível configurar políticas de alerta conforme seus cenários de negócios.
Faça login no console do CloudMonitor.
No painel de navegação à esquerda, selecione .
Na página Cloud Service Monitoring, clique em Middleware no painel de navegação à esquerda. Em seguida, na seção Middleware, passe o ponteiro sobre Event Bus e clique em Event Bus - EventBus.
-
Na página Event Bus - EventBus, selecione uma região. Depois, clique em Monitoring Charts na coluna Actions do barramento default para visualizar seus detalhes de monitoramento.

Na página de monitoramento, defina regras de alerta para recursos do EventBridge. Quando um recurso atender às condições de uma regra de alerta, o CloudMonitor envia automaticamente uma notificação de alerta. Para mais informações, consulte Set alert rules.
Novas tentativas e filas de mensagens mortas
Após a gravação de um evento em um barramento de eventos, o EventBridge garante que o evento seja enviado ao service downstream pelo menos uma vez. Caso o receptor downstream não consiga receber o evento devido a exceções como indisponibilidade, falha no service ou instabilidade de rede, o EventBridge oferece várias formas de lidar com essas situações, incluindo políticas de nova tentativa, políticas de tolerância a falhas e filas de mensagens mortas. Configure políticas de nova tentativa e de fila de mensagens mortas em Step 2: Create an event rule for ECS events para assegurar a entrega correta dos eventos.
-
Política de nova tentativa
Quando um receptor downstream não consegue receber um evento, ocorre uma exceção durante o envio pelo EventBridge. Nessa situação, configure uma política de nova tentativa no EventBridge para maximizar a taxa de sucesso de envio.
Backoff retry: Realiza 3 novas tentativas. O intervalo entre as tentativas é um valor aleatório entre 10 e 20 segundos.
Exponential decay retry: Realiza 176 novas tentativas. O intervalo aumenta exponencialmente até 512 segundos. O tempo total de novas tentativas é de 1 dia. Os intervalos seguem a sequência 1, 2, 4, 8 e assim por diante, até atingir 512 segundos.
-
Política de processamento de mensagens mortas
Se o evento ainda não for entregue após atingir o número máximo de novas tentativas, o EventBridge descarta o evento por padrão. Para preservar o evento, configure seu envio a uma fila de mensagens mortas. O EventBridge suporta as seguintes filas de mensagens mortas: ApsaraMQ for RocketMQ, Simple Message Queue (formerly MNS), ApsaraMQ for Kafka e EventBridge.
-
Política de tolerância a falhas
Se for necessário processar eventos em ordem, pause a tarefa quando ocorrer uma exceção até que o evento seja enviado com sucesso. Caso contrário, os eventos podem ser processados fora de ordem. Nesse caso, selecione Proibir tolerância a falhas. Para cenários sem exigência de ordem sequencial, recomendamos selecionar Permitir tolerância a falhas para garantir a máxima capacidade de envio simultâneo.
Allow fault tolerance: Quando ocorre uma exceção, a execução não é bloqueada. Após esgotar a política de novas tentativas, a mensagem é entregue à fila de mensagens mortas ou descartada, conforme sua configuração.
Prohibit fault tolerance: Quando ocorre uma exceção e a política de novas tentativas se esgota, a execução é bloqueada.