IBM Cloud Object Storage イベント・プロデューサーの使用
IBM Cloud Object Storage サブスクリプションは、Object Storage バケットに対する変更を listen します。 バケットのサブスクリプションを作成すると、アプリまたはジョブは、そのバケットに対する変更が正常に実行されるたびに個別のイベントを受信します。 write
イベント、delete
イベント、all
イベントなど、さまざまなイベントをサブスクライブできます。 Object
Storage サブスクリプションは、プロジェクト 1 つにつき最大 100 個作成できます。
IBM Cloud Object Storageイベント・プロデューサーのセットアップ
開始するには、Code EngineでサポートされているいずれかのリージョンでIBM Cloud Object Storageサービス・インスタンスの作成および地域バケットの作成を実行しなければなりません。
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」**を選択します。
- **「選択された属性に基づくリソース」と「ソース・サービス・インスタンス」**を選択します。 次に、Code Engine プロジェクトを選択します。
- **「ターゲット・サービス」で「Cloud Object ストレージ (Cloud Object Storage)」**を選択します。
- 選択した属性に基づくリソースおよびサービス・インスタンスを選択します。 次に、IBM Cloud Object Storage インスタンスを選択します。
- **「通知マネージャー (Notifications Manager)」役割を割り当て、「許可」**をクリックします。
ibmcloud iam authorization-policy-create
コマンドを使用してプロジェクトに通知マネージャー役割を割り当てることもできます。
アプリケーションのIBM Cloud Object Storageイベントへのサブスクライブ
コンソールまたは CLI からIBM Cloud Object Storageサブスクリプションを操作して、イベントがCode Engineアプリケーションに送信されるようにできます。
デフォルトでは、イベントは、宛先アプリケーションのルート 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 のプロジェクトページから、お客様のプロジェクトにアクセスしてください。
-
「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックします。
-
「イベント・サブスクリプション (Event subscriptions)」ページで**「作成」**をクリックして、サブスクリプションを作成します。
-
「イベント・サブスクリプションの作成」ページで、以下の手順を実行します。
- イベント・タイプの場合は、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 repoを確認してください。
コンソールでのアプリケーションのイベント情報の表示
イベント・サブスクリプションに関する情報を表示するには、次のようにします。
- Code Engine のプロジェクトページから、お客様のプロジェクトにアクセスしてください。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
アプリケーションがサンプル cos-listen
アプリケーションのように情報をログ・ファイルに出力する場合は、イベント・コンシューマー・アプリケーションのログ・ファイルを表示します。 コンソールでのアプリのログの表示を参照してください。
CLI でのアプリケーションのイベント情報の表示
cos-listen
アプリケーションと同じように、アプリケーションが情報をログ・ファイルに出力する場合は、CLI コマンド ibmcloud ce app logs
を使用して、送信された情報を表示できます。
アプリケーションのイベント情報を表示する前に、まず 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 repoを確認してください。
アプリケーションに配信されるイベントの 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 のどちらかです。 イベントの作成または更新が発生すると、ce-type に対してwrite アクションが使用されます。 |
例
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イベントへのサブスクライブ
コンソールまたは CLI からIBM Cloud Object Storageサブスクリプションを処理して、イベントがCode Engineジョブに送信されるようにできます。
ジョブのイベント・サブスクリプションを作成すると、トリガーされるイベントごとにジョブ実行が作成されます。このジョブ実行には、そのジョブに関連する環境変数が含まれます。 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 のプロジェクトページから、お客様のプロジェクトにアクセスしてください。
-
「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックします。
-
「イベント・サブスクリプション (Event subscriptions)」ページで**「作成」**をクリックして、サブスクリプションを作成します。
-
イベント購読の作成ページから、以下の手順を完了します
-
イベント・タイプの場合は、Cloud Object Storageタイルを選択します。 **「次へ」**をクリックします。
-
一般には、Object Storageサブスクリプションの名前 (例えば、
mycos-job
) を指定します。 オプションで、イベント属性を指定できます。 イベント・コンシューマーがジョブの場合、イベント属性は環境変数として使用可能です。 **「次へ」**をクリックして、先に進みます。 -
バケットイベントの詳細については、既存の Object Storage バケットの名前を選択または入力し、イベントをトリガーしたいオブジェクトの変更の種類を指定します。
オブジェクト変更タイプでは、 Object Storage オブジェクトに対するアクションのイベントを受信するタイミングを指定します。オブジェクト変更のタイプとして、以下のいずれか、または両方を選択できます
- 新しいオブジェクトが作成または更新されるたびにイベントを受信するには 、Create and update を使用します。 更新されたオブジェクトについては、選択されたバケット内の既存のオブジェクトが再アップロードされます。
- 既存のオブジェクトがバケットから削除されるたびにイベントを受信するには 、[削除] を使用します。
また、オプションとして、バケット内のオブジェクトをフィルタリングしてサブスクリプションのイベントをトリガーするために、オブジェクト名の接頭辞または接尾辞を指定することもできます。 オブジェクト名の接頭語またはオブジェクト名の接尾語の値を指定して、イベントを受信したいオブジェクト名の先頭(接頭語)または末尾(接尾語)に一致する文字列を示します。 この値は、 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 repoを確認してください。
コンソールでのジョブのイベント情報の表示
イベント・サブスクリプションに関する情報を表示するには、次のようにします。
- Code Engine のプロジェクトページから、お客様のプロジェクトにアクセスしてください。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
ジョブがサンプル 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 repoを確認してください。
ジョブに配信されるイベントの環境変数
ジョブに配信されるすべてのイベントは、環境変数として受信されます。 これらの環境変数には、 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 のプロジェクトページから、お客様のプロジェクトにアクセスしてください。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
- アプリケーションまたはジョブから削除するサブスクリプションを、サブスクリプションのリストから削除します。
サブスクリプションに関連付けられているアプリまたはジョブを削除しても、サブスクリプションは削除されません。 アプリケーションまたはジョブ (あるいは同じ名前の別のアプリまたはジョブ) を再作成すると、サブスクリプションはそのアプリまたはジョブに再接続します。
CLI でのサブスクリプションの削除
ibmcloud ce subscription cos delete
コマンドを実行して、IBM Cloud Object Storageサブスクリプションを削除できます。
例えば、以下のコマンドを使用して、mycosevent
という名前のIBM Cloud Object Storageサブスクリプションを削除します。
ibmcloud ce subscription cos delete --name mycosevent
サブスクリプションに関連付けられているアプリまたはジョブを削除しても、サブスクリプションは削除されません。 代わりに、サブスクリプションはアプリまたはジョブの可用性に依存するため、 false
の作動可能状態に移行します。 アプリケーションまたはジョブ (あるいは同じ名前の別のアプリまたはジョブ) を再作成すると、サブスクリプションは再接続され、作動可能状態はtrue
になります。