Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Trabalhando com eventos no Oracle Cloud Infrastructure Parte 1:noções básicas de serviço


Eventos de infraestrutura em nuvem da Oracle é um serviço que permite criar alguma base de automação na mudança de estado de um serviço, ou talvez com base em algum tipo de entrada recebida. Agora, vamos dar um passo atrás e Evento é a ocorrência de uma situação particular. Para que essas situações sejam úteis, os eventos precisam estar com algum tipo de informação, por exemplo, nome da instância, nome do objeto, código de status, etc. As informações podem fornecer algo para trabalhar com a automação.

Eventos são a base da arquitetura sem servidor, às vezes também chamada de arquitetura orientada a eventos . Além disso, os eventos são cruciais para arquiteturas de software contemporâneas, pois permitem desacoplar serviços, ajudam a fazer chamadas assíncronas de software e facilitar os processos de dimensionamento.

Um exemplo de arquitetura orientada a eventos:

  • Você desenvolve um aplicativo de processamento de imagens .
  • Sempre que uma nova imagem é carregada em um bucket ela aciona um evento .
  • Este evento chama uma função que pegam essa imagem e criam uma miniatura a partir dela .
  • A miniatura é armazenado em outro bucket.
  • Isso aciona outro evento que envia uma notificação por e-mail para o cliente.

OBSERVAÇÃO A função OCI é uma solução serverless da OCI, que permite executar um software de propósito único sem provisionar hardware ou VMs, o software é executado com base em um evento ou agenda de trabalho, é como ter funções como um serviço. Mais de Funções AQUI

Voltando aos eventos OCI, algumas das características importantes são:

  • O serviço de eventos usa o objeto JSON para definir as regras do evento . Você pode pensar em uma regra como o filtro que determinará quais eventos são importantes a serem considerados, para determinar quais serão suas entradas. Basicamente, Regras acionam ações . Um exemplo de lógica de regra pode ser:
MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
)

Este evento será acionado quando uma nova instância de computação for criada
Mas...

Onde está a parte JSON?
Sobre o evento propriamente dito, vejamos um exemplo de evento:

{
  "eventType": "com.oraclecloud.computeapi.launchinstance.end",
  "cloudEventsVersion": "0.1",
  "eventTypeVersion": "2.0",
  "source": "ComputeApi",
  "eventTime": "2019-08-16T12:07:42.794Z",
  "contentType": "application/json",
  "data": {
    "compartmentId": "ocid1.compartment.oc1..unique_ID",
    "compartmentName": "example_compartment",
    "resourceName": "my_instance",
    "resourceId": "ocid1.instance.oc1.phx.unique_ID",
    "availabilityDomain": "availability_domain",
    "additionalDetails": {
      "imageId": "ocid1.image.oc1.phx.unique_ID",
      "shape": "VM.Standard2.1",
      "type": "CustomerVmi"
    }
  },
  "eventID": "unique_ID",
  "extensions": {
    "compartmentId": "ocid1.compartment.oc1..unique_ID"
  }
}

Este é um exemplo de uma instância que acabou de ser criada e irá acionar o evento.
  • Você pode adicionar condições ou filtros para restringir ainda mais seus eventos .

Durante uma configuração de regra de evento, você pode adicionar alguns atributos para filtrar ainda mais seus resultados


Neste exemplo estamos filtrando os resultados do tipo de evento, para alterações somente em Sandbox e dev compartimentos, toda a lógica se parece com:

MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
  AND (
  compartmentName MATCHES ANY OF (
  Sandbox,
  dev
  )
 )
)

Além disso, podemos adicionar Condições de filtro com base em tags

MATCH event WHERE (
  eventType EQUALS ANY OF (
  com.oraclecloud.computeapi.launchinstance.end
  )
  AND (
  compartmentName MATCHES ANY OF (
  Sandbox,
  dev
  )
  definedTags INCLUDES ANY OF (
  Oracle-Tags.CreatedBy.elopez
  )
 )
)

Visualmente algo como:


Basicamente este evento será acionado sempre que uma instância for iniciada no Sandbox OU desenvolvedor compartimentos pelo usuário elopez .
  • As regras mais especificam e agem .

O principal objetivo das regras é provocar algo quando são acionadas, caso contrário serão inúteis.

Ações são respostas definidas para correspondência de eventos

As ações podem ser criadas usando:
Notificações enviar as mensagens para um serviço de notificação que pode enviá-las para endpoints que estão inscritos no tópico

Podem ser:um endereço de e-mail, grupo de e-mail, canal de folga, etc.

Transmissão usando este serviço, você ingerirá seus eventos em fluxos de dados para obter mais análises e inteligência sobre esses dados.

Funções funções podem ser executadas com base nos eventos recebidos. Exemplo rápido:

você pode ter um evento que seja acionado toda vez que uma nova instância for criada e isso executará uma função que configura o monitoramento para essa nova instância.
  • Você precisa adicionar permissões para que o serviço de eventos possa chamar os serviços de ação .

Leve em consideração qualquer ação é negada por padrão no OCI, portanto, você precisará criar uma política que permita que o serviço de Eventos execute as ações.

A permissão básica que você precisará é:

Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy

Isto é para a Locação mas você pode atribuí-lo a um compartimento específico

Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV

Mais sobre compartimentos AQUI