다음에 대한 이벤트 알림 사용 설정 Code Engine

Code Engine 의 관리자는 다른 IBM Cloud 서비스에서 Code Engine 로 이벤트를 보내 앱이나 작업을 트리거할 수 있습니다.

Event Notifications 로 정보를 보내려면 Code Engine 인스턴스를 Event Notifications 에 연결해야 합니다. Event Notifications 관련 작업에 대한 자세한 정보는 Event Notifications 시작하기를 참조하십시오.

이벤트는 어떻게 접수되나요?

Code Engine 인스턴스는 Event Notifications 의 대상으로 작동할 수 있습니다.

대상으로 구성하면 Code Engine 작업 또는 앱이 다른 IBM Cloud 서비스 또는 다른 Code Engine 앱이나 작업의 이벤트 알림에 대한 응답으로 트리거될 수 있습니다.

의 주요 기능은 무엇인가요? Event Notifications

Event Notifications 사용 시 다음 기능을 검토하세요 Code Engine

  • 타이머와 같은 예약된 이벤트 소스를 필요에 따라 활성화 또는 비활성화하여 제어할 수 있는 pingSource 을 활성화 또는 비활성화할 수 있습니다. 이벤트 구독을 사용할 때는 불가능합니다.

  • 재시도 횟수 및 죽은 편지 대기열을 제어할 수 있습니다. Code Engine 을 호출할 때 네트워크 오류나 애플리케이션 결함 등의 문제로 인해 요청이 실패할 수 있습니다. 재시도는 외부 요청에 복원성을 제공하는 데 사용됩니다. 자세히 알아보려면 재시도 횟수를 확인하세요.

  • Event Notifications 는 HTTP 이벤트, 클라우드 서비스 이벤트(예: 개체 업로드), 함수, Code Engine 작업 출력과 같은 다양한 이벤트 소스를 지원합니다. 이러한 모듈성을 통해 예약된 트리거가 아닌 실시간 이벤트에 대응할 수 있는 유연한 워크플로우를 만들 수 있습니다. 여러 이벤트 소스를 결합하여 복잡하고 동적인 시스템을 쉽게 설계할 수 있습니다.

  • 복잡한 워크플로를 만들 수 있습니다. 예를 들어 타이머에 의해 작업이 트리거된 다음 작업이 완료되면 다른 서비스의 소스로 Event Notifications 으로 이벤트를 다시 보낼 수 있습니다. 이러한 유형의 워크플로우에 대한 한 가지 시나리오는 이벤트가 이메일 알림을 트리거하거나 다른 워크플로우를 시작하도록 하는 것입니다.

  • 작업 기록은 자동으로 삭제됩니다. 기본적으로 Event Notifications 은 작업 실행 할당량 문제를 방지하기 위해 10분이 지나면 작업 실행을 자동으로 삭제합니다. 이렇게 하면 오래되거나 멈춰 있는 작업으로 인해 불필요하게 리소스가 소모되지 않도록 할 수 있습니다. 또한 Code Engine 작업 할당량을 초과하지 않도록 하는 데 도움이 됩니다. Code Engine 프로젝트의 작업 탭에서 이 동작을 확인하면 10분이 지나면 작업 실행이 자동으로 제거되는 것을 볼 수 있습니다.

Event Notifications 알림은 구독과 어떻게 다른가요?

Event Notifications 을 구독하면 Code Engine 앱 또는 작업에서 이벤트 정보를 받을 수 있습니다.

Code Engine에서는 애플리케이션 또는 작업이 이벤트 생성자를 구독하여 관심있는 이벤트를 수신할 수 있습니다. 이벤트 정보는 애플리케이션의 경우 POST HTTP 요청으로서, 작업의 경우 환경 변수로서 수신합니다.

Code Engine 는 구독을 위해 다음 유형의 이벤트 프로듀서를 지원합니다.

Cron
크론 이벤트 생성기는 크론 작업을 기반으로 하며 일정한 간격으로 이벤트를 생성합니다. 잘 정의된 간격 또는 특정 시간에 조치를 수행해야 하는 경우 Cron 이벤트 생성자를 사용하십시오.
IBM Cloud Object Storage
Object Storage 이벤트 프로듀서는 개체 저장소 버킷의 개체가 변경될 때 이벤트를 생성합니다. 예를 들어, 오브젝트가 버킷에 추가될 때 애플리케이션이 이벤트를 수신한 후 해당 변경사항을 기준으로 조치를 수행할 수 있으며, 이때 새 오브젝트를 이용할 수도 있습니다.
Kafka
Kafka 이벤트 프로듀서는 Kafka 인스턴스에 새 메시지가 표시되는지 감시합니다. 일련의 주제에 대한 Code Engine Kafka 구독을 만들면 앱 또는 작업은 주제 중 하나에 나타나는 각 새 메시지에 대해 별도의 이벤트를 수신합니다.
웹훅
GitHub 웹훅을 사용하여 GitHub 리포지토리에서 Code Engine 워크로드로 이벤트를 보낼 수 있습니다.

또는 Event Notifications 을 사용하여 Code Engine 을 대상으로 구성할 수 있습니다.

대상으로 구성하면 Code Engine 작업 또는 앱이 다른 IBM Cloud 서비스 또는 다른 Code Engine 앱이나 작업의 이벤트 알림에 대한 응답으로 트리거될 수 있습니다.

구독 및 이벤트 알림 비교
태스크 구독 Event Notifications
이벤트 소스 정의 반복되는 시간 기반 이벤트를 생성하는 주기적 타이머 크론과 유사한 이벤트 소스를 만듭니다. 사전 정의된 이벤트 소스 사용 - 주기적 타이머
스케줄링 다음 단계로 타이머 예약하기 주제를 만들고 소스를 정기 타이머로 선택합니다. 다음을 사용하여 구성 cronExpression
최종 목적지 선택 직무 또는 애플리케이션 선택 최종 목적지를 만듭니다. Code Engine
이벤트 구독하기 명시적인 구독이 필요하지 않습니다. 구독을 작성합니다. 이전에 만든 목적지와 주제를 선택합니다.

자세히 알아보려면 구독 시작하기를 참조하세요.

콘솔에서 트리거 설정하기

이 예에서는 IBM Cloud 콘솔을 사용하여 Event Notifications 에서 6시간마다 Code Engine 작업을 호출하는 타이머 트리거를 설정합니다.

시작하기 전에 계정에 다음 항목이 있는지 확인하세요.

  • Event Notifications 인스턴스
  • Code Engine 프로젝트입니다.
  • 프로젝트 내의 대상 작업입니다.

트리거를 만들려면 다음 단계를 완료하세요.

  1. Event Notifications 인스턴스에서 소스를 설정합니다.

    1. 소스 설정
    2. 이벤트 소스로 주기적 타이머를 선택합니다.
    3. 토픽 설정 토픽은 이벤트에 대한 필터 역할을 합니다. 이를 사용하여 관심 있는 이벤트를 정의할 수 있습니다.
    4. 주제에 이름을 지정합니다. 예: " Periodic-Trigger-6hr ".
    5. 토픽이 6시간마다 이벤트를 내보내도록 (0 */6 * * *) 크론 표현식을 설정합니다. 주기적 타이머로 주제 만들기에 대해 자세히 알아보세요.
  2. 목적지를 설정합니다. 대상은 이벤트 처리를 위해 이벤트가 전송되는 곳입니다. 이 예에서는 사용 가능한 대상 목록에서 기존 Code Engine 작업을 선택합니다. 작업은 이벤트가 발생할 때 트리거되는 엔드포인트 역할을 합니다.

    참고: Event Notifications 와 Code Engine 간에는 서비스 간 인증이 필요합니다. 콘솔에서 관리 > 액세스 > 권한 부여로 이동하여 구성할 수 있습니다. 하지만 콘솔을 사용하면 이 부분이 자동으로 처리됩니다.

  3. 주제와 대상을 연결하는 구독을 만듭니다.

    1. 이전에 만든 " Periodic-Trigger-6hr " 주제를 선택합니다.

    2. Code Engine 직업을 대상으로 선택합니다.

구독을 통해 6시간마다 이벤트가 발생하면 Code Engine 작업이 트리거됩니다. 프로젝트의 Jobruns 탭을 검토하여 간격을 관찰하고 확인할 수 있습니다.

이전 단계에서는 작업을 대상으로 구성했습니다. 그러나 대상이 앱인 경우에도 동일한 절차를 사용할 수 있습니다. 대상을 설정할 때 앱을 제공하세요 URL.

CLI에서 트리거 설정하기

이 예에서는 IBM Cloud CLI를 사용하여 Event Notifications 에서 6시간마다 Code Engine 작업을 호출하는 타이머 트리거를 설정합니다.

시작하기 전에 계정에 다음 항목이 있는지 확인하세요.

  • Code Engine 프로젝트입니다.
  • 프로젝트 내의 대상 작업입니다.

트리거를 설정하려면 다음 단계를 완료하세요.

  1. Event Notifications 인스턴스를 만듭니다.
    ibmcloud resource service-instance-create "$EVENT_NOTIFICATIONS_INSTANCE_NAME" \
    "$EVENT_NOTIFICATIONS_SERVICE_NAME" "$EVENT_NOTIFICATIONS_PLAN" "$PROJECT_REGION" \
    -g "$PROJECT_RESOURCE_GROUP"
    
  2. 권한 부여 정책을 만듭니다.
    ibmcloud iam authorization-policy-create event-notifications codeengine Writer,Viewer \
    --source-service-instance-id $EVENT_NOTIFICATIONS_INSTANCE_ID \
    --target-service-instance-name "${PROJECT_NAME}"
    
  3. 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"
    
  4. Event Notifications 주제를 작성합니다. 주제를 --topic-timer 에서 0 */6 * * * 로 6시간 간격으로 설정합니다.
    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 * * *"
    
  5. 대상 주제를 구독합니다.
    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"