Wydarzenia dotyczące infrastruktury chmury Oracle to usługa, która pozwala na stworzenie pewnej automatyzacji w oparciu o zmianę stanu w usłudze, a może na podstawie otrzymanych danych wejściowych. A teraz cofnijmy się o krok i Wydarzenie to wystąpienie określonej sytuacji. Aby ta sytuacja była użyteczna, zdarzenia muszą zawierać pewnego rodzaju informacje, na przykład nazwę instancji, nazwę obiektu, kod stanu itp. Informacje te mogą zapewnić automatyzacji coś do pracy.
Wydarzenia są podstawą architektury bezserwerowej, czasami nazywanej także architekturą sterowaną zdarzeniami . Ponadto zdarzenia mają kluczowe znaczenie dla współczesnych architektur oprogramowania, ponieważ umożliwiają oddzielenie usług, pomagają w wykonywaniu asynchronicznych połączeń programowych i ułatwić procesy skalowania.
Przykład architektury sterowanej zdarzeniami:
- Tworzysz aplikację do przetwarzania obrazów .
- Za każdym razem, gdy nowy obraz jest przesyłany do zasobnika, wywołuje zdarzenie .
- To zdarzenie wywołuje funkcję który złapie ten obraz i utworzy z niego miniaturę .
- Miniatura jest przechowywany w innym zasobniku.
- To wyzwala kolejne zdarzenie, które wysyła powiadomienie e-mail do klienta.
UWAGA Funkcja OCI to rozwiązanie bezserwerowe firmy OCI, które umożliwia uruchamianie oprogramowania o jednym przeznaczeniu bez zapewniania sprzętu lub maszyn wirtualnych, oprogramowanie działa w oparciu o zdarzenie lub zadanie harmonogramu, to jest jak posiadanie funkcji jako usługi. Więcej z funkcji TUTAJ
Wracając do wydarzeń OCI, niektóre z ważnych cech to:
- Usługa zdarzeń używa obiektu JSON do definiowania reguł zdarzeń . Możesz pomyśleć o regule takiej jak filtr to określi, które wydarzenia są ważne do rozważenia, aby określić, jakie będą twoje dane wejściowe. Zasadniczo Reguły wyzwalają działania . Przykładem logiki reguły może być:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
)
To zdarzenie zostanie wywołane po utworzeniu nowej instancji obliczeniowej
Ale...
Gdzie jest część JSON??
Na samym zdarzeniu zobaczmy przykład zdarzenia:
{
"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"
}
}
To jest przykład instancji, która właśnie została utworzona i która wywoła zdarzenie.
- Możesz dodać warunki lub filtry, aby jeszcze bardziej zawęzić wydarzenia .
Podczas konfiguracji reguły zdarzenia możesz dodać kilka atrybutów, aby dodatkowo filtrować wyniki
W tym przykładzie filtrujemy wyniki na podstawie typu zdarzenia, tylko pod kątem zmian w Sandbox i dev przegródki, cała logika wygląda tak:
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
)
)
Oprócz tego możemy dodać Warunki filtrowania na podstawie tagów
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
)
)
)
Wizualnie coś takiego:
Zasadniczo to zdarzenie zostanie wywołane za każdym razem, gdy instancja zostanie uruchomiona w Sandbox LUB program przegródki użytkownika elopez .
- Najbardziej określone reguły i działania .
Głównym celem reguł jest sprowokowanie czegoś, gdy zostaną uruchomione, w przeciwnym razie będą bezużyteczne.
Działania to odpowiedzi zdefiniowane dla dopasowanego zdarzenia
Akcje można tworzyć za pomocą:
Powiadomienia wyślij wiadomości do usługi powiadomień, która może wysłać je do punktów końcowych subskrybujących temat
Mogą to być:adres e-mail, grupa e-mail, kanał Slack itp.
Transmisja strumieniowa korzystając z tej usługi, przetworzysz swoje zdarzenia w strumienie danych, aby uzyskać dalszą analizę i informacje na temat tych danych.
Funkcje funkcje mogą być wykonywane na podstawie odebranych zdarzeń. Szybki przykład:
możesz mieć zdarzenie, które jest wyzwalane za każdym razem, gdy tworzona jest nowa instancja, a to uruchomi funkcję, która konfiguruje monitorowanie dla tej nowej instancji.
- Musisz dodać uprawnienia, aby usługa Wydarzenia mogła wywoływać usługi akcji .
Weź pod uwagę każda akcja jest domyślnie odrzucana w OCI, więc musisz utworzyć politykę, która pozwoli usłudze Wydarzenia na wykonanie tych działań.
Podstawowe uprawnienia, których będziesz potrzebować, to:
Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy
To jest dla najemcy ale możesz przypisać go do konkretnego przedziału
Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV
Więcej o przegródkach TUTAJ