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 시작하기를 참조하십시오.
이벤트를 수신하는 애플리케이션 또는 작업이 사설 네트워킹을 사용하여 서비스와 통신하려 할 때 서비스에 private 및 direct 엔드포인트(예: IBM Cloud Object Storage)가 모두 있는 경우, direct 엔드포인트를 사용해야 합니다.
Code Engine에 알림 관리자 역할 지정
Object Storage 구독을 작성하기 전에 Code Engine에 알림 관리자 역할을 지정해야 합니다. Code Engine은 알림 관리자로서 Object Storage 버킷에 대한 알림을 확인, 수정 및 삭제할 수 있습니다.
계정 관리자만 알림 관리자 역할을 지정할 수 있습니다.
알림 관리자 역할을 프로젝트에 지정하면 지역 버킷에 대하 이벤트 구독을 프로젝트와 동일한 지역에 있는 Object Storage 인스턴스에 작성할 수 있습니다.
- IAM 대시보드 에서 ‘서비스 승인 부여 ’ 페이지로 이동합니다.
- 소스 서비스에서 코드 엔진을 선택하십시오.
- 선택한 속성 기반 리소스 및 소스 서비스 인스턴스를 선택하십시오. 그런 다음 Code Engine 프로젝트를 선택하십시오.
- 대상 서비스에서 Cloud Object Storage를 선택하십시오.
- 선택된 속성을 기반으로 하는 리소스 및 서비스 인스턴스를 선택하십시오. 그런 다음 IBM Cloud Object Storage 인스턴스를 선택하십시오.
- 알림 관리자 역할을 지정하고 권한 부여를 클릭하십시오.
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 이벤트 구독을 작성하고 업데이트할 수 있습니다.
시작하기 전에
- 프로젝트를 작성하십시오.
- 애플리케이션을 작성하십시오. 예를 들어,
icr.io/codeengine/cos-event이미지를 사용하는myapp이라는 애플리케이션을 작성하십시오. 이 이미지는cos-listen.go에서 가져온 것으로, IBM Cloud Code Engine GitHub 저장소의 샘플 에서 확인할 수 있습니다.
콘솔에서 애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독을 작성하고 업데이트하려면 다음 단계를 완료하십시오.
-
Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.
-
개요 페이지에서 이벤트 구독을 클릭하십시오.
-
이벤트 구독 페이지에서 작성을 클릭하여 구독을 작성하십시오.
-
이벤트 구독 작성 페이지에서 다음 단계를 완료하십시오.
- 이벤트 유형으로 Cloud Object Storage 타일을 선택하십시오. 다음을 클릭하십시오.
- 일반에 Object Storage 구독의 이름을 제공하십시오(예:
mycos). 선택적으로 이벤트 속성을 제공할 수 있습니다. Object Storage 이벤트 이용자가 애플리케이션인 경우 이벤트 속성을 HTTP 헤더로 사용할 수 있습니다. 이벤트 이용자가 작업인 경우 이벤트 속성을 환경 변수로 사용할 수 있습니다. 다음을 클릭하여 계속 진행하십시오. - 버킷 이벤트 세부사항에서 기존 Object Storage 버킷의 이름을 선택하거나 입력하십시오. 오브젝트의 변경 유형을 지정하고 선택적으로 구독 이벤트를 트리거하는 버킷의 오브젝트를 필터링하려면 오브젝트 이름 접두부 또는 접미부를 제공하십시오. 다음을 클릭하여 계속 진행하십시오.
- 이벤트 이용자에 이벤트를 수신할 애플리케이션을 지정하십시오. 정의된 애플리케이션 및 작업 목록에서 선택할 수 있습니다. 이 예에서는
icr.io/codeengine/cos-listen이미지를 참조하는myapp애플리케이션이 사용됩니다. 앱이 없는 경우, Object Storage 구독을 작성한 후 애플리케이션 이름을 제공하고 애플리케이션을 작성할 수 있습니다. 애플리케이션의 경우 선택적으로 경로를 지정할 수 있습니다. 기본적으로 이벤트는 대상 애플리케이션의 루트 URL로 라우팅됩니다. 경로를 지정하여 앱 내의 다른 대상으로 이벤트를 전송할 수 있습니다. 예를 들어, 구독 경로에/events가 지정된 경우 이벤트가https://<base application URL>/events로 전송됩니다. 다음을 클릭하여 계속 진행하십시오. - 요약에서 Object Storage 이벤트 구독의 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 작성을 클릭하여 Object Storage 구독을 작성하십시오.
-
Object Storage 구독이 작성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인하십시오.
-
구독을 업데이트하려면 Object Storage 구독 페이지로 이동하십시오. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.
-
Object Storage 구독 페이지에서 오브젝트 변경 유형을
delete오브젝트 변경으로 변경하십시오. 버킷 이벤트 세부사항 탭에서delete유형의 오브젝트 변경만 선택하십시오. 저장을 클릭하여 변경사항을 저장하십시오. -
myapp애플리케이션은 로그 파일에 정보를 출력하는 샘플cos-listen애플리케이션을 참조하므로 로그를 볼 수 있습니다. 버킷에서 오브젝트가 삭제되면 앱 로그에서 삭제 이벤트를 볼 수 있습니다. 콘솔에서 애플리케이션 로그 보기를 참조하십시오.
특정 버킷을 참조하는 IBM Cloud Object Storage 이벤트 구독을 정의한 후에는 다른 버킷을 사용하도록 이 구독을 업데이트할 수 없습니다. 원하는 버킷을 참조하려면 새 구독을 작성해야 합니다.
CLI에서 애플리케이션에 대한 IBM Cloud Object Storage 이벤트 구독
시작하기 전에
-
애플리케이션을 작성합니다. 예를 들어,
icr.io/codeengine/cos-listen이미지를 사용하는myapp이라는 애플리케이션을 작성하십시오. 이 이미지는cos-listen.go에서 가져온 것으로, IBM Cloud Code Engine GitHub 저장소의 샘플 에서 확인할 수 있습니다. 예를 들면 다음과 같습니다.ibmcloud ce application create --name myapp --image icr.io/codeengine/cos-listen
-
ibmcloud ce subscription cos create명령을 사용하여 애플리케이션을 IBM Cloud Object Storage 이벤트 생성자에 연결하십시오. 예를 들면 다음과 같습니다.ibmcloud ce subscription cos create --name mycosevent --destination-type app --destination myapp --bucket mybucket -
구독이 작성된 후 구독에 대한 세부사항을 보려면
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 리포지토리에서 확인하세요.
콘솔에서 애플리케이션에 대한 이벤트 정보 보기
이벤트 구독에 대한 정보를 보려면 다음을 수행하십시오.
- Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.
- 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.
샘플 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"
}
다음 표에서는 본문 필드에 대해 설명합니다.
| 본문 필드 | 설명 |
|---|---|
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 이벤트 구독을 작성하고 업데이트할 수 있습니다.
시작하기 전에
- 프로젝트를 작성하십시오.
- 작업을 작성하십시오. 예를 들어,
icr.io/codeengine/codeengine이미지를 사용하는myjob이라는 작업을 작성하십시오. 이 이미지는codeengine.go에서 가져온 것으로, IBM Cloud Code Engine GitHub 저장소의 샘플 에서 확인할 수 있습니다.
콘솔에서 작업에 대한 ‘ IBM Cloud Object Storage ’ 이벤트 구독을 생성하거나 업데이트하려면 다음 단계를 따르십시오:
-
Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.
-
개요 페이지에서 이벤트 구독을 클릭하십시오.
-
이벤트 구독 페이지에서 작성을 클릭하여 구독을 작성하십시오.
-
‘이벤트 구독 생성’ 페이지에서 다음 단계를 수행하십시오
-
이벤트 유형으로 Cloud Object Storage 타일을 선택하십시오. 다음을 클릭하십시오.
-
일반에 Object Storage 구독의 이름을 제공하십시오(예:
mycos-job). 선택적으로 이벤트 속성을 제공할 수 있습니다. 이벤트 이용자가 작업인 경우 이벤트 속성을 환경 변수로 사용할 수 있습니다. 다음을 클릭하여 계속 진행하십시오. -
버킷 이벤트 세부 사항을 보려면, 기존 버킷( Object Storage )의 이름을 선택하거나 입력하고, 이벤트를 트리거할 개체의 변경 유형을 지정합니다.
객체 변경 유형 의 경우, Object Storage 객체에 대한 작업에 대한 이벤트를 수신할 시기를 지정합니다. 두 가지 유형의 객체 변경 중 하나 또는 둘 다를 선택할 수 있습니다
- 새 개체가 생성되거나 기존 개체가 업데이트될 때마다 이벤트를 받으려면 만들기 및 업데이트를 사용하세요.
- 삭제 버튼을 사용하면 기존 개체가 버킷에서 제거될 때마다 이벤트를 수신할 수 있습니다.
또한, 선택적으로 버킷에 있는 객체를 필터링하기 위해 객체 이름의 접두사 또는 접미사를 제공하여 구독을 위한 이벤트를 트리거할 수 있습니다. 이벤트를 수신하려는 개체 이름의 시작(접두사) 또는 끝(접미사)과 일치하는 문자열을 나타내려면 개체 이름 접두사 또는 개체 이름 접미사 값을 지정하세요. 이 값은 이벤트가 발생하는 Object Storage 의 개체를 지정된 접두사 또는 접미사로 시작하거나 끝나는 파일 이름으로 제한합니다. 와일드카드 문자나 정규 표현식을 사용하지 말고, 접두사와 접미사에 일반 텍스트만 지정하십시오(예:
abc를 지정하고,*abc를 지정하지 마십시오.abc로 시작하는 모든 개체를 나타냅니다). 또한 파일 이름에 파일 확장자(예: 접미사로json를 지정하면abc.json과 같은 파일에 대해서는 이벤트가 처리되지만abcjson.txt과 같은 파일에 대해서는 처리되지 않음)가 포함됩니다.다음을 클릭하여 계속 진행하십시오.
-
이벤트 이용자에 이벤트를 수신할 작업을 지정하십시오. 정의된 작업 목록에서 선택할 수 있습니다. 이 예에서는
icr.io/codeengine/codeengine이미지를 참조하는myjob작업이 사용됩니다. 작업이 없는 경우, Object Storage 구독을 작성한 후 작업 이름을 지정하고 작업을 작성할 수 있습니다. 다음을 클릭하여 계속 진행하십시오. -
요약에서 Object Storage 이벤트 구독의 설정을 검토하고 필요한 경우 변경하십시오. 준비가 되면 작성을 클릭하여 Object Storage 구독을 작성하십시오.
-
-
Object Storage 구독이 작성되었으므로 이벤트 구독 페이지로 이동하여 정의된 구독 목록을 확인하십시오.
-
구독을 업데이트하려면 Object Storage 구독 페이지로 이동하십시오. 이벤트 구독 페이지에서 업데이트할 구독의 이름을 클릭하십시오.
-
Object Storage 구독 페이지에서 오브젝트 변경 유형을
delete오브젝트 변경으로 변경하십시오. 버킷 이벤트 세부사항 탭에서delete유형의 오브젝트 변경만 선택하십시오. 저장을 클릭하여 변경사항을 저장하십시오. -
myjob작업은 로그 파일에 정보를 출력하는 샘플icr.io/codeengine/codeengine작업을 참조하므로 로그를 볼 수 있습니다. 버킷에서 오브젝트가 삭제되면 작업 실행 로그에서 삭제 이벤트를 볼 수 있습니다. 콘솔에서 작업 로그 보기를 참조하십시오.
구독을 통해 작성된 작업 실행은 10분 후에 삭제됩니다.
특정 버킷을 참조하는 IBM Cloud Object Storage 이벤트 구독을 정의한 후에는 다른 버킷을 사용하도록 이 구독을 업데이트할 수 없습니다. 원하는 버킷을 참조하려면 새 구독을 작성해야 합니다.
CLI에서 작업에 대한 IBM Cloud Object Storage 이벤트 구독
시작하기 전에
-
작업을 작성합니다. 예를 들어,
icr.io/codeengine/codeengine이미지를 사용하는myjob이라는 작업을 작성하십시오. 이 이미지는codeengine.go에서 가져온 것으로, IBM Cloud Code Engine GitHub 저장소의 샘플 에서 확인할 수 있습니다.ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine
-
ibmcloud ce subscription cos create명령을 사용하여 작업을 IBM Cloud Object Storage 이벤트 생성자에 연결하십시오.ibmcloud ce subscription cos create --name mycosevent --destination-type job --destination myjob --bucket mybucket -
구독이 작성된 후 구독에 대한 세부사항을 보려면
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 리포지토리에서 확인하세요.
콘솔에서 작업에 대한 이벤트 정보 보기
이벤트 구독에 대한 정보를 보려면 다음을 수행하십시오.
- Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.
- 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.
샘플 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 환경 속성에 대해 설명합니다.
| 속성 | 설명 |
|---|---|
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 구독이 더 이상 필요하지 않으면 삭제할 수 있습니다.
콘솔에서 구독 삭제
- Code Engine 의 ‘프로젝트’ 페이지 에서 해당 프로젝트로 이동하세요.
- 개요 페이지에서 이벤트 구독을 클릭하여 정의된 구독 목록을 확인하십시오.
- 구독 목록에서 애플리케이션 또는 작업에서 제거할 구독을 삭제하십시오.
구독과 연관된 작업 또는 앱을 삭제해도 구독은 삭제되지 않습니다. 애플리케이션 또는 작업(또는 동일한 이름의 다른 앱 또는 작업)을 다시 작성하면 구독이 앱 또는 작업과 다시 연결됩니다.
CLI를 사용하여 구독 삭제
IBM Cloud Object Storage 구독은 ibmcloud ce subscription cos delete 명령을 사용하여 삭제할 수 있습니다.
예를 들어, mycosevent라는 IBM Cloud Object Storage 구독을 삭제하려면 다음 명령을 사용하십시오.
ibmcloud ce subscription cos delete --name mycosevent
구독과 연관된 작업 또는 앱을 삭제해도 구독은 삭제되지 않습니다. 대신, 구독은 앱 또는 작업의 가용성에 따라 달라지므로 준비 상태 false로 이동합니다. 애플리케이션 또는 작업(또는 동일한 이름의 다른 앱 또는 작업)을 다시 작성하면 구독이 다시 연결되고 준비 상태는 true가 됩니다.