IBM Cloud Docs
주기적 타이머(cron) 이벤트 생성자에 대한 작업

주기적 타이머(cron) 이벤트 생성자에 대한 작업

주기적 타이머(cron) 이벤트 생성자는 일정한 간격으로 이벤트를 생성합니다. 이 간격은 분, 시간, 일 또는 월별로 스케줄하거나 다른 여러 시간 간격의 조합으로 스케줄할 수 있습니다. 크론 이벤트를 수신하려면 Code Engine 앱, 함수 및 작업을 구독할 수 있습니다.

정기 타이머 이벤트 구독은 표준 크론탭 구문을 사용하여 ' * * * * * 형식으로 간격 세부 정보를 지정하며, 여기서 필드는 분, 시간, 월, 년, 월, 요일입니다. 예를 들어, 자정에 대해 이벤트를 스케줄하려면 0 0 * * *를 지정하십시오. 매주 금요일 자정에 이벤트를 스케줄하려면 0 0 * * 5를 지정하십시오. 크론탭에 대한 자세한 내용은 ' 크론탭 을 참조하세요.

정기 타이머 이벤트 프로듀서를 구독할 때는 구독 대상(앱, 기능 또는 작업)과 구독 대상 유형을 제공해야 합니다. 스케줄을 제공하지 않으면 기본값인 * * * * *(1분마다)가 사용됩니다.

{{{site.data.keyword.codeengineshort}} 프로젝트 내 정기 타이머 구독에 대한 할당량과 구독 한도가 있습니다. Code Engine 한계에 대한 자세한 정보는 Code Engine의 한계 및 할당량을 참조하십시오.

애플리케이션에 대한 주기적 타이머(cron) 이벤트 구독

콘솔 또는 CLI에서 정기 타이머 구독으로 작업할 수 있습니다.

이벤트는 애플리케이션에 HTTP POST 요청으로 전송됩니다. 이벤트에 포함되는 정보에 대한 자세한 정보는 이벤트의 HTTP 헤더 및 본문 정보를 참조하십시오.

콘솔에서 애플리케이션에 대한 주기적 타이머(cron) 이벤트 구독

콘솔에서 애플리케이션에 대한 주기적 타이머 이벤트 구독을 만들고 업데이트할 수 있습니다.

시작하기 전에

콘솔에서 애플리케이션에 대한 정기 타이머 이벤트 구독을 만들고 업데이트하려면 다음 단계를 완료하세요.

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.

  2. 개요 페이지에서 이벤트 구독을 클릭하십시오.

  3. 이벤트 구독 페이지에서 작성을 클릭하여 구독을 작성하십시오.

  4. 이벤트 구독 만들기 페이지에서 다음 단계를 완료합니다:

    1. 이벤트 유형으로 주기적 타이머 타일을 선택하십시오. 다음을 클릭하십시오.
    2. 일반에서 주기적 타이머 구독의 이름을 제공하십시오(예: myptimer). 선택적으로 이벤트 속성을 제공할 수 있습니다. 주기적 타이머 이벤트 이용자가 애플리케이션인 경우 이벤트 속성을 HTTP 헤더로 사용할 수 있습니다. 이벤트 이용자가 작업인 경우 이벤트 속성을 환경 변수로 사용할 수 있습니다. 다음을 클릭하여 계속 진행하십시오.
    3. 스케줄에서 이벤트 타이밍에 대한 정보를 제공하십시오. 주기적 타이머 이벤트 프로듀서는 표준 크론탭 구문을 사용하여 간격 세부 정보를 지정합니다. 제공된 패턴에서 간격을 선택하거나 사용자 정의 cron 표현식을 제공하십시오. 예를 들어 0 0 * * *는 이벤트가 매일 자정에 발생하도록 지정합니다. 이 예의 경우 매일, 매시간, 매분에 대한 스케줄 패턴을 선택하십시오. cron 표현식이 자동으로 생성됩니다. 요일, 시, 분 패턴과 Cron 표현식은 협정 세계시(UTC)를 따릅니다. 스케줄을 지정하지 않으면 이 이벤트 구독은 1분마다 이벤트를 보냅니다. 예정된 이벤트 목록이 표시됩니다. 이러한 예정된 이벤트는 사용자의 시간대로 표시됩니다. 다음을 클릭하여 계속 진행하십시오.
    4. 사용자 정의 이벤트 데이터에서 이벤트 메시지 본문에 포함될 데이터를 제공하십시오. 메시지는 일반 텍스트 또는 base64 형식으로 지정할 수 있습니다. 이 예의 경우, 이벤트 메시지의 본문으로 hello stranger 텍스트를 지정하십시오. 메시지가 base64 형식인 경우 이벤트가 전송될 때 메시지를 디코딩하도록 선택할 수 있습니다. 또한 사용자 정의 이벤트 데이터의 컨텐츠 유형을 지정할 수도 있습니다. 다음을 클릭하여 계속 진행하십시오.
    5. 이벤트 이용자에서 이벤트를 수신할 애플리케이션 또는 작업을 지정하십시오. 정의된 애플리케이션 및 작업 목록에서 선택할 수 있습니다. 이 예에서는 icr.io/codeengine/cron 이미지를 참조하는 myapp 애플리케이션이 사용됩니다. 아직 앱이나 작업을 만들지 않은 경우 정기 타이머 구독을 만든 후 앱 또는 작업의 이름을 지정하고 앱을 만들거나 작업을 만들 수 있습니다. 애플리케이션의 경우 선택적으로 경로를 지정할 수 있습니다. 기본적으로 이벤트는 대상 애플리케이션의 루트 URL로 라우팅됩니다. 경로를 지정하여 앱 내의 다른 대상으로 이벤트를 전송할 수 있습니다. 예를 들어, 구독 경로에 /events가 지정된 경우 이벤트가 https://<base application URL>/events로 전송됩니다. 다음을 클릭하여 계속 진행하십시오.
    6. 요약에서 주기적 타이머 이벤트 구독 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 만들기를 클릭하여 정기 타이머 구독을 만듭니다.
  5. 이제 정기 타이머 구독이 생성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인합니다.

  6. 정기 타이머 구독을 업데이트하려면 정기 타이머 구독 페이지로 이동합니다. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.

  7. 정기 타이머 구독 페이지에서 이벤트 메시지의 데이터를 변경합니다. 사용자 정의 이벤트 데이터 탭에서 이벤트 데이터를 hello sunshine으로 변경하십시오. 저장을 클릭하여 변경사항을 저장하십시오.

  8. myapp 애플리케이션은 로그 파일에 정보를 출력하는 샘플 cron 애플리케이션을 참조하므로 로그를 볼 수 있습니다. myapp 이벤트 이용자 애플리케이션의 애플리케이션 로그를 보고 이벤트 메시지가 hello sunshine인지 확인하십시오. 콘솔에서 애플리케이션 로그 보기를 참조하십시오.

CLI를 사용하여 애플리케이션에 대한 주기적 타이머(cron) 이벤트 구독

시작하기 전에

ibmcloud ce application create --name myapp --image icr.io/codeengine/cron

CLI를 사용하여 애플리케이션을 정기 타이머 구독에 연결하려면 ' ibmcloud ce sub cron create ' 명령을 사용하세요.

ibmcloud ce sub cron create --name NAME --destination-type APP --destination APPLICATION_NAME --schedule CRON

예를 들어 매일 자정에 ' myapp '이라는 앱으로 이벤트를 전송하는 크론 구독을 만들 수 있습니다:

ibmcloud ce sub cron create --name mycronevent --destination-type app --destination myapp --schedule '0 0 * * *'

스케줄 값이 단일 문자열로 처리되도록 하려면 스케줄 값을 따옴표로 묶어야 합니다.

다음 표에는 이전 예에서 sub cron create 명령과 함께 사용된 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce subscription cron create 명령을 참조하십시오.

명령 옵션
옵션 설명
--name cron 이벤트 소스의 이름입니다. 이 값은 필수입니다.
--destination 이벤트 생성자로부터 이벤트를 수신할 현재 프로젝트의 Code Engine 애플리케이션 또는 작업 이름입니다. 이 값은 필수입니다.
--destination-type destination 유형입니다. 이 경우 app. 기본값은 app입니다.
--schedule 이벤트가 트리거되는 빈도를 crontab 형식으로 스케줄합니다. 예를 들어 2분 간격일 경우 */2 * * * *(문자열 형식)를 지정하십시오. 기본적으로 Cron 이벤트는 1분마다 트리거되며 UTC 시간대로 설정됩니다. 시간대를 수정하려면 --time-zone 옵션을 사용하십시오. 이 값은 선택사항입니다.
sub cron 명령 사용에 대한 팁
  • 기본적으로 이벤트는 대상 애플리케이션의 루트 URL로 라우팅됩니다. --path 옵션을 사용하여 앱 내의 다른 대상에 이벤트를 전송할 수 있습니다. 예를 들어, 구독에 --path /events가 지정된 경우 이벤트가 https://<base application URL>/events로 전송됩니다.
  • 주기적 타이머 이벤트의 데이터 크기는 최대 4096바이트로 제한됩니다. 따라서 --data 옵션 또는 --data-base64 옵션을 사용하는 경우 최대 4096바이트를 전송할 수 있습니다. 자세한 정보는 코드 엔진의 한계 및 할당량을 참조하십시오.
  • Cron 구독은 기본적으로 UTC 시간대를 사용합니다. sub cron create 또는 sub cron update 명령에 --time-zone 옵션을 지정하면 시간대를 변경할 수 있습니다. 유효한 표준 시간대 값은 TZ 데이터베이스를 참조하세요. kubectl을 사용하여 구독을 작성할 때 시간대를 지정하지 않는 경우에는 UTC 시간대가 지정된다는 점을 참고하십시오.
  • 앱 또는 작업 이벤트 이용자를 아직 작성하지 않은 경우 --force 옵션을 sub cron create 명령과 함께 사용하여 cron 이벤트 구독을 강제로 작성하십시오. cron 구독을 작성한 후에는 애플리케이션 또는 작업의 이름을 지정하고 애플리케이션을 작성하거나 작업을 작성할 수 있습니다.

cron 구독이 성공적으로 작성되었는지 확인하려면 ibmcloud ce sub cron get --name mycronevent 명령을 실행하십시오.

출력 예

Getting cron source 'mycronevent'...
OK

Name:          mycronevent
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           2m21s
Created:       2021-03-14T13:37:51-05:00

Destination Type:  app
Destination:       myapp
Schedule:          0 0 * * *
Time Zone:         UTC
Ready:             true

Events:
    Type     Reason            Age        Source                 Messages
    Normal   FinalizerUpdate   12s        pingsource-controller  Updated "mycronevent" finalizers

이 출력을 통해 대상 애플리케이션은 myapp이고, 스케줄은 0 0 * * *(매일 자정)이고 Ready 상태가 true임을 알 수 있습니다.

CLI를 사용하여 cron 구독 업데이트

CLI에서 cron 구독을 업데이트하려면 ibmcloud ce subscription cron update 명령을 사용하십시오. 예를 들어, mycronevent 구독을 업데이트하여 2분마다 myapp라는 앱에 이벤트를 전송하도록 스케줄을 변경하려면 다음과 같이 입력하십시오.

ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'

cron 구독이 성공적으로 업데이트되었는지 확인하려면 ibmcloud ce sub cron get --name mycronevent 명령을 실행하십시오. 구독 스케줄이 업데이트되었습니다.

출력 예

Getting cron source 'mycronevent'...
OK

Name:          mycronevent
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           2m21s
Created:       2021-08-31T16:00:49-04:00

Destination Type:  app
Destination:       myapp
Schedule:          */2 * * * *
Time Zone:         UTC
Ready:             true

Events:
  Type    Reason                       Age               Source                 Messages
  Normal  PingSourceSynchronized       7s (x3 over 13m)  pingsource-controller  PingSource adapter is synchronized

튜토리얼을 사용해 보시겠습니까? 주기적 타이머(cron) 이벤트 구독을 참조하십시오. 더 많은 코드 예를 찾고 계십니까? Samples for IBM Cloud Code Engine GitHub 저장소를 확인하십시오.

콘솔에서 애플리케이션에 대한 이벤트 정보 보기

이벤트 구독에 대한 정보를 보려면 다음을 수행하십시오.

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.
  2. 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.

샘플 cron 애플리케이션과 같이 애플리케이션이 로그 파일에 정보를 출력하는 경우, 이벤트 이용자 애플리케이션의 로그 파일을 확인하십시오. 콘솔에서 애플리케이션 로그 보기를 참조하십시오.

CLI를 사용하여 애플리케이션에 대한 이벤트 정보 보기

샘플 cron 애플리케이션과 같이 애플리케이션이 로그 파일에 정보를 인쇄하는 경우, ibmcloud ce app logs CLI 명령을 사용하여 이벤트 이용자 애플리케이션의 로그 파일을 확인하십시오. 예를 들어, 이전 예에서 작성한 애플리케이션의 로그를 보려면 다음 명령을 사용하십시오.

ibmcloud ce application logs --application myapp

출력 예

Getting logs for all instances of application 'myapp'...
OK

myapp-mw25y-1-deployment-8579d868f4-ssfnr/user-container:
Listening on port 8080
2021-04-13 17:22:08 - Received:
URL: /
Header: Accept-Encoding=[gzip]
Header: Ce-Id=[d2faa29c-8088-410f-bb30-416085c52a0b]
Header: Ce-Source=[/apis/v1/namespaces/81fvkfqi3n6/pingsources/mycronevent]
Header: Ce-Specversion=[1.0]
Header: Ce-Time=[2021-04-13T17:22:00.059682656Z]
Header: Ce-Type=[dev.knative.sources.ping]
Header: Content-Length=[0]
Header: Forwarded=[for=172.30.136.209;proto=http, for=172.30.48.203]
Header: K-Proxy-Request=[activator]
Header: Traceparent=[00-b13196fe439b6d7d67f3205b2f655788-e9fee441cd41158c-00]
Header: User-Agent=[Go-http-client/1.1]
Header: X-B3-Sampled=[0]
Header: X-B3-Spanid=[1dd2d76079811204]
Header: X-B3-Traceid=[710b7c383682d0cd1dd2d76079811204]
Header: X-Envoy-Attempt-Count=[1]
Header: X-Envoy-Decorator-Operation=[myapp-mw25y-1.81fvkfqi3n6.svc.cluster.local:80/*]
Header: X-Envoy-Internal=[true]
Header: X-Envoy-Peer-Metadata=[ChQKDkFQUF9DT05UQUlORVJTEgIaAAoaCgpDTFVTVEVSX0lEEgwaCkt1YmVybmV0ZXMKGAoNSVNUSU9fVkVSU0lPThIHGgUxLjkuMQq+AwoGTEFCRUxTErMDKrADCh0KA2FwcBIWGhRpc3Rpby1pbmdyZXNzZ2F0ZXdheQoTCgVjaGFydBIKGghnYXRld2F5cwoUCghoZXJpdGFnZRIIGgZUaWxsZXIKNgopaW5zdGFsbC5vcGVyYXRvci5pc3Rpby5pby9vd25pbmctcmVzb3VyY2USCRoHdW5rbm93bgoZCgVpc3RpbxIQGg5pbmdyZXNzZ2F0ZXdheQoZCgxpc3Rpby5pby9yZXYSCRoHZGVmYXVsdAowChtvcGVyYXRvci5pc3Rpby5pby9jb21wb25lbnQSERoPSW5ncmVzc0dhdGV3YXlzCiAKEXBvZC10ZW1wbGF0ZS1oYXNoEgsaCTU1YjU0N2Y0ZgoSCgdyZWxlYXNlEgcaBWlzdGlvCjkKH3NlcnZpY2UuaXN0aW8uaW8vY2Fub25pY2FsLW5hbWUSFhoUaXN0aW8taW5ncmVzc2dhdGV3YXkKLwojc2VydmljZS5pc3Rpby5pby9jYW5vbmljYWwtcmV2aXNpb24SCBoGbGF0ZXN0CiIKF3NpZGVjYXIuaXN0aW8uaW8vaW5qZWN0EgcaBWZhbHNlChoKB01FU0hfSUQSDxoNY2x1c3Rlci5sb2NhbAouCgROQU1FEiYaJGlzdGlvLWluZ3Jlc3NnYXRld2F5LTU1YjU0N2Y0Zi10aHN4cAobCglOQU1FU1BBQ0USDhoMaXN0aW8tc3lzdGVtCl0KBU9XTkVSElQaUmt1YmVybmV0ZXM6Ly9hcGlzL2FwcHMvdjEvbmFtZXNwYWNlcy9pc3Rpby1zeXN0ZW0vZGVwbG95bWVudHMvaXN0aW8taW5ncmVzc2dhdGV3YXkKFwoRUExBVEZPUk1fTUVUQURBVEESAioACicKDVdPUktMT0FEX05BTUUSFhoUaXN0aW8taW5ncmVzc2dhdGV3YXk=]
Header: X-Envoy-Peer-Metadata-Id=[router~172.30.48.203~istio-ingressgateway-55b547f4f-thsxp.istio-system~istio-system.svc.cluster.local]
Header: X-Forwarded-For=[172.30.136.209, 172.30.48.203, 172.30.167.171]
Header: X-Forwarded-Proto=[http]
Header: X-Request-Id=[fe8d6cec-f0e4-47c2-b9ae-81764cb377bc]

로깅에 대한 자세한 정보는 로그 보기를 참조하십시오.

더 많은 코드 예를 찾고 계십니까? Samples for IBM Cloud Code Engine GitHub 저장소를 확인하십시오.

애플리케이션에 전달되는 이벤트에 대한 cron 헤더 및 본문 정보

애플리케이션에 전달되는 모든 이벤트는 HTTP POST 메시지로 수신됩니다. 이벤트에는 이벤트 본문(비즈니스 논리)을 보지 않고 이벤트에 대한 정보의 키 비트를 신속하게 결정하는 데 도움이 되는 특정 HTTP 헤더가 포함되어 있습니다. 자세한 내용은 ' CloudEvents 사양을 참조하세요.

헤더

다음 표에서는 주기적 타이머(cron) 이벤트의 헤더에 대해 설명합니다:

이벤트의 헤더 필드
헤더 설명
ce-id 이벤트가 재생되지 않는 한, 이벤트의 고유 ID입니다. 이 경우 동일한 ID가 지정됩니다.
ce-source 이벤트 생성자 내에서 이 이벤트가 시작된 위치를 표시하는 URI 참조입니다. cron 이벤트의 경우 이 헤더는 프로젝트 하위 도메인과 cron 구독 이름이 포함된 URI 참조이며, /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME] 형식입니다.
ce-specversion CloudEvents 스펙의 버전입니다. 이 값은 항상 1.0입니다.
ce-time 이벤트가 생성된 시간입니다.
ce-type 이벤트의 유형입니다. cron 이벤트의 경우 dev.knative.sources.ping입니다.

출력 예

ce-id: c329ed76-5004-4383-a3cc-c7a9b82e3ac6
ce-source: /apis/v1/namespaces/6b0v3x9xek5/pingsources/mycronevent
ce-specversion: 1.0
ce-time: 2021-02-26T19:19:00.497637287Z
ce-type: dev.knative.sources.ping

HTTP 본문

HTTP 본문에는 이벤트 자체가 포함되어 있으며 구독을 작성하거나 업데이트할 때 지정한 형식입니다.

함수에 대한 주기적 타이머(크론) 이벤트 구독하기

콘솔 또는 CLI에서 정기 타이머 구독으로 작업할 수 있습니다.

이벤트는 HTTP POST 요청으로 함수에 전송됩니다. 이벤트에 포함되는 정보에 대한 자세한 정보는 이벤트의 HTTP 헤더 및 본문 정보를 참조하십시오.

콘솔에서 함수에 대한 주기적 타이머(cron) 이벤트 구독하기

콘솔에서 함수에 대한 주기적 타이머 이벤트 구독을 만들고 업데이트할 수 있습니다.

시작하기 전에

/**
 * The `main` function is the entry-point into the function.
 * It has one optional argument 'params', which carries all the
 * parameters the function was invoked with.
*/
async function main(params) {

  // add process environment variables
  params.env = process.env

  // print recognizable string to the log
  console.log('Function invocation via cron subscription');

  // log params object, so invocation can be observed in the logs
  console.dir(params);

  // craft a simple HTTP RC 200 response,
  // which also echos the params object
  response = {
    statusCode: 200,
    headers: {
      'Content-Type': 'application/json;charset=utf-8'
    },
    body: params
  };
  return response
}

콘솔에서 함수에 대한 정기 타이머 이벤트 구독을 만들고 업데이트하려면 다음 단계를 완료하세요.

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.

  2. 개요 페이지에서 이벤트 구독을 클릭하십시오.

  3. 이벤트 구독 페이지에서 작성을 클릭하여 구독을 작성하십시오.

  4. 이벤트 구독 만들기 페이지에서 다음 단계를 완료합니다:

    1. 이벤트 유형으로 주기적 타이머 타일을 선택하십시오. 다음을 클릭하십시오.
    2. 일반에서 주기적 타이머 구독의 이름을 제공하십시오(예: myptimer). 선택적으로 이벤트 속성을 제공할 수 있습니다. 주기적 타이머 이벤트 이용자가 애플리케이션인 경우 이벤트 속성을 HTTP 헤더로 사용할 수 있습니다. 이벤트 이용자가 함수인 경우 이벤트 속성은 params 오브젝트의 __ce_headers 특성에서 키-값 쌍으로 사용 가능합니다. 다음을 클릭하여 계속 진행하십시오.
    3. 스케줄에서 이벤트 타이밍에 대한 정보를 제공하십시오. 주기적 타이머 이벤트 프로듀서는 표준 크론탭 구문을 사용하여 간격 세부 정보를 지정합니다. 제공된 패턴에서 간격을 선택하거나 사용자 정의 cron 표현식을 제공하십시오. 예를 들어 0 0 * * *는 이벤트가 매일 자정에 발생하도록 지정합니다. 이 예의 경우 매일, 매시간, 매분에 대한 스케줄 패턴을 선택하십시오. cron 표현식이 자동으로 생성됩니다. 요일, 시, 분 패턴과 Cron 표현식은 협정 세계시(UTC)를 따릅니다. 스케줄을 지정하지 않으면 이 이벤트 구독은 1분마다 이벤트를 보냅니다. 예정된 이벤트 목록이 표시됩니다. 이러한 예정된 이벤트는 사용자의 시간대로 표시됩니다. 다음을 클릭하여 계속 진행하십시오.
    4. 사용자 정의 이벤트 데이터에서 이벤트 메시지 본문에 포함될 데이터를 제공하십시오. 메시지는 일반 텍스트 또는 base64 형식으로 지정할 수 있습니다. 이 예의 경우, 이벤트 메시지의 본문으로 hello stranger 텍스트를 지정하십시오. 메시지가 base64 형식인 경우 이벤트가 전송될 때 메시지를 디코딩하도록 선택할 수 있습니다. 또한 사용자 정의 이벤트 데이터의 컨텐츠 유형을 지정할 수도 있습니다. 다음을 클릭하여 계속 진행하십시오.
    5. 이벤트 이용자에 대해 컴포넌트 유형 Function 를 선택하고 이벤트를 수신할 함수를 지정하십시오. 정의된 함수 목록에서 선택할 수 있습니다. 이 예의 경우, 샘플 인라인 코드를 사용하는 myfun 함수를 사용하십시오. 함수를 아직 작성하지 않은 경우, 주기적 타이머 등록을 작성한 후 함수 이름 및 인라인 코드로 함수 워크로드 작성 을 지정할 수 있습니다. 다음을 클릭하여 계속 진행하십시오.
    6. 요약에서 주기적 타이머 이벤트 구독 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 만들기를 클릭하여 정기 타이머 구독을 만듭니다.
  5. 이제 정기 타이머 구독이 생성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인합니다.

  6. 정기 타이머 구독을 업데이트하려면 정기 타이머 구독 페이지로 이동합니다. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.

  7. 정기 타이머 구독 페이지에서 이벤트 메시지의 데이터를 변경합니다. 사용자 정의 이벤트 데이터 탭에서 이벤트 데이터를 { "hello": "world" } 로 변경하고 사용자 정의 이벤트 데이터의 컨텐츠 유형으로 application/json 를 선택하십시오. 저장을 클릭하여 변경사항을 저장하십시오.

  8. myfun 함수는 전체 params 오브젝트를 로그 파일에 인쇄하는 샘플 인라인 코드를 사용하므로 로그를 보고 함수가 호출되었는지 확인할 수 있습니다. myfun 이벤트 이용자 함수에 대한 함수 로그를 보고 params 오브젝트에 키-값 쌍 hello: world 가 포함되어 있는지 확인하십시오. 또한 params 오브젝트의 body 필드에 Base64 인코딩된 값이 포함되어 있음을 확인할 수 있습니다. { "hello": "world" } 콘솔에서 함수 로그 보기 를 참조하십시오.

CLI로 함수에 대한 주기적 타이머(cron) 이벤트 구독하기

시작하기 전에

/**
 * The `main` function is the entry-point into the function.
 * It has one optional argument 'params', which carries all the
 * parameters the function was invoked with.
*/
async function main(params) {

  // add process environment variables
  params.env = process.env

  // print recognizable string to the log
  console.log('Function invocation via cron subscription');

  // log params object, so invocation can be observed in the logs
  console.dir(params);

  // craft a simple HTTP RC 200 response,
  // which also echos the params object
  response = {
    statusCode: 200,
    headers: {
      'Content-Type': 'application/json;charset=utf-8'
    },
    body: params
  };
  return response
}

코드를 sample_inline_code.js 파일에 저장하고 다음 명령을 사용하여 함수를 작성하십시오.

ibmcloud ce function create --name myfun --runtime nodejs --inline-code ./sample_inline_code.js

CLI를 사용하여 정기 타이머 구독에 함수를 연결하려면 ' ibmcloud ce sub cron create ' 명령을 사용하세요:

ibmcloud ce sub cron create --name NAME --destination-type function --destination FUNCTION_NAME --schedule CRON

예를 들어 매일 자정에 ' myfun '이라는 앱으로 이벤트를 전송하는 크론 구독을 만들 수 있습니다:

ibmcloud ce sub cron create --name mycronevent --destination-type function --destination myfun --schedule '0 0 * * *'

스케줄 값이 단일 문자열로 처리되도록 하려면 스케줄 값을 따옴표로 묶어야 합니다.

다음 표에는 이전 예에서 sub cron create 명령과 함께 사용된 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce subscription cron create 명령을 참조하십시오.

명령 옵션
옵션 설명
--name cron 이벤트 소스의 이름입니다. 이 값은 필수입니다.
--destination 이벤트 프로듀서로부터 이벤트를 수신할 현재 프로젝트의 Code Engine 애플리케이션, 함수 또는 작업의 이름입니다. 이 값은 필수입니다.
--destination-type destination 유형입니다. 이 경우 function. 기본값은 app입니다.
--schedule 이벤트가 트리거되는 빈도를 crontab 형식으로 스케줄합니다. 예를 들어 2분 간격일 경우 */2 * * * *(문자열 형식)를 지정하십시오. 기본적으로 Cron 이벤트는 1분마다 트리거되며 UTC 시간대로 설정됩니다. 시간대를 수정하려면 --time-zone 옵션을 사용하십시오. 이 값은 선택사항입니다.
sub cron 명령 사용에 대한 팁
  • 주기적 타이머 이벤트의 데이터 크기는 최대 4096바이트로 제한됩니다. 따라서 --data 옵션 또는 --data-base64 옵션을 사용하는 경우 최대 4096바이트를 전송할 수 있습니다. 자세한 정보는 코드 엔진의 한계 및 할당량을 참조하십시오.
  • Cron 구독은 기본적으로 UTC 시간대를 사용합니다. sub cron create 또는 sub cron update 명령에 --time-zone 옵션을 지정하면 시간대를 변경할 수 있습니다. 유효한 표준 시간대 값은 TZ 데이터베이스를 참조하세요. kubectl을 사용하여 구독을 작성할 때 시간대를 지정하지 않는 경우에는 UTC 시간대가 지정된다는 점을 참고하십시오.
  • 앱 또는 작업 이벤트 이용자를 아직 작성하지 않은 경우 --force 옵션을 sub cron create 명령과 함께 사용하여 cron 이벤트 구독을 강제로 작성하십시오. cron 등록을 작성한 후 함수 함수 작성 의 이름을 지정할 수 있습니다.

cron 구독이 성공적으로 작성되었는지 확인하려면 ibmcloud ce sub cron get --name mycronevent 명령을 실행하십시오.

출력 예

Getting cron event subscription 'mycronevent'...
OK

Name:          mycronevent
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           2m21s
Created:       2024-03-14T13:37:51-05:00

Destination Type:  function
Destination:       myfun
Schedule:          0 0 * * *
Time Zone:         UTC
Ready:             true

Events:
  Type    Reason                  Age                Source                 Messages
  Normal  FinalizerUpdate         20s                pingsource-controller  Updated "mycronevent" finalizers
  Normal  PingSourceSynchronized  20s                pingsource-controller  PingSource adapter is synchronized

이 출력에서 대상 함수는 ' myfun, 일정은 ' 0 0 * * * '(매일 자정), 준비 상태는 ' true'인 것을 확인할 수 있습니다.

CLI를 사용하여 cron 구독 업데이트

CLI에서 cron 구독을 업데이트하려면 ibmcloud ce subscription cron update 명령을 사용하십시오. 예를 들어, ' mycronevent 구독을 업데이트하여 2분마다 ' myfun '라는 함수에 이벤트를 보내도록 일정을 변경합니다:

ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'

cron 구독이 성공적으로 업데이트되었는지 확인하려면 ibmcloud ce sub cron get --name mycronevent 명령을 실행하십시오. 구독 스케줄이 업데이트되었습니다.

출력 예

Getting cron event subscription 'mycronevent'...
OK

Name:          mycronevent
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           37m41s
Created:       2024-03-14T14:04:51-05:00

Destination Type:  function
Destination:       myfun
Schedule:          */2 * * * *
Time Zone:         UTC
Ready:             true

Events:
  Type    Reason                  Age                Source                 Messages
  Normal  FinalizerUpdate         20s                pingsource-controller  Updated "mycronevent" finalizers
  Normal  PingSourceSynchronized  20s                pingsource-controller  PingSource adapter is synchronized

튜토리얼을 사용해 보시겠습니까? 주기적 타이머(cron) 이벤트 구독을 참조하십시오. 더 많은 코드 예를 찾고 계십니까? Samples for IBM Cloud Code Engine GitHub 저장소를 확인하십시오.

콘솔에서 함수에 대한 이벤트 정보 보기

이벤트 구독에 대한 정보를 보려면 다음과 같이 하세요:

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.
  2. 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.

샘플 ' codeengine ' 작업처럼 함수가 로그 파일에 정보를 출력하는 경우 해당 함수에 대한 로그 파일을 확인합니다. 콘솔에서 작업 로그 보기를 참조하십시오.

함수에 전달되는 이벤트의 Cron 헤더 및 본문 정보

함수에 전달되는 모든 이벤트는 HTTP POST 메시지로 수신됩니다. 이벤트에는 이벤트에 대한 정보의 키 비트를 신속하게 판별하는 데 도움이 되는 특정 HTTP 헤더가 포함되어 있습니다. HTTP 헤더는 함수가 호출되는 params 오브젝트의 __ce_headers 특성에 저장됩니다. 자세한 내용은 ' CloudEvents 사양을 참조하세요.

헤더

다음 표에서는 __ce_headers 에서 주기적 타이머 (cron) 이벤트에 대한 키-값 쌍을 설명합니다.

이벤트용 헤더 파일
헤더 설명
Ce-Id 이벤트가 재생되지 않는 한, 이벤트의 고유 ID입니다. 이 경우 동일한 ID가 지정됩니다.
Ce-Source 이벤트 생성자 내에서 이 이벤트가 시작된 위치를 표시하는 URI 참조입니다. cron 이벤트의 경우 이 헤더는 프로젝트 하위 도메인과 cron 구독 이름이 포함된 URI 참조이며, /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME] 형식입니다.
Ce-Specversion CloudEvents 스펙의 버전입니다. 이 값은 항상 1.0입니다.
Ce-Time 이벤트가 생성된 시간입니다.
Ce-Type 이벤트의 유형입니다. cron 이벤트의 경우 dev.knative.sources.ping입니다.

출력 예

  __ce_headers: {
     "Ce-Id": "b861440f-0e17-44ab-9bab-826da0c9713f",
     "Ce-Source": "/apis/v1/namespaces/7iuw2furi55/pingsources/mycronevent",
     "Ce-Specversion": "1.0",
     "Ce-Time": "2024-06-02T10:56:00.062572905Z",
     "Ce-Type": "dev.knative.sources.ping"
  }

HTTP 본문

HTTP 본문에는 사용자 지정 이벤트 데이터가 포함되며 구독을 만들거나 업데이트할 때 지정한 형식입니다. params 오브젝트의 body 특성에서 사용자 정의 이벤트 데이터에 액세스할 수 있습니다.

사용자 정의 이벤트 데이터가 hello stranger 로 설정되고 사용자 정의 이벤트 데이터의 컨텐츠 유형text/plain 로 설정된 이벤트 호출에 대한 예제 params 오브젝트:

  {
    "__ce_headers": {
        "Ce-Id": "b861440f-0e17-44ab-9bab-826da0c9713f",
        "Ce-Source": "/apis/v1/namespaces/7iuw2furi55/pingsources/mycronevent",
        "Ce-Specversion": "1.0",
        "Ce-Time": "2024-06-02T10:56:00.062572905Z",
        "Ce-Type": "dev.knative.sources.ping",
        "Content-Length": "14",
        "Content-Type": "text/plain"
    },
    "body": "hello stranger"
  }

사용자 정의 이벤트 데이터의 컨텐츠 유형application/json 로 설정된 경우 body 의 값은 Base64 로 인코딩됩니다.

작업에 대한 주기적 타이머(cron) 이벤트 구독

콘솔 또는 CLI에서 정기 타이머 구독으로 작업할 수 있습니다.

작업은 이벤트를 환경 변수로 수신합니다. cron에서 전송하는 환경 변수에 대한 자세한 정보는 이벤트에 대한 환경 변수를 참조하십시오.

콘솔에서 작업에 대한 주기적 타이머(cron) 이벤트 구독

콘솔에서 작업에 대한 정기 타이머 이벤트 구독을 만들고 업데이트할 수 있습니다.

시작하기 전에

콘솔에서 작업에 대한 정기 타이머 이벤트 가입을 만들고 업데이트하려면 다음 단계를 완료하세요.

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.

  2. 개요 페이지에서 이벤트 구독을 클릭하십시오.

  3. 이벤트 구독 페이지에서 작성을 클릭하여 구독을 작성하십시오.

  4. 이벤트 구독 만들기 페이지에서 다음 단계를 완료합니다:

    1. 일반에서 주기적 타이머 구독의 이름을 제공하십시오(예: myptimer2). 선택적으로 이벤트 속성을 제공할 수 있습니다. 주기적 타이머 이벤트 이용자가 애플리케이션인 경우 이벤트 속성을 HTTP 헤더로 사용할 수 있습니다. 이벤트 이용자가 작업인 경우 이벤트 속성을 환경 변수로 사용할 수 있습니다. 다음을 클릭하여 계속 진행하십시오.
    2. 스케줄에서 이벤트 타이밍에 대한 정보를 제공하십시오. 주기적 타이머 이벤트 프로듀서는 표준 크론탭 구문을 사용하여 간격 세부 정보를 지정합니다. 제공된 패턴에서 간격을 선택하거나 사용자 정의 cron 표현식을 제공하십시오. 예를 들어 0 0 * * *는 이벤트가 매일 자정에 발생하도록 지정합니다. 이 예의 경우 매일, 매시간, 매분에 대한 스케줄 패턴을 선택하십시오. cron 표현식이 자동으로 생성됩니다. 요일, 시, 분 패턴과 Cron 표현식은 협정 세계시(UTC)를 따릅니다. 스케줄을 지정하지 않으면 이 이벤트 구독은 1분마다 이벤트를 보냅니다. 예정된 이벤트 목록이 표시됩니다. 이러한 예정된 이벤트는 사용자의 시간대로 표시됩니다. 다음을 클릭하여 계속 진행하십시오.
    3. 사용자 정의 이벤트 데이터에서 이벤트 메시지 본문에 포함될 데이터를 제공하십시오. 메시지는 일반 텍스트 또는 base64 형식으로 지정할 수 있습니다. 이 예의 경우, 이벤트 메시지의 본문으로 hello stranger 텍스트를 지정하십시오. 메시지가 base64 형식인 경우 이벤트가 전송될 때 메시지를 디코딩하도록 선택할 수 있습니다. 또한 사용자 정의 이벤트 데이터의 컨텐츠 유형을 지정할 수도 있습니다. 다음을 클릭하여 계속 진행하십시오.
    4. 이벤트 이용자에서 이벤트를 수신할 애플리케이션 또는 작업을 지정하십시오. 정의된 애플리케이션 및 작업 목록에서 선택할 수 있습니다. 이 예에서는 icr.io/codeengine/codeengine 이미지를 참조하는 myjob 작업이 사용됩니다. 아직 작업을 만들지 않은 경우에는 정기 타이머 구독을 만든 후 작업 이름을 지정하고 작업을 만들 수 있습니다. 다음을 클릭하여 계속 진행하십시오.
    5. 요약에서 주기적 타이머 이벤트 구독 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 만들기를 클릭하여 정기 타이머 구독을 만듭니다.
  5. 이제 정기 타이머 구독이 생성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인합니다.

  6. 정기 타이머 구독을 업데이트하려면 정기 타이머 구독 페이지로 이동합니다. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.

  7. 정기 타이머 구독 페이지에서 이벤트 메시지의 데이터를 변경합니다. 사용자 정의 이벤트 데이터 탭에서 이벤트 데이터를 hello sunshine으로 변경하십시오. 저장을 클릭하여 변경사항을 저장하십시오.

  8. myjob 작업은 로그 파일에 정보를 인쇄하는 샘플 codeengine 애플리케이션을 참조하므로 로그를 볼 수 있습니다. myjob 이벤트 이용자 작업의 작업 로그를 보고 이벤트 메시지가 hello sunshine인지 확인하십시오. 콘솔에서 작업 로그 보기를 참조하십시오.

CLI를 사용하여 작업에 대한 주기적 타이머(cron) 이벤트 구독

시작하기 전에

ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine

CLI에서 ' ibmcloud ce sub cron create ' 명령을 사용하여 작업을 정기 타이머 구독에 연결하려면 다음과 같이 하세요.

ibmcloud ce sub cron create --name NAME --destination-type job --destination JOB_NAME --schedule CRON

예를 들어, 5분마다 myjob이라는 작업에 이벤트를 보내는 cron 구독을 작성하려면 다음과 같이 입력하십시오.

ibmcloud ce sub cron create --name mycronevent --destination-type job --destination myjob --schedule '*/5 * * * *' --data '{ "message": "Hello world!" }' --content-type application/json

스케줄 값이 단일 문자열로 처리되도록 하려면 스케줄 값을 따옴표로 묶어야 합니다.

다음 표에는 이 예에서 sub cron create 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce subscription cron create 명령을 참조하십시오.

명령 옵션
옵션 설명
--name cron 이벤트 소스의 이름입니다.
--destination-type destination 유형입니다. 이 경우 job.
--destination 이벤트 생성자에서 이벤트를 수신하는 현재 프로젝트의 Code Engine 작업 이름입니다.
--schedule 이벤트가 트리거되는 빈도를 crontab 형식으로 스케줄합니다. 예를 들어 2분 간격일 경우 */2 * * * *(문자열 형식)를 지정하십시오. 기본적으로 Cron 이벤트는 1분마다 트리거되며 UTC 시간대로 설정됩니다. 시간대를 수정하려면 --time-zone 옵션을 사용하십시오. 이 값은 선택사항입니다.
sub cron 명령 사용에 대한 팁
  • 주기적 타이머 이벤트의 데이터 크기는 최대 4096바이트로 제한됩니다. 따라서 --data 옵션 또는 --data-base64 옵션을 사용하는 경우 최대 4096바이트를 전송할 수 있습니다. 자세한 정보는 코드 엔진의 한계 및 할당량을 참조하십시오.
  • Cron 구독은 기본적으로 UTC 시간대를 사용합니다. sub cron create 또는 sub cron update 명령에 --time-zone 옵션을 지정하면 시간대를 변경할 수 있습니다. 유효한 표준 시간대 값은 TZ 데이터베이스를 참조하세요. kubectl을 사용하여 구독을 작성할 때 시간대를 지정하지 않는 경우에는 UTC 시간대가 지정된다는 점을 참고하십시오.
  • 앱 또는 작업 이벤트 이용자를 아직 작성하지 않은 경우 --force 옵션을 sub cron create 명령과 함께 사용하여 cron 이벤트 구독을 강제로 작성하십시오. cron 구독을 작성한 후에는 애플리케이션 또는 작업의 이름을 지정하고 애플리케이션을 작성하거나 작업을 작성할 수 있습니다.

cron 구독이 성공적으로 작성되었는지 확인하려면 ibmcloud ce sub cron get --name mycronevent 명령을 실행하십시오.

출력 예

Getting cron source 'mycronevent'...
OK

Name:          mycronevent
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           54s
Created:       2021-04-13T11:38:50-05:00

Destination Type:  job
Destination:       myjob
Schedule:          */5 * * * *
Time Zone:         UTC
Content Type:      application/json
Data:              { "message": "Hello world!" }
Ready:             true

Events:
    Type     Reason            Age        Source                 Messages
    Normal   FinalizerUpdate   12s        pingsource-controller  Updated "mycronevent" finalizers

이 출력에서 대상 애플리케이션은 myjob이고, 스케줄은 */5 * * * *(5분 간격)이며, 준비 상태는 true임을 알 수 있습니다.

구독을 통해 작성된 작업 실행은 10분 후에 삭제됩니다.

CLI를 사용하여 cron 구독 업데이트(작업)

CLI에서 cron 구독을 업데이트하려면 ibmcloud ce subscription cron update 명령을 사용하십시오. 예를 들어, mycronevent 구독을 업데이트하여 2분마다 myapp라는 앱에 이벤트를 전송하도록 스케줄을 변경하려면 다음과 같이 입력하십시오.

ibmcloud ce sub cron update --name mycronevent --schedule '*/2 * * * *'

cron 구독이 성공적으로 업데이트되었는지 확인하려면 ibmcloud ce sub cron get --name mycronevent 명령을 실행하십시오. 구독 스케줄이 업데이트되었습니다.

출력 예

Getting cron source 'mycronevent'...
OK

Name:          mycronevent
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           2m21s
Created:       2021-08-31T16:00:49-04:00

Destination Type:  job
Destination:       myjob
Schedule:          */2 * * * *
Time Zone:         UTC
Content Type:      application/json
Data:              { "message": "Hello world!" }
Ready:             true

Events:
  Type    Reason                       Age               Source                 Messages
  Normal  PingSourceSynchronized       7s (x3 over 13m)  pingsource-controller  PingSource adapter is synchronized

콘솔에서 작업에 대한 이벤트 정보 보기

이벤트 구독에 대한 정보를 보려면 다음을 수행하십시오.

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.
  2. 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.

샘플 codeengine 작업과 같이 작업이 로그 파일에 정보를 인쇄하는 경우, 이벤트 이용자 작업의 로그 파일을 확인하십시오. 콘솔에서 작업 로그 보기를 참조하십시오.

CLI를 사용하여 작업에 대한 이벤트 정보 보기

샘플 codeengine 작업과 같이 작업이 로그 파일에 정보를 인쇄하는 경우, 주기적 타이머(cron) 이벤트에서 작성된 작업 실행을 찾은 후 작업 실행 로그를 확인할 수 있습니다. 예를 들어, 이전 예의 작업에 대한 작업 실행을 찾으려면 다음 명령을 사용하십시오.

ibmcloud ce jobrun list

출력 예

Listing job runs...
OK

Name         Failed  Pending  Requested  Running  Succeeded  Unknown  Age
myjob-kd829  0       0        0          0        1          0        43s

작업 실행 이름을 지정하여 작업 실행 로그를 확인하십시오.

ibmcloud ce jobrun logs --jobrun myjob-kd829

출력 예

Hello from helloworld! I'm a batch job! Index: 0

Hello World from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)

Some Env Vars:
--------------
CE_DATA={ "message": "Hello world!" }
CE_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_SOURCE=/apis/v1/namespaces/1234abcd1a2/pingsources/mycroneventjob
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T17:41:00.429658447Z
CE_TYPE=dev.knative.sources.ping
CONTENT_TYPE=application/json
HOME=/root
HOSTNAME=myjob-mpps4-0-0
JOB_INDEX=0
KUBERNETES_PORT=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_HOST=172.21.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1

작업 실행에 대한 로그 정보는 1시간 동안만 보관됩니다. 로깅에 대한 자세한 정보는 로그 보기를 참조하십시오.

cron에서 전송하는 환경 변수에 대한 자세한 정보는 이벤트에 대한 환경 변수를 참조하십시오.

더 많은 코드 예를 찾고 계십니까? Samples for IBM Cloud Code Engine GitHub 저장소를 확인하십시오.

작업에 전달되는 이벤트에 대한 환경 변수

작업에 전달되는 모든 이벤트는 환경 변수로 수신됩니다. 이러한 환경 변수에는 접두사 ' CE_ '이 포함되며 ' CloudEvents ' 사양을 기반으로 합니다.

각 이벤트에는 이벤트가 작업에 전달될 때마다 표시되는 몇 개의 공통 환경 변수가 포함됩니다. 각 이벤트의 실제 변수 세트에는 추가 옵션이 포함될 수 있습니다. 자세한 내용은 ' CloudEvent ' 속성을 참조하세요.

다음 표에서는 cron 이벤트와 관련된 환경 변수에 대해 설명합니다.

이벤트에 대한 환경 변수
가변 설명
CE_DATA 이벤트에 대한 데이터(본문)입니다. cron 이벤트의 CE_DATA를 참조하십시오.
CE_ID 이벤트가 재생되지 않는 한, 이벤트의 고유 ID입니다. 이 경우 동일한 ID가 지정됩니다.
CE_SOURCE 이벤트 생성자 내에서 이 이벤트가 시작된 위치를 표시하는 URI 참조입니다. cron 이벤트의 경우 이는 프로젝트 하위 도메인과 cron 구독 이름이 포함된 URI 참조이며, /apis/v1/namespaces/[PROJECT_SUBDOMAIN]/pingsources/[SUBSCRIPTION_NAME] 형식입니다.
CE_SPECVERSION CloudEvents 스펙의 버전입니다. 이 값은 항상 1.0입니다.
CE_TIME 이벤트가 생성된 시간입니다.
CE_TYPE 이벤트의 유형입니다. cron 이벤트의 경우 dev.knative.sources.ping입니다.

CE_DATA 환경 변수

정기 타이머 이벤트의 경우 ' CE_DATA 환경 변수에는 이벤트 자체가 포함되며 구독을 만들거나 업데이트할 때 지정하는 형식입니다.

출력 예

CE_DATA={ "message": "Hello world!" }
CE_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_SOURCE=/apis/v1/namespaces/1234abcd1a2/pingsources/mycroneventjob
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T17:41:00.429658447Z
CE_TYPE=dev.knative.sources.ping

추가 이벤트 속성 정의

등록을 작성할 때 생성되는 이벤트에 포함될 추가 이벤트 속성을 정의할 수 있습니다. 이러한 이벤트 속성은 이벤트 전달의 다른 CloudEvent 속성과 유사하게 나타납니다. 기존 CloudEvent 속성의 이름을 지정하도록 선택하면 이벤트에 포함된 원래 값을 대체합니다. 자세한 정보는 다른 CloudEvents 스펙을 사용할 수 있습니까?를 참조하세요.

콘솔의 일반 탭에서 주기적 타이머(cron) 이벤트 구독에 대한 이벤트 속성을 키-값 쌍으로 지정할 수 있습니다.

CLI에서 추가 속성을 정의하려면 ibmcloud ce sub cron create CLI 명령에 --extension 옵션을 사용하십시오.

구독 삭제

더 이상 필요하지 않은 주기적 타이머(cron) 구독은 삭제할 수 있습니다.

콘솔에서 구독 삭제

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.
  2. 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.
  3. 구독 목록에서 애플리케이션 또는 작업에서 제거할 구독을 삭제하십시오.

앱 또는 작업을 삭제해도 구독은 삭제되지 않습니다.

CLI를 사용하여 구독 삭제

ibmcloud ce sub cron delete 또는 ibmcloud ce sub cos delete 명령을 실행하여 구독을 삭제할 수 있습니다.

예를 들어, mycronevent2라는 cos 구독을 삭제하려면 다음과 같이 입력하십시오.

ibmcloud ce subscription cron delete --name mycronevent2

앱 또는 작업을 삭제해도 구독은 삭제되지 않습니다. 대신 CLI에서 구독은 애플리케이션 또는 작업의 가용성에 따라 달라지므로 구독의 Ready 상태가 false로 이동합니다. 앱 또는 작업(또는 동일한 이름의 다른 앱 또는 작업)을 다시 작성하면 구독이 다시 연결되고 준비 상태는 true가 됩니다.