Oracle Cloud Infrastructure 1부: 서비스 기본 사항의 이벤트 작업

Oracle Cloud Infrastructure Events는 서비스의 상태 변경 또는 수신된 일종의 입력을 기반으로 일부 자동화 기반을 생성할 수 있는 서비스입니다. 이제 한 걸음 뒤로 물러나서 이벤트는 특정 상황의 발생입니다. 이러한 상황이 유용하려면 이벤트가 인스턴스 이름, 개체 이름, 상태 코드 등과 같은 일종의 정보와 함께 있어야 합니다. 이 정보는 작업할 자동화를 제공할 수 있습니다.

이벤트는 서버리스 아키텍처의 기반이며 때로는 이벤트 기반 아키텍처라고도 합니다. 또한 이벤트는 서비스를 분리하고 소프트웨어 비동기 호출을 지원하며 확장 프로세스를 용이하게 하므로 현대 소프트웨어 아키텍처에 매우 중요합니다.

이벤트 기반 아키텍처의 예:


  • 이미지 처리 앱을 개발합니다.
  • 새 이미지가 버킷에 업로드될 때마다 이벤트가 트리거됩니다.
  • 이 이벤트는 해당 이미지를 가져와 축소판을 만드는 함수를 호출합니다.
  • 축소판이 다른 버킷에 저장됩니다.
  • 이렇게 하면 클라이언트에 이메일 알림을 보내는 또 다른 이벤트가 트리거됩니다.

  • 참고 OCI 기능은 OCI의 서버리스 솔루션으로, 하드웨어나 VM을 프로비저닝하지 않고 단일 용도의 소프트웨어를 실행할 수 있으며, 소프트웨어는 이벤트 또는 스케줄 작업을 기반으로 실행되며 마치 서비스로서의 기능을 갖는 것과 같습니다. 함수에서 더 보기HERE

    OCI 이벤트로 돌아가서 몇 가지 중요한 특징은 다음과 같습니다.




  • 이벤트 서비스는 JSON 개체를 사용하여 이벤트 규칙을 정의합니다.
    고려해야 할 중요한 이벤트를 결정하고 입력할 항목을 결정하는 필터와 같은 규칙을 생각할 수 있습니다. 기본적으로 규칙은 작업을 트리거합니다. 규칙 논리의 예는 다음과 같습니다.

  • MATCH event WHERE (
      eventType EQUALS ANY OF (
      com.oraclecloud.computeapi.launchinstance.end
      )
    )
    


    이 이벤트는 새compute instance가 생성될 때 트리거됩니다.


    하지만...

    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
      )
     )
    )
    


    시각적으로 다음과 같습니다.


    기본적으로 이 이벤트는 사용자 elopez에 의해 Sandbox 또는 dev 구획에서 인스턴스가 시작될 때마다 트리거됩니다.

  • 규칙은 대부분 지정하고 조치를 취합니다.

  • 규칙의 주요 목표는 트리거될 때 무언가를 유발하는 것입니다. 그렇지 않으면 쓸모가 없습니다.

    작업은 일치하는 이벤트에 대해 정의된 응답입니다.

    작업은 다음을 사용하여 만들 수 있습니다.
    Notifications 주제를 구독하는 엔드포인트로 메시지를 보낼 수 있는 알림 서비스로 메시지를 보냅니다.

    이메일 주소, 이메일 그룹, 슬랙 채널 등이 될 수 있습니다.

    Streaming 이 서비스를 사용하면 이벤트를 데이터 스트림으로 수집하여 이 데이터에 대한 추가 분석 및 인텔리전스를 얻을 수 있습니다.

    Functions 수신된 이벤트를 기반으로 기능을 실행할 수 있습니다. 빠른 예:

    you can have an event that triggers every time a new instance is created and this will execute a function that configure monitoring for that new instance.



  • 이벤트 서비스가 작업 서비스를 호출할 수 있도록 권한을 추가해야 합니다.

  • 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
    


    구획에 대한 추가 정보

    좋은 웹페이지 즐겨찾기