IBM Cloud Object Storage 이벤트 생성자에 대한 작업

IBM Cloud Object Storage 구독은 Object Storage 버킷에 대한 변경사항을 청취합니다. 버킷에 대한 구독을 작성하면 해당 버킷이 성공적으로 변경될 때마다 앱 또는 작업이 별도의 이벤트를 수신합니다. write 이벤트,delete 이벤트 또는 all 이벤트와 같은 다른 이벤트를 구독할 수 있습니다. 프로젝트당 최대 100개의 Object Storage 구독을 작성할 수 있습니다.

IBM Cloud Object Storage 이벤트 생성자 설정

시작하려면 IBM Cloud Object Storage 서비스 인스턴스를 작성하고 Code Engine의 지원되는 지역 중 하나에 지역 버킷을 작성해야 합니다.

Object Storage 버킷은 Code Engine 프로젝트와 동일한 지역에 있는 지역 버킷이어야 합니다. 교차 지역 및 단일 사이트 버킷은 지원되지 않습니다. IBM Cloud Object Storage 이벤트 생성자 설정에 대한 자세한 정보는 Object Storage 시작하기를 참조하십시오.

이벤트를 수신하는 애플리케이션 또는 작업이 사설 네트워킹을 사용하여 서비스와 통신하려 할 때 서비스에 privatedirect 엔드포인트(예: IBM Cloud Object Storage)가 모두 있는 경우, direct 엔드포인트를 사용해야 합니다.

Code Engine에 알림 관리자 역할 지정

Object Storage 구독을 작성하기 전에 Code Engine에 알림 관리자 역할을 지정해야 합니다. Code Engine은 알림 관리자로서 Object Storage 버킷에 대한 알림을 확인, 수정 및 삭제할 수 있습니다.

계정 관리자만 알림 관리자 역할을 지정할 수 있습니다.

알림 관리자 역할을 프로젝트에 지정하면 지역 버킷에 대하 이벤트 구독을 프로젝트와 동일한 지역에 있는 Object Storage 인스턴스에 작성할 수 있습니다.

  1. IAM 대시보드 에서 ‘서비스 승인 부여 ’ 페이지로 이동합니다.
  2. 소스 서비스에서 코드 엔진을 선택하십시오.
  3. 선택한 속성 기반 리소스소스 서비스 인스턴스를 선택하십시오. 그런 다음 Code Engine 프로젝트를 선택하십시오.
  4. 대상 서비스에서 Cloud Object Storage를 선택하십시오.
  5. 선택된 속성을 기반으로 하는 리소스서비스 인스턴스를 선택하십시오. 그런 다음 IBM Cloud Object Storage 인스턴스를 선택하십시오.
  6. 알림 관리자 역할을 지정하고 권한 부여를 클릭하십시오.

ibmcloud iam authorization-policy-create 명령을 사용하여 사용자의 프로젝트에 알림 관리자 역할을 지정할 수도 있습니다.

애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독

이벤트가 Code Engine 애플리케이션으로 전송되도록 콘솔 또는 CLI에서 IBM Cloud Object Storage 구독에 대해 작업할 수 있습니다.

기본적으로 이벤트는 대상 애플리케이션의 루트 URL로 라우팅됩니다. --path 옵션을 사용하여 앱 내의 다른 대상에 이벤트를 전송할 수 있습니다. 예를 들어, 구독에 --path /event가 지정된 경우 이벤트가 https://<base application URL>/events로 전송됩니다.

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

콘솔에서 애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독

콘솔에서 애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독을 작성하고 업데이트할 수 있습니다.

시작하기 전에

콘솔에서 애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독을 작성하고 업데이트하려면 다음 단계를 완료하십시오.

  1. Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.

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

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

  4. 이벤트 구독 작성 페이지에서 다음 단계를 완료하십시오.

    1. 이벤트 유형으로 Cloud Object Storage 타일을 선택하십시오. 다음을 클릭하십시오.
    2. 일반에 Object Storage 구독의 이름을 제공하십시오(예: mycos). 선택적으로 이벤트 속성을 제공할 수 있습니다. Object Storage 이벤트 이용자가 애플리케이션인 경우 이벤트 속성을 HTTP 헤더로 사용할 수 있습니다. 이벤트 이용자가 작업인 경우 이벤트 속성을 환경 변수로 사용할 수 있습니다. 다음을 클릭하여 계속 진행하십시오.
    3. 버킷 이벤트 세부사항에서 기존 Object Storage 버킷의 이름을 선택하거나 입력하십시오. 오브젝트의 변경 유형을 지정하고 선택적으로 구독 이벤트를 트리거하는 버킷의 오브젝트를 필터링하려면 오브젝트 이름 접두부 또는 접미부를 제공하십시오. 다음을 클릭하여 계속 진행하십시오.
    4. 이벤트 이용자에 이벤트를 수신할 애플리케이션을 지정하십시오. 정의된 애플리케이션 및 작업 목록에서 선택할 수 있습니다. 이 예에서는 icr.io/codeengine/cos-listen 이미지를 참조하는 myapp 애플리케이션이 사용됩니다. 앱이 없는 경우, Object Storage 구독을 작성한 후 애플리케이션 이름을 제공하고 애플리케이션을 작성할 수 있습니다. 애플리케이션의 경우 선택적으로 경로를 지정할 수 있습니다. 기본적으로 이벤트는 대상 애플리케이션의 루트 URL로 라우팅됩니다. 경로를 지정하여 앱 내의 다른 대상으로 이벤트를 전송할 수 있습니다. 예를 들어, 구독 경로에 /events가 지정된 경우 이벤트가 https://<base application URL>/events로 전송됩니다. 다음을 클릭하여 계속 진행하십시오.
    5. 요약에서 Object Storage 이벤트 구독의 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 작성을 클릭하여 Object Storage 구독을 작성하십시오.
  5. Object Storage 구독이 작성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인하십시오.

  6. 구독을 업데이트하려면 Object Storage 구독 페이지로 이동하십시오. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.

  7. Object Storage 구독 페이지에서 오브젝트 변경 유형을 delete 오브젝트 변경으로 변경하십시오. 버킷 이벤트 세부사항 탭에서 delete 유형의 오브젝트 변경만 선택하십시오. 저장을 클릭하여 변경사항을 저장하십시오.

  8. myapp 애플리케이션은 로그 파일에 정보를 출력하는 샘플 cos-listen 애플리케이션을 참조하므로 로그를 볼 수 있습니다. 버킷에서 오브젝트가 삭제되면 앱 로그에서 삭제 이벤트를 볼 수 있습니다. 콘솔에서 애플리케이션 로그 보기를 참조하십시오.

특정 버킷을 참조하는 IBM Cloud Object Storage 이벤트 구독을 정의한 후에는 다른 버킷을 사용하도록 이 구독을 업데이트할 수 없습니다. 원하는 버킷을 참조하려면 새 구독을 작성해야 합니다.

CLI에서 애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독

시작하기 전에

  1. ibmcloud ce subscription cos create 명령을 사용하여 애플리케이션을 IBM Cloud Object Storage 이벤트 생성자에 연결하십시오. 예를 들면 다음과 같습니다.

    ibmcloud ce subscription cos create --name mycosevent --destination-type app --destination myapp --bucket mybucket
    
  2. 구독이 작성된 후 구독에 대한 세부사항을 보려면 subscription cos get 명령을 실행하십시오.

    ibmcloud ce subscription cos get --name mycosevent
    

    출력 예

    Getting COS source 'mycosevent'...
    OK
    Name:          mycosevent
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           59s
    Created:       2021-03-01T20:08:36-06:00
    Destination:  App:myapp
    Bucket:       mybucket
    Event Type:   all
    Ready:        true
    Conditions:
        Type            OK    Age  Reason
        CosConfigured   true  55s
        Ready           true  55s
        ReadyForEvents  true  55s
        SinkProvided    true  55s
    Events:
        Type     Reason           Age      Source                Messages
        Normal   FinalizerUpdate  61s      cossource-controller  Updated "mycosevent" finalizers
    

이제 버킷을 변경할 때마다 앱이 알림을 받게 됩니다.

튜토리얼을 사용해 보시겠습니까? Object Storage 이벤트 구독을 참조하십시오. 더 많은 코드 예를 찾고 계십니까? 샘플은 IBM Cloud Code Engine GitHub 리포지토리에서 확인하세요.

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

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

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

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

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

cos-listen 애플리케이션과 같이 애플리케이션이 로그 파일에 정보를 인쇄하는 경우 ibmcloud ce app logs CLI 명령을 사용하여 전송된 정보를 확인할 수 있습니다.

애플리케이션에 대한 이벤트 정보를 보려면 먼저 Object Storage 이벤트를 작성해야 합니다. 버킷을 변경하십시오.

이전 예에서 작성한 애플리케이션의 로그를 보려면 다음 명령을 사용하십시오.

ibmcloud ce application logs --application myapp

출력 예

Getting logs for all instances of application 'myapp'...
OK
myapp-a2mvv-1-deployment-d97dcd6cf-zc9lg/user-container:
Listening on port 8080
2021-04-13 19:43:45 - Received:
Body: {"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Write","format":"2.0","object_etag":"2944035e54ee1bdc423848c8eaf05e86","object_length":"4642","object_name":"NOtes.rtf","request_id":"6abc7123-382d-4115-98e8-7568b2cc03f8","request_time":"2021-04-13T19:43:36.610Z"},"operation":"Object:Write"}

앱의 로그 정보는 1시간 동안만 보관된다는 점에 유의하시기 바랍니다. 로깅에 대한 자세한 정보는 로그 보기를 참조하십시오.

더 많은 코드 예를 찾고 계십니까? 샘플은 IBM Cloud Code Engine GitHub 리포지토리에서 확인하세요.

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

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

헤더

다음 표에서는 Object Storage 이벤트의 헤더에 대해 설명합니다.

이벤트용 헤더 파일
헤더 설명
ce-id 이벤트가 재생되지 않는 한, 이벤트의 고유 ID입니다. 이 경우 동일한 ID가 지정됩니다.
ce-source 이벤트 생성자 내에서 이 이벤트가 시작된 위치를 표시하는 URI 참조입니다. Object Storage 이벤트의 경우 이 값은 https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME]입니다. 여기서 [BUCKET_NAME]은 오브젝트가 포함된 버킷의 이름입니다.
ce-specversion CloudEvents 스펙의 버전입니다. 이 값은 항상 1.0입니다.
ce-subject 이벤트와 관련된 리소스를 나타냅니다. Object Storage 이벤트의 경우, 조치가 수행된 오브젝트(또는 키)의 이름입니다.
ce-time 이벤트가 생성된 시간입니다.
ce-type 이벤트의 유형입니다. Object Storage 이벤트의 경우, com.ibm.cloud.cos.document.[ACTION]입니다. 여기서 [ACTION]write 또는 delete입니다. 이벤트 작성 또는 업데이트가 발생할 경우 write 조치가 ce-type에 사용됩니다.

ce-id:  3fb2c04e-a660-4640-8899-b82efb8169b6
ce-source: https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
ce-specversion: 1.0
ce-subject: object-69-144
ce-time: 2021-08-17T20:22:02.917Z
ce-type: com.ibm.cloud.cos.document.delete

HTTP 본문

IBM Cloud Object Storage 이벤트의 HTTP 본문은 다음 형식으로 되어 있습니다.

{
  "bucket": "mybucket",
  "endpoint": "",
  "key": "object-69-144",
  "notification": {
    "bucket_name": "mybucket",
    "content_type": "image/svg+xml",
    "event_type": "Object:Delete",
    "format": "2.0",
    "object_etag": "f3a9dbde30fdf48abc23e5f8b485d6e5",
    "object_length": "1064391",
    "object_name": "object-69-144",
    "request_id": "67a2048a-abcd-abcd-9e0c-968744094b85",
    "request_time": "2021-08-17T20:22:02.917Z"
  },
  "operation": "Object:Delete"
}

다음 표에서는 본문 필드에 대해 설명합니다.

IBM Cloud Object Storage 본문 필드
본문 필드 설명
bucket 이벤트와 관련된 오브젝트의 버킷 이름입니다.
endpoint 이 값은 항상 비어 있는 문자열입니다.
key 버킷에 있는 오브젝트 이름입니다.
operation 이벤트 유형 또는 오퍼레이션입니다. 유형은 Object:Write 또는 Object:Delete 중 하나입니다. 작성 또는 업로드 이벤트는 Object:Write 오퍼레이션으로 태그가 지정됩니다.
Notification.bucket_name 이벤트와 관련된 오브젝트의 버킷 이름입니다.
Notification.content_type 오브젝트의 MIME 유형입니다(예: text/html).
Notification.event_type 이벤트 유형 또는 오퍼레이션입니다. 유형은 Object:Write 또는 Object:Delete 중 하나입니다. 작성 또는 업로드 이벤트는 Object:Write 오퍼레이션으로 태그가 지정됩니다.
Notification.format 이 값은 항상 2.0입니다.
Notification.object_etag 오브젝트가 수정될 때마다 변경되는 고유 값입니다. 이 값은 Object:Delete 오퍼레이션에 대해 표시되지 않습니다.
Notification.object_length 오브젝트의 크기입니다(바이트).
Notification.request_id 오브젝트 변경과 관련된 고유 ID입니다.
Notification.request_time 오브젝트가 변경된 시간입니다.

작업에 대한 IBM Cloud Object Storage 이벤트 구독

이벤트가 Code Engine 작업으로 전송되도록 콘솔 또는 CLI에서 IBM Cloud Object Storage 구독에 대해 작업할 수 있습니다.

작업에 대한 이벤트 구독을 작성하면 이벤트가 트리거될 때마다 작업 실행이 작성되고 이 작업 실행에는 작업과 관련된 환경 변수가 있습니다. IBM Cloud Object Storage로 전송되는 환경 변수에 대한 자세한 정보는 이벤트에 대한 환경 변수를 참조하십시오.

콘솔에서 작업에 대한 IBM Cloud Object Storage 이벤트 구독

콘솔에서 작업에 대한 IBM Cloud Object Storage 이벤트 구독을 작성하고 업데이트할 수 있습니다.

시작하기 전에

콘솔에서 작업에 대한 ‘ IBM Cloud Object Storage ’ 이벤트 구독을 생성하거나 업데이트하려면 다음 단계를 따르십시오:

  1. Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.

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

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

  4. ‘이벤트 구독 생성’ 페이지에서 다음 단계를 수행하십시오

    1. 이벤트 유형으로 Cloud Object Storage 타일을 선택하십시오. 다음을 클릭하십시오.

    2. 일반에 Object Storage 구독의 이름을 제공하십시오(예: mycos-job). 선택적으로 이벤트 속성을 제공할 수 있습니다. 이벤트 이용자가 작업인 경우 이벤트 속성을 환경 변수로 사용할 수 있습니다. 다음을 클릭하여 계속 진행하십시오.

    3. 버킷 이벤트 세부 사항을 보려면, 기존 버킷( Object Storage )의 이름을 선택하거나 입력하고, 이벤트를 트리거할 개체의 변경 유형을 지정합니다.

      객체 변경 유형 의 경우, Object Storage 객체에 대한 작업에 대한 이벤트를 수신할 시기를 지정합니다. 두 가지 유형의 객체 변경 중 하나 또는 둘 다를 선택할 수 있습니다

      • 새 개체가 생성되거나 기존 개체가 업데이트될 때마다 이벤트를 받으려면 만들기 및 업데이트를 사용하세요.
      • 삭제 버튼을 사용하면 기존 개체가 버킷에서 제거될 때마다 이벤트를 수신할 수 있습니다.

      또한, 선택적으로 버킷에 있는 객체를 필터링하기 위해 객체 이름의 접두사 또는 접미사를 제공하여 구독을 위한 이벤트를 트리거할 수 있습니다. 이벤트를 수신하려는 개체 이름의 시작(접두사) 또는 끝(접미사)과 일치하는 문자열을 나타내려면 개체 이름 접두사 또는 개체 이름 접미사 값을 지정하세요. 이 값은 이벤트가 발생하는 Object Storage 의 개체를 지정된 접두사 또는 접미사로 시작하거나 끝나는 파일 이름으로 제한합니다. 와일드카드 문자나 정규 표현식을 사용하지 말고, 접두사와 접미사에 일반 텍스트만 지정하십시오(예: abc 를 지정하고, *abc 를 지정하지 마십시오. abc 로 시작하는 모든 개체를 나타냅니다). 또한 파일 이름에 파일 확장자(예: 접미사로 json 를 지정하면 abc.json 과 같은 파일에 대해서는 이벤트가 처리되지만 abcjson.txt 과 같은 파일에 대해서는 처리되지 않음)가 포함됩니다.

      다음을 클릭하여 계속 진행하십시오.

    4. 이벤트 이용자에 이벤트를 수신할 작업을 지정하십시오. 정의된 작업 목록에서 선택할 수 있습니다. 이 예에서는 icr.io/codeengine/codeengine 이미지를 참조하는 myjob 작업이 사용됩니다. 작업이 없는 경우, Object Storage 구독을 작성한 후 작업 이름을 지정하고 작업을 작성할 수 있습니다. 다음을 클릭하여 계속 진행하십시오.

    5. 요약에서 Object Storage 이벤트 구독의 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 작성을 클릭하여 Object Storage 구독을 작성하십시오.

  5. Object Storage 구독이 작성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인하십시오.

  6. 구독을 업데이트하려면 Object Storage 구독 페이지로 이동하십시오. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.

  7. Object Storage 구독 페이지에서 오브젝트 변경 유형을 delete 오브젝트 변경으로 변경하십시오. 버킷 이벤트 세부사항 탭에서 delete 유형의 오브젝트 변경만 선택하십시오. 저장을 클릭하여 변경사항을 저장하십시오.

  8. myjob 작업은 로그 파일에 정보를 출력하는 샘플 icr.io/codeengine/codeengine 작업을 참조하므로 로그를 볼 수 있습니다. 버킷에서 오브젝트가 삭제되면 작업 실행 로그에서 삭제 이벤트를 볼 수 있습니다. 콘솔에서 작업 로그 보기를 참조하십시오.

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

특정 버킷을 참조하는 IBM Cloud Object Storage 이벤트 구독을 정의한 후에는 다른 버킷을 사용하도록 이 구독을 업데이트할 수 없습니다. 원하는 버킷을 참조하려면 새 구독을 작성해야 합니다.

CLI에서 작업에 대한 IBM Cloud Object Storage 이벤트 구독

시작하기 전에

  1. ibmcloud ce subscription cos create 명령을 사용하여 작업을 IBM Cloud Object Storage 이벤트 생성자에 연결하십시오.

    ibmcloud ce subscription cos create --name mycosevent --destination-type job --destination myjob --bucket mybucket
    
  2. 구독이 작성된 후 구독에 대한 세부사항을 보려면 subscription cos get 명령을 실행하십시오.

    ibmcloud ce subscription cos get --name mycosevent
    

    출력 예

    Getting COS source 'mycosevent'...
    OK
    Name:          mycosevent
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           59s
    Created:       2021-03-01T20:08:36-06:00
    Destination Type:  job
    Destination:       myjob
    Bucket:       mybucket
    Event Type:   all
    Ready:        true
    Conditions:
        Type            OK    Age  Reason
        CosConfigured   true  55s
        Ready           true  55s
        ReadyForEvents  true  55s
        SinkProvided    true  55s
    Events:
        Type     Reason           Age      Source                Messages
        Normal   FinalizerUpdate  61s      cossource-controller  Updated "mycosevent" finalizers
    

이제 버킷을 변경할 때마다 작업이 알림을 받게 됩니다.

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

튜토리얼을 사용해 보시겠습니까? Object Storage 이벤트 구독을 참조하십시오. 더 많은 코드 예를 찾고 계십니까? 샘플은 IBM Cloud Code Engine GitHub 리포지토리에서 확인하세요.

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

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

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

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

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

codeengine 작업과 같이 작업이 로그 파일에 정보를 출력하는 경우 ibmcloud ce jobrun logs CLI 명령을 사용하여 전송된 정보를 확인하십시오.

작업에 대한 이벤트 정보를 보려면 먼저 Object Storage 이벤트를 작성해야 합니다. 버킷을 변경하십시오.

이전 예의 작업에 대한 작업 실행을 찾으려면 다음 명령을 사용하십시오.

ibmcloud ce jobrun list

출력 예

Listing job runs...
OK
Name         Failed  Pending  Requested  Running  Succeeded  Unknown  Age
myjob-pnz6m  0       0        0          0        1          0        39s

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

ibmcloud ce jobrun logs --jobrun myjob-pnz6m

출력 예

Getting logs for all instances of job run 'myjob-pnz6m'...
Getting jobrun 'myjob-pnz6m'...
Getting instances of jobrun 'myjob-pnz6m'...
OK
myjob-pnz6m-0-0/myjob:
Hello from helloworld! I'm a batch job! Index: 0
Hello World from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DATA={"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Delete","format":"2.0","object_length":"4642","object_name":"Notes.rtf","request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b","request_time":"2021-04-13T20:10:37.631Z"},"operation":"Object:Delete"}
CE_ID=b59727ee-9c4e-446a-9261-5616f6d1283b
CE_SOURCE=https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T20:10:37.631Z
CE_TYPE=com.ibm.cloud.cos.document.delete
CONTENT_TYPE=application/json
HOME=/root
HOSTNAME=myjob-pnz6m-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시간 동안만 보관된다는 점에 유의하십시오. 로깅에 대한 자세한 정보는 로그 보기를 참조하십시오.

더 많은 코드 예를 찾고 계십니까? 샘플은 IBM Cloud Code Engine GitHub 리포지토리에서 확인하세요.

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

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

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

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

이벤트에 대한 환경 변수
가변 설명
CE_DATA 이벤트에 대한 데이터(본문)입니다. Object Storage 이벤트의 CE_DATA를 참조하십시오.
CE_ID 이벤트가 재생되지 않는 한, 이벤트의 고유 ID입니다. 이 경우 동일한 ID가 지정됩니다.
CE_SOURCE 이벤트 생성자 내에서 이 이벤트가 시작된 위치를 표시하는 URI 참조입니다. Object Storage 이벤트의 경우 이 값은 https://cloud.ibm.com/catalog/services/cloud-object-storage/[BUCKET_NAME]입니다. 여기서 [BUCKET_NAME]은 오브젝트가 포함된 버킷의 이름입니다.
CE_SPECVERSION CloudEvents 스펙의 버전입니다. 이 값은 항상 1.0입니다.
CE_TIME 이벤트가 생성된 시간입니다.
CE_TYPE 이벤트의 유형입니다. Object Storage 이벤트의 경우, com.ibm.cloud.cos.document.[ACTION]입니다. 여기서 [ACTION]write 또는 delete입니다.

CE_DATA 환경 변수

CE_DATA에 대한 다음 예는 읽기 쉽도록 형식이 지정되어 있습니다.

{
"bucket":"mybucket",
"endpoint":"",
"key":"Notes.rtf",
"notification": {
    "bucket_name":"mybucket",
    "content_type":"text/rtf",
    "event_type":"Object:Delete",
    "format":"2.0",
    "object_length":"4642",
    "object_name":"Notes.rtf",
    "request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b",
    "request_time":"2021-04-13T20:10:37.631Z"
},
"operation":"Object:Delete"}

다음 표에서는 CE_DATA 환경 속성에 대해 설명합니다.

IBM Cloud Object Storage 환경 변수
속성 설명
bucket 이벤트와 관련된 오브젝트의 버킷 이름입니다.
endpont 이 값은 항상 비어 있는 문자열입니다.
key 버킷에 있는 오브젝트 이름입니다.
operaton 이벤트 유형 또는 오퍼레이션입니다. 유형은 Object:Write 또는 Object:Delete 중 하나입니다. 작성 또는 업로드 이벤트는 Object:Write 오퍼레이션으로 태그가 지정됩니다.
Notification.bucket_name 이벤트와 관련된 오브젝트의 버킷 이름입니다.
Notification.content_type 오브젝트의 MIME 유형입니다(예: text/rtf).
Notification.event_type 이벤트 유형 또는 오퍼레이션입니다. 유형은 Object:Write 또는 Object:Delete 중 하나입니다. 작성 또는 업로드 이벤트는 Object:Write 오퍼레이션으로 태그가 지정됩니다.
Notification.format 이 값은 항상 2.0입니다.
Notification.object_etag 오브젝트가 수정될 때마다 변경되는 고유 값입니다. 이 값은 Object:Delete 오퍼레이션에 대해 표시되지 않습니다.
Notification.object_length 오브젝트의 크기입니다(바이트).
Notification.request_id 오브젝트 변경과 관련된 고유 ID입니다.
Notification.request_time 오브젝트가 변경된 시간입니다.

출력 예

CE_DATA={"bucket":"mybucket","endpoint":"","key":"Notes.rtf","notification":{"bucket_name":"mybucket","content_type":"text/rtf","event_type":"Object:Delete","format":"2.0","object_length":"4642","object_name":"Notes.rtf","request_id":"b59727ee-9c4e-446a-9261-5616f6d1283b","request_time":"2021-04-13T20:10:37.631Z"},"operation":"Object:Delete"}
CE_ID=b59727ee-9c4e-446a-9261-5616f6d1283b
CE_SOURCE=https://cloud.ibm.com/catalog/services/cloud-object-storage/mybucket
CE_SPECVERSION=1.0
CE_TIME=2021-04-13T20:10:37.631Z
CE_TYPE=com.ibm.cloud.cos.document.delete

추가 이벤트 속성 정의

구독을 작성할 때 생성되는 모든 이벤트에 포함될 추가 CloudEvent 속성을 정의할 수 있습니다. 이러한 속성은 이벤트 전달의 다른 CloudEvent 속성과 유사하게 나타납니다. 기존 CloudEvent 속성의 이름을 지정하도록 선택하면 이벤트에 포함된 원래 값을 대체합니다.

추가 속성을 정의하려면 ibmcloud ce subscription cos create CLI 명령과 함께 --extension 옵션을 사용하십시오.

자세한 정보는 다른 CloudEvents 스펙을 사용할 수 있습니까?를 참조하세요.

구독 삭제

IBM Cloud Object Storage 구독이 더 이상 필요하지 않으면 삭제할 수 있습니다.

콘솔에서 구독 삭제

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

구독과 연관된 작업 또는 앱을 삭제해도 구독은 삭제되지 않습니다. 애플리케이션 또는 작업(또는 동일한 이름의 다른 앱 또는 작업)을 다시 작성하면 구독이 앱 또는 작업과 다시 연결됩니다.

CLI를 사용하여 구독 삭제

IBM Cloud Object Storage 구독은 ibmcloud ce subscription cos delete 명령을 사용하여 삭제할 수 있습니다.

예를 들어, mycosevent라는 IBM Cloud Object Storage 구독을 삭제하려면 다음 명령을 사용하십시오.

ibmcloud ce subscription cos delete --name mycosevent

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