다음에 대한 이벤트 알림 사용 설정 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 프로젝트입니다.
- 프로젝트 내의 대상 작업입니다.
트리거를 만들려면 다음 단계를 완료하세요.
-
Event Notifications 인스턴스에서 소스를 설정합니다.
- 소스 설정
- 이벤트 소스로 주기적 타이머를 선택합니다.
- 토픽 설정 토픽은 이벤트에 대한 필터 역할을 합니다. 이를 사용하여 관심 있는 이벤트를 정의할 수 있습니다.
- 주제에 이름을 지정합니다. 예: " Periodic-Trigger-6hr ".
- 토픽이 6시간마다 이벤트를 내보내도록
(0 */6 * * *)크론 표현식을 설정합니다. 주기적 타이머로 주제 만들기에 대해 자세히 알아보세요.
-
목적지를 설정합니다. 대상은 이벤트 처리를 위해 이벤트가 전송되는 곳입니다. 이 예에서는 사용 가능한 대상 목록에서 기존 Code Engine 작업을 선택합니다. 작업은 이벤트가 발생할 때 트리거되는 엔드포인트 역할을 합니다.
참고: Event Notifications 와 Code Engine 간에는 서비스 간 인증이 필요합니다. 콘솔에서 관리 > 액세스 > 권한 부여로 이동하여 구성할 수 있습니다. 하지만 콘솔을 사용하면 이 부분이 자동으로 처리됩니다.
-
주제와 대상을 연결하는 구독을 만듭니다.
-
이전에 만든 " Periodic-Trigger-6hr " 주제를 선택합니다.
-
Code Engine 직업을 대상으로 선택합니다.
-
구독을 통해 6시간마다 이벤트가 발생하면 Code Engine 작업이 트리거됩니다. 프로젝트의 Jobruns 탭을 검토하여 간격을 관찰하고 확인할 수 있습니다.
이전 단계에서는 작업을 대상으로 구성했습니다. 그러나 대상이 앱인 경우에도 동일한 절차를 사용할 수 있습니다. 대상을 설정할 때 앱을 제공하세요 URL.
CLI에서 트리거 설정하기
이 예에서는 IBM Cloud CLI를 사용하여 Event Notifications 에서 6시간마다 Code Engine 작업을 호출하는 타이머 트리거를 설정합니다.
시작하기 전에 계정에 다음 항목이 있는지 확인하세요.
- Code Engine 프로젝트입니다.
- 프로젝트 내의 대상 작업입니다.
트리거를 설정하려면 다음 단계를 완료하세요.
- Event Notifications 인스턴스를 만듭니다.
ibmcloud resource service-instance-create "$EVENT_NOTIFICATIONS_INSTANCE_NAME" \ "$EVENT_NOTIFICATIONS_SERVICE_NAME" "$EVENT_NOTIFICATIONS_PLAN" "$PROJECT_REGION" \ -g "$PROJECT_RESOURCE_GROUP" - 권한 부여 정책을 만듭니다.
ibmcloud iam authorization-policy-create event-notifications codeengine Writer,Viewer \ --source-service-instance-id $EVENT_NOTIFICATIONS_INSTANCE_ID \ --target-service-instance-name "${PROJECT_NAME}" - 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" - 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 * * *" - 대상 주제를 구독합니다.
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"