Събития на Oracle Cloud Infrastructure е услуга, която ви позволява да създадете някаква автоматизирана база при промяна на състоянието в услуга или може би въз основа на някакъв вид получен вход. Сега, нека направим крачка назад и Събитие е възникването на конкретна ситуация. За да бъдат полезни тези ситуации, събитията трябва да са с някакъв вид информация, например име на екземпляр, име на обект, код на състоянието и т.н. Информацията може да предостави на автоматизацията нещо, с което да работи.
Събития са основата на архитектурата без сървър, понякога наричана също управлявана от събития архитектура . Освен това събитията са от решаващо значение за съвременните софтуерни архитектури, тъй като позволяват отделяне на услугите, помагат за извършване на софтуерни асинхронни разговори и улеснява процесите на мащабиране.
Пример за управлявана от събитие архитектура:
- Разработвате приложение за обработка на изображения .
- Всеки път, когато ново изображение се качва в кофа то задейства събитие .
- Това събитие извиква функция които грабват това изображение и създават миниизображение от него .
- Миниизображението се съхранява в друга кофа.
- Това задейства друго събитие, което изпраща известие по имейл на клиента.
ЗАБЕЛЕЖКА OCI функцията е безсървърно решение от OCI, което ви позволява да стартирате софтуер с една цел без осигуряване на хардуер или виртуални машини, софтуерът работи на базата на събитие или задание по график, това е като да имате функции като услуга. Още от функциите ТУК
Връщайки се към OCI събития, някои от важните характеристики са:
- Услугата за събития използва JSON обект за дефиниране на правилата за събития . Можете да измислитеправило като филтъра това ще определи кои събития е важно да вземете предвид, за да определите какви ще бъдат вашите приноси. По принцип Правилата задействат действия . Пример за логика на правило може да бъде:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
)
Това събитие ще се задейства, когато бъде създадена нова изчислителна инстанция
Но...
Къде е частта JSON??
На самото събитие нека да видим пример за събитие:
{
"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"
}
}
Това е пример за току-що създаден екземпляр и ще задейства събитието.
- Можете да добавите условия или филтри, за да стесните допълнително събитията си .
По време на конфигурация на правилото за събитие можете да добавите някои атрибути за допълнително филтриране на резултатите
В този пример филтрираме резултатите от типа събитие, за промени само в Sandbox и dev отделения, цялата логика изглежда така:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
)
)
В допълнение към това можем да добавим Условия за филтриране въз основа на етикети
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
)
)
)
Визуално нещо като:
По принцип това събитие ще се задейства всеки път, когато даден екземпляр се стартира в Sandbox ИЛИ dev отделения от потребителя elopez .
- Правилата най-много определят и действия .
Основната цел на правилата е да провокират нещо, когато се задействат, в противен случай ще бъдат безполезни.
Действията са отговори, дефинирани за съвпадение на събитие
Действията могат да бъдат създадени с помощта на:
Известия изпращайте съобщенията до услуга за уведомяване, която може да ги изпраща до крайни точки, които са абонирани за темата
Те могат да бъдат:имейл адрес, имейл група, слаб канал и т.н.
Поточно предаване използвайки тази услуга, вие ще поглъщате вашите събития в потоци от данни, за да получите допълнителен анализ и разузнавателна информация за тези данни.
Функции функциите могат да се изпълняват въз основа на получените събития. Бърз пример:
можете да имате събитие, което да се задейства всеки път, когато се създаде нов екземпляр и това ще изпълни функция, която конфигурира наблюдението за тази нова инстанция.
- Трябва да добавите разрешения, за да може услугата за събития да извика услугите за действие .
Вземете под внимание всяко действие е отказано по подразбиране в OCI, така че ще трябва да създадете политика, която позволява на услугата Събития да изпълнява действията.
Основното разрешение, от което се нуждаете, е:
Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy
Това е за Наем но можете да го присвоите към конкретно Отделение
Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV
Повече за отделенията ТУК