Ativação de notificações de eventos para Code Engine
Como administrador do site Code Engine, talvez você queira enviar eventos de outros serviços IBM Cloud para Code Engine para acionar seus aplicativos ou trabalhos.
Para enviar informações para Event Notifications, você deve conectar sua instância Code Engine a Event Notifications. Para obter mais informações sobre como trabalhar com o Event Notifications, consulte Introdução ao Event Notifications.
Como os eventos são recebidos?
Sua instância Code Engine pode funcionar como um destino para Event Notifications.
Quando configurado como um Destination, seus trabalhos ou aplicativos do Code Engine podem ser acionados em resposta a uma notificação de evento de outro serviço do IBM Cloud ou até mesmo de outro aplicativo ou trabalho do Code Engine.
Quais são alguns dos principais recursos do Event Notifications
Analise os seguintes recursos para usar o Event Notifications com Code Engine
-
Você pode ativar ou desativar o
pingSource, que permite controlar fontes de eventos programados, como temporizadores, ativando ou desativando-os conforme necessário. Isso é impossível quando se usa Event Subscriptions. -
Você pode controlar o número de novas tentativas e as filas de letras mortas. Ao chamar Code Engine, problemas como erros de rede ou falhas no aplicativo podem fazer com que as solicitações falhem. Uma nova tentativa é usada para fornecer resiliência a solicitações externas. Para saber mais, confira Número de novas tentativas.
-
Você não está limitado a cronômetros periódicos. O site Event Notifications é compatível com várias fontes de eventos, como eventos do site HTTP, eventos do serviço de nuvem (por exemplo, uploads de objetos), funções e saídas de trabalho do site Code Engine. Essa modularidade permite a criação de fluxos de trabalho flexíveis que podem responder a eventos em tempo real em vez de apenas acionadores programados. Ao combinar várias fontes de eventos, você pode projetar sistemas complexos e dinâmicos com facilidade.
-
Você pode criar fluxos de trabalho complexos. Por exemplo, um trabalho pode ser acionado por um cronômetro e, quando o trabalho for concluído, ele poderá enviar um evento para Event Notifications como fonte para outros serviços. Um cenário para esse tipo de fluxo de trabalho seria fazer com que o evento acionasse uma notificação por e-mail ou iniciasse outro fluxo de trabalho.
-
Seus jobsruns são excluídos automaticamente. Por padrão, o site Event Notifications exclui automaticamente as execuções de trabalho após 10 minutos para evitar problemas de cota de execução de trabalho. Isso ajuda a garantir que trabalhos obsoletos ou travados não consumam recursos desnecessariamente. Isso também ajuda a evitar exceder a cota de trabalho do Code Engine. Você pode verificar esse comportamento observando a guia Job em seu projeto Code Engine, onde verá que a execução do trabalho é removida automaticamente após a janela de 10 minutos.
Qual é a diferença entre as notificações do Event Notifications e as assinaturas?
As assinaturas para Event Notifications permitem que seus aplicativos ou trabalhos Code Engine recebam informações sobre eventos.
Com o Code Engine, seus aplicativos ou tarefas podem receber eventos de interesse assinando os produtores de evento. As informações do evento são recebidas como solicitações de HTTP POST para aplicativos e como variáveis de ambiente para tarefas.
Code Engine suporta os seguintes tipos de produtores de eventos para assinaturas.
- Cron
- O produtor de eventos cron é baseado no cron-job e gera um evento em intervalos regulares. Use um produtor de evento cron quando uma ação precisar ser executada em intervalos bem definidos ou em horários específicos.
- IBM Cloud Object Storage
- O produtor de eventos Object Storage gera eventos à medida que são feitas alterações nos objetos em seus buckets de armazenamento de objetos. Por exemplo, à medida que objetos são incluídos em um depósito, um aplicativo pode receber um evento e, em seguida, executar uma ação com base nessa mudança, talvez consumindo esse novo objeto.
- Kafka
- O produtor de eventos Kafka fica atento ao aparecimento de novas mensagens em uma instância Kafka. Quando você cria uma assinatura Code Engine Kafka para um conjunto de tópicos, seu aplicativo ou trabalho recebe um evento separado para cada nova mensagem que aparece em um dos tópicos.
- Webhooks
- Você pode usar os webhooks GitHub para enviar eventos de um repositório GitHub para sua carga de trabalho Code Engine.
Alternativamente, com Event Notifications você pode configurar Code Engine como um Destino.
Quando configurado como um Destination, seus trabalhos ou aplicativos do Code Engine podem ser acionados em resposta a uma notificação de evento de outro serviço do IBM Cloud ou até mesmo de outro aplicativo ou trabalho do Code Engine.
| Tarefa | Assinatura | Event Notifications |
|---|---|---|
| Definição da origem do evento | Crie uma fonte de eventos do tipo cron de cronômetro periódico que gere eventos recorrentes baseados em tempo. | Usar uma fonte de eventos predefinida - Periodic Timer |
| Planejamento | Como próxima etapa, programe o cronômetro | Crie um tópico e escolha a fonte como Periodic Timer. Configurar usando cronExpression |
| Escolha o destino final | Selecione o trabalho ou aplicativo | Crie um destino final. Code Engine |
| Inscrever-se no evento | Não é necessária uma assinatura explícita. | Crie uma assinatura. Escolha o destino e o tópico criados anteriormente. |
Para saber mais, consulte Introdução às assinaturas.
Configuração de um acionador no console
Neste exemplo, você usa o console IBM Cloud para configurar um acionador de timer em Event Notifications que chama um trabalho Code Engine a cada 6 horas.
Antes de começar, verifique se você tem o seguinte em sua conta.
- Uma instância do Event Notifications
- Um projeto Code Engine.
- Um trabalho de destino dentro do projeto.
Conclua as etapas a seguir para criar o acionador.
-
Configure uma fonte em sua instância Event Notifications.
- Configurar uma fonte
- Selecione Periodic Timer como a origem do evento.
- Configurar um tópico Um tópico funciona como um filtro para eventos. Você usará isso para definir os eventos de interesse.
- Dê um nome ao seu tópico. Por exemplo, " Periodic-Trigger-6hr ".
- Defina a expressão cron
(0 */6 * * *)para que o tópico emita eventos a cada 6 horas. Saiba mais sobre como criar um tópico com cronômetro periódico.
-
Configure um destino. O destino é para onde o evento é enviado para processamento. Neste exemplo, escolha o trabalho existente em Code Engine na lista de destinos disponíveis. O trabalho atuará como o ponto de extremidade que será acionado quando o evento ocorrer.
Observação: É necessária uma autorização de serviço a serviço entre Event Notifications e Code Engine. Isso pode ser configurado em Gerenciar > Acesso > Autorizações no console. No entanto, quando você usa o console, essa parte é tratada automaticamente.
-
Crie uma Assinatura que vincule o Tópico e o Destino.
-
Selecione o tópico " Periodic-Trigger-6hr " que você criou anteriormente.
-
Escolha seu trabalho em Code Engine como destino.
-
A assinatura garante que, quando o evento for emitido a cada 6 horas, o trabalho Code Engine será acionado. Você pode observar e verificar o intervalo revisando a guia Jobruns do seu projeto.
As etapas anteriores configuraram um trabalho como o destino. No entanto, esse mesmo procedimento pode ser usado se o seu destino for um aplicativo. Ao configurar o destino, forneça seu aplicativo URL.
Configuração de um acionador na CLI
Neste exemplo, você usa a CLI IBM Cloud para configurar um acionador de cronômetro em Event Notifications que chama um trabalho Code Engine a cada 6 horas.
Antes de começar, verifique se você tem o seguinte em sua conta.
- Um projeto Code Engine.
- Um trabalho de destino dentro do projeto.
Conclua as etapas a seguir para configurar o acionador.
- Crie uma instância do Event Notifications.
ibmcloud resource service-instance-create "$EVENT_NOTIFICATIONS_INSTANCE_NAME" \ "$EVENT_NOTIFICATIONS_SERVICE_NAME" "$EVENT_NOTIFICATIONS_PLAN" "$PROJECT_REGION" \ -g "$PROJECT_RESOURCE_GROUP" - Crie uma política de autorização.
ibmcloud iam authorization-policy-create event-notifications codeengine Writer,Viewer \ --source-service-instance-id $EVENT_NOTIFICATIONS_INSTANCE_ID \ --target-service-instance-name "${PROJECT_NAME}" - Crie um destino usando seu trabalho Code Engine.
CONFIG_JSON=$(cat <<EOF { "params": { "type": "job", "job_name": "${JOB_NAME}", "project_crn": "${PROJECT_CRN}" } } EOF ) ibmcloud event-notifications destination-create \ --instance-id "${EVENT_NOTIFICATIONS_INSTANCE_ID}" \ --name "${DESTINATION_NAME}" \ --type "ibmce" \ --description "${DESTINATION_DESCRIPTION}" \ --config "$CONFIG_JSON" - Crie um tópico do Event Notifications. Defina o tópico
--topic-timerpara0 */6 * * *em um intervalo de 6 horas.ibmcloud event-notifications topic create \ --name "$TOPIC_NAME" \ --description "$TOPIC_DESCRIPTION" \ --service-instance-id "$EVENT_NOTIFICATIONS_CRN" \ --topic-type timer \ --topic-timer "$TOPIC_CRON" # Example: "0 */6 * * *" - Assine o tópico de destino.
ibmcloud event-notifications subscription create \ --name "$SUBSCRIPTION_NAME" \ --description "Triggers Code Engine job from topic" \ --service-instance-id "$EVENT_NOTIFICATIONS_CRN" \ --topic-id "$TOPIC_ID" \ --destination-id "$DESTINATION_ID"