定期タイマー (cron) イベント・プロデューサーの使用
定期タイマー (cron) イベント・プロデューサーは、一定間隔でイベントを生成します。 この間隔は、分、時、日、月の単位で、または複数の異なる時間間隔の組み合わせでスケジュールできます。 cronイベントを受け取るためにCode Engineアプリ、関数、ジョブをサブスクライブすることができます。
定期タイマーイベントの購読は、標準的なcrontab構文を使用して、分、時、月、年、曜日のフィールドである'* * * * *
のフォーマットで間隔の詳細を指定する。 例えば、午前 0 時のイベントをスケジュールするには、0 0 * * *
と指定します。 毎週金曜日の午前 0 時のイベントをスケジュールするには、0 0 * * 5
と指定します。 crontabの詳細については、CRONTABを参照のこと。
周期タイマーイベントプロデューサーをサブスクライブする場合、サブスクリプションのデスティネーション(アプリ、ファンクション、またはジョブ)とデスティネーションタイプを指定する必要があります。 スケジュールを指定しない場合は、デフォルトの * * * * *
(1 分ごと) が使用されます。
Code Engineには、プロジェクト内の定期タイマーサブスクリプションのクォータと、サブスクリプションの上限があります。 Code Engine の制限について詳しくは、Code Engine の制限と割り当て量を参照してください。
アプリケーションの定期タイマー (cron) イベントのサブスクライブ
コンソールまたはCLIから定期タイマー購読を操作できます。
イベントは、HTTP POST 要求としてアプリケーションに送信されます。 イベントに含まれる情報について詳しくは、イベントの HTTP ヘッダーおよび本文の情報を参照してください。
コンソールでのアプリケーションの定期タイマー (cron) イベントのサブスクライブ
コンソールから、アプリケーションの周期タイマーイベントサブスクリプションを作成および更新できます。
開始前に
- プロジェクトを作成します。
- アプリケーションを作成します。 例えば、
icr.io/codeengine/cron
イメージを使用するmyapp
というアプリケーションを作成します。 この画像は'cron.go
から作られたもので、' IBM Cloud Code Engine'GitHubレポのサンプルから入手できる。
コンソールからアプリケーションの周期タイマーイベントサブスクリプションを作成および更新するには、以下の手順を実行します。
-
Code EngineからProjectsページから、プロジェクトに移動します。
-
「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックします。
-
「イベント・サブスクリプション (Event subscriptions)」ページで**「作成」**をクリックして、サブスクリプションを作成します。
-
イベントサブスクリプションの作成ページから、以下のステップを完了します:
- イベント・タイプの場合は、「定期的タイマー」タイルを選択します。 **「次へ」**をクリックします。
- **「一般」**に、定期タイマー・サブスクリプションの名前 (例えば
myptimer
) を入力します。 オプションで、イベント属性を指定できます。 定期タイマー・イベントのコンシューマーがアプリケーションの場合、使用できるイベント属性は HTTP ヘッダーとなることに注意してください。 イベントのコンシューマーがジョブの場合は、使用できるイベント属性は環境変数になります。 **「次へ」**をクリックして、先に進みます。 - **「スケジュール」**に、イベントのタイミングに関する情報を指定します。 定期タイマーイベントプロデューサーは、インターバルの詳細を指定するために、標準的なcrontab構文を使用する。 提供されているパターンから間隔を選択するか、
0 0 * * *
(これは、毎日午前 0 時にイベントを発生させることを指定している) などの独自のカスタム cron 式を入力します。 この例では、毎日、毎時、毎分のスケジュール・パターンを選択します。 cron 式が自動的に生成されることに注意してください。 日、時、分のパターンと cron 式は協定世界時 (UTC) で表されます。 スケジュールを指定しない場合、このイベント・サブスクリプションは 1 分ごとにイベントを送信します。 予定されているスケジュール済みのイベントのリストが表示されます。 これらのスケジュール済みイベントは、ご使用のタイム・ゾーンの形式で表示されることに注意してください。 **「次へ」**をクリックして、先に進みます。 - **「カスタム・イベント・データ (Custom event data)」**に、イベント・メッセージの本文に含めるデータを入力します。 メッセージは、プレーン・テキストまたは base64 形式で指定できます。 この例では、イベント・メッセージの本文として
hello stranger
というテキストを指定します。 メッセージが base64 形式の場合、イベントの送信時にメッセージをデコードすることを選択できます。 カスタム・イベント・データのコンテンツ・タイプを指定することもできます。 **「次へ」**をクリックして、先に進みます。 - **「イベント・コンシューマー (Event consumer)」**に、イベントを受信するアプリケーションまたはジョブを指定します。 定義済みのアプリケーションとジョブのリストから選択できることに注意してください。 この例では、
icr.io/codeengine/cron
イメージを参照するmyapp
アプリケーションを使用します。 アプリまたはジョブをまだ作成していない場合は、アプリケーションまたはジョブの名前を指定し、定期タイマーサブスクリプションを作成した後に アプリケーションを作成 するか、ジョブを作成 することができます。 アプリケーションの場合のみ、オプションでパスを指定できます。 デフォルトでは、イベントは、宛先アプリケーションのルート URL にルーティングされます。 パスを指定すると、アプリ内の別の宛先にイベントを送信できます。 例えば、サブスクリプション・パスに/events
が指定されている場合、イベントはhttps://<base application URL>/events
に送信されます。 **「次へ」**をクリックして、先に進みます。 - **「サマリー」**で、定期タイマー・イベント・サブスクリプションの設定を確認し、必要に応じて変更を加えます。 準備ができたら、Create(作成)をクリックし、Periodic timer(定期タイマー)サブスクリプションを作成します。
-
定期タイマーのサブスクリプションが作成されたので、イベントサブスクリプションページに移動し、定義されたサブスクリプションのリストを表示します。
-
サブスクリプションを更新するには、定期タイマーのサブスクリプションページに移動します。 イベント・サブスクリプションのページで、更新するサブスクリプションの名前をクリックします。
-
定期タイマーの購読ページから、イベントメッセージのデータを変更します。 **「カスタム・イベント・データ (Custom event data)」**タブで、イベント・データを
hello sunshine
に変更します。 **「保存」**をクリックして変更を保存します。 -
myapp
アプリケーションは、ログ・ファイルに情報を出力するサンプルcron
アプリケーションを参照するため、ログを表示できます。myapp
イベント・コンシューマー・アプリケーションのアプリケーション・ログを表示し、イベント・メッセージがhello sunshine
であることを確認します。 コンソールでのアプリのログの表示を参照してください。
CLI でのアプリケーションの定期タイマー (cron) イベントのサブスクライブ
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成します。
- アプリケーションを作成します。 例えば、
icr.io/codeengine/cron
イメージを使用するmyapp
というアプリケーションを作成します。 この画像は'cron.go
から作られ、'IBM Cloud Code Engine「GitHubレポのサンプルから利用できる。
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
例えば、毎日午前0時に'myapp
というアプリにイベントを送信するcronサブスクリプションを作成する:
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 バイト送信できます。 詳しくは、Code Engine の制限と割り当て量を参照してください。 - cron サブスクリプションでは、デフォルトでは
UTC
タイム・ゾーンが使用されます。 タイム・ゾーンを変更するには、--time-zone
コマンドまたはsub cron create
コマンドでsub cron update
オプションを指定します。 有効なタイムゾーン値については、 TZデータベースを参照してください。kubectl
を使用してサブスクリプションを作成する場合は、タイム・ゾーンを指定しないと、UTC
タイム・ゾーンが割り当てられるので注意してください。 - アプリまたはジョブ・イベント・コンシューマーをまだ作成していない場合は、**
sub cron create
**コマンドで--force
オプションを使用して、cron イベント・サブスクリプションを強制的に作成します。 アプリケーションまたはジョブの名前を指定し、cron サブスクリプションの作成後に、アプリケーションの作成または ジョブの作成を行うことができます。
- デフォルトでは、イベントは、宛先アプリケーションのルート URL にルーティングされます。
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 * * *
(毎日午前 0 時)、Ready 状態が true
であることがわかります。
CLI を使用したcron サブスクリプションの更新
CLI を使用して cron サブスクリプションを更新するには、ibmcloud ce subscription cron update
コマンドを使用します。 例えば、mycronevent
サブスクリプションを更新して、myapp
というアプリにイベントを 2 分ごとに送信するようにスケジュールを変更するには、次のようにします。
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) イベントのサブスクライブを参照してください。 コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。
コンソールでのアプリケーションのイベント情報の表示
イベント・サブスクリプションに関する情報を表示するには、次のようにします。
- Code EngineからProjectsページから、プロジェクトに移動します。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
アプリケーションがサンプル 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]
ロギングについて詳しくは、ログの表示を参照してください。
コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。
アプリケーションに配信されるイベントの 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 本文は、イベントそのものが入っており、サブスクリプションの作成時または更新時に指定した形式になります。
関数の定期タイマー(cron)イベントの購読
コンソールまたはCLIから定期タイマー購読を操作できます。
イベントはHTTP POSTリクエストとして関数に送信される。 イベントに含まれる情報について詳しくは、イベントの HTTP ヘッダーおよび本文の情報を参照してください。
コンソールから機能の定期タイマー(cron)イベントを購読する
コンソールから関数の周期タイマーイベントサブスクリプションを作成および更新できます。
開始前に
- プロジェクトを作成します。
- 関数を作成します。 例えば、以下のサンプル・インライン・コードを使用する
myfun
という関数を作成します。
/**
* 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
}
コンソールからファンクションの周期タイマーイベントサブスクリプションを作成および更新するには、以下の手順を実行します。
-
Code EngineからProjectsページから、プロジェクトに移動します。
-
「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックします。
-
「イベント・サブスクリプション (Event subscriptions)」ページで**「作成」**をクリックして、サブスクリプションを作成します。
-
イベントサブスクリプションの作成ページから、以下のステップを完了します:
- イベント・タイプの場合は、「定期的タイマー」タイルを選択します。 **「次へ」**をクリックします。
- **「一般」**に、定期タイマー・サブスクリプションの名前 (例えば
myptimer
) を入力します。 オプションで、イベント属性を指定できます。 定期タイマー・イベントのコンシューマーがアプリケーションの場合、使用できるイベント属性は HTTP ヘッダーとなることに注意してください。 イベント・コンシューマーが関数の場合、イベント属性は、params
オブジェクトの__ce_headers
プロパティーでキーと値のペアとして使用できます。 **「次へ」**をクリックして、先に進みます。 - **「スケジュール」**に、イベントのタイミングに関する情報を指定します。 定期タイマーイベントプロデューサーは、インターバルの詳細を指定するために、標準的なcrontab構文を使用する。 提供されているパターンから間隔を選択するか、
0 0 * * *
(これは、毎日午前 0 時にイベントを発生させることを指定している) などの独自のカスタム cron 式を入力します。 この例では、毎日、毎時、毎分のスケジュール・パターンを選択します。 cron 式が自動的に生成されることに注意してください。 日、時、分のパターンと cron 式は協定世界時 (UTC) で表されます。 スケジュールを指定しない場合、このイベント・サブスクリプションは 1 分ごとにイベントを送信します。 予定されているスケジュール済みのイベントのリストが表示されます。 これらのスケジュール済みイベントは、ご使用のタイム・ゾーンの形式で表示されることに注意してください。 **「次へ」**をクリックして、先に進みます。 - **「カスタム・イベント・データ (Custom event data)」**に、イベント・メッセージの本文に含めるデータを入力します。 メッセージは、プレーン・テキストまたは base64 形式で指定できます。 この例では、イベント・メッセージの本文として
hello stranger
というテキストを指定します。 メッセージが base64 形式の場合、イベントの送信時にメッセージをデコードすることを選択できます。 カスタム・イベント・データのコンテンツ・タイプを指定することもできます。 **「次へ」**をクリックして、先に進みます。 - 「イベント・コンシューマー」 で、コンポーネント・タイプ
Function
を選択し、イベントを受信する関数を指定します。 定義された関数のリストから選択できることに注目してほしい。 この例では、サンプル・インライン・コードを使用するmyfun
関数を使用します。 関数をまだ作成していない場合は、定期タイマー・サブスクリプションの作成後に、関数の名前と インライン・コードを使用した関数ワークロードの作成 を指定できます。 **「次へ」**をクリックして、先に進みます。 - **「サマリー」**で、定期タイマー・イベント・サブスクリプションの設定を確認し、必要に応じて変更を加えます。 準備ができたら、Create(作成)をクリックし、Periodic timer(定期タイマー)サブスクリプションを作成します。
-
定期タイマーのサブスクリプションが作成されたので、イベントサブスクリプションページに移動し、定義されたサブスクリプションのリストを表示します。
-
サブスクリプションを更新するには、定期タイマーのサブスクリプションページに移動します。 イベント・サブスクリプションのページで、更新するサブスクリプションの名前をクリックします。
-
定期タイマーの購読ページから、イベントメッセージのデータを変更します。 「カスタム・イベント・データ」 タブで、イベント・データを
{ "hello": "world" }
に変更し、 「カスタム・イベント・データのコンテンツ・タイプ」 としてapplication/json
を選択します。 **「保存」**をクリックして変更を保存します。 -
myfun
関数は、params
オブジェクト全体をログ・ファイルに出力するサンプル・インライン・コードを使用するため、ログを表示して、関数が呼び出されたことを確認できます。myfun
イベント・コンシューマー関数の関数ログを表示し、params
オブジェクトにキーと値のペアhello: world
が含まれていることを確認します。params
オブジェクトのbody
フィールドに Base64 エンコード値が含まれていることも確認できます。{ "hello": "world" }
コンソールからの機能ログの表示 を参照してください。
CLIで機能の定期タイマー(cron)イベントを購読する
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成します。
- 関数を作成します。 例えば、以下のサンプル・インライン・コードを使用する
myfun
という関数を作成します。
/**
* 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
例えば、毎日午前0時に'myfun
というアプリにイベントを送信するcronサブスクリプションを作成する:
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 バイト送信できます。 詳しくは、Code Engine の制限と割り当て量を参照してください。 - cron サブスクリプションでは、デフォルトでは
UTC
タイム・ゾーンが使用されます。 タイム・ゾーンを変更するには、--time-zone
コマンドまたはsub cron create
コマンドでsub cron update
オプションを指定します。 有効なタイムゾーン値については、 TZデータベースを参照してください。kubectl
を使用してサブスクリプションを作成する場合は、タイム・ゾーンを指定しないと、UTC
タイム・ゾーンが割り当てられるので注意してください。 - アプリまたはジョブ・イベント・コンシューマーをまだ作成していない場合は、**
sub cron create
**コマンドで--force
オプションを使用して、cron イベント・サブスクリプションを強制的に作成します。 クーロン・サブスクリプションの作成後に、関数の名前を指定できます。 関数の作成
- 周期タイマーイベントのデータサイズは最大4096バイトに制限される。 したがって、
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 * * *
(毎日午前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) イベントのサブスクライブを参照してください。 コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。
コンソールから関数のイベント情報を見る
イベント予約に関する情報を見るには:
- Code EngineからProjectsページから、プロジェクトに移動します。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
サンプルの'codeengine
ジョブのように、関数がログファイルに情報を出力する場合は、その関数のログファイルを表示します。 コンソールでのジョブのログの表示を参照してください。
関数に配信されるイベントのCronヘッダーとボディ情報
関数に配信されるすべてのイベントは、HTTP POSTメッセージとして受信されます。 イベントには、イベントに関する情報のキー・ビットを素早く判別するのに役立つ、特定の HTTP ヘッダーが含まれています。 HTTP ヘッダーは、関数の呼び出しに使用される params
オブジェクトの __ce_headers
プロパティーに保管されます。 詳しくは「CloudEvents
スペックを参照のこと。
ヘッダー
以下の表では、定期タイマー (cron) イベントの __ce_headers
のキーと値のペアについて説明します。
ヘッダー | 説明 |
---|---|
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) イベントのサブスクライブ
コンソールから、ジョブの周期タイマーイベントサブスクリプションを作成および更新できます。
開始前に
- プロジェクトを作成します。
- ジョブを作成します。 例えば、
codeengine
イメージを使用するmyjob
という名前のジョブを作成します。 この画像は'codeengine.go
から作られたもので、'IBM Cloud Code Engine'GitHubレポのサンプルから入手できる。
コンソールからジョブの定期タイマーイベントサブスクリプションを作成および更新するには、以下の手順を実行します。
-
Code EngineからProjectsページから、プロジェクトに移動します。
-
「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックします。
-
「イベント・サブスクリプション (Event subscriptions)」ページで**「作成」**をクリックして、サブスクリプションを作成します。
-
イベントサブスクリプションの作成ページから、以下のステップを完了します:
- **「一般」**に、定期タイマー・サブスクリプションの名前 (例えば
myptimer2
) を入力します。 オプションで、イベント属性を指定できます。 定期タイマー・イベントのコンシューマーがアプリケーションの場合、使用できるイベント属性は HTTP ヘッダーとなることに注意してください。 イベントのコンシューマーがジョブの場合は、使用できるイベント属性は環境変数になります。 **「次へ」**をクリックして、先に進みます。 - **「スケジュール」**に、イベントのタイミングに関する情報を指定します。 定期タイマーイベントプロデューサーは、インターバルの詳細を指定するために、標準的なcrontab構文を使用する。 提供されているパターンから間隔を選択するか、
0 0 * * *
(これは、毎日午前 0 時にイベントを発生させることを指定している) などの独自のカスタム cron 式を入力します。 この例では、毎日、毎時、毎分のスケジュール・パターンを選択します。 cron 式が自動的に生成されることに注意してください。 日、時、分のパターンと cron 式は協定世界時 (UTC) で表されます。 スケジュールを指定しない場合、このイベント・サブスクリプションは 1 分ごとにイベントを送信します。 予定されているスケジュール済みのイベントのリストが表示されます。 これらのスケジュール済みイベントは、ご使用のタイム・ゾーンの形式で表示されることに注意してください。 **「次へ」**をクリックして、先に進みます。 - **「カスタム・イベント・データ (Custom event data)」**に、イベント・メッセージの本文に含めるデータを入力します。 メッセージは、プレーン・テキストまたは base64 形式で指定できます。 この例では、イベント・メッセージの本文として
hello stranger
というテキストを指定します。 メッセージが base64 形式の場合、イベントの送信時にメッセージをデコードすることを選択できます。 カスタム・イベント・データのコンテンツ・タイプを指定することもできます。 **「次へ」**をクリックして、先に進みます。 - **「イベント・コンシューマー (Event consumer)」**に、イベントを受信するアプリケーションまたはジョブを指定します。 定義済みのアプリケーションとジョブのリストから選択できることに注意してください。 この例では、
icr.io/codeengine/codeengine
イメージを参照するmyjob
ジョブを使用します。 まだジョブを作成していない場合は、ジョブ名を指定し、定期タイマーのサブスクリプションを作成した後に ジョブを作成 することができます。 **「次へ」**をクリックして、先に進みます。 - **「サマリー」**で、定期タイマー・イベント・サブスクリプションの設定を確認し、必要に応じて変更を加えます。 準備ができたら、Create(作成)をクリックし、Periodic timer(定期タイマー)サブスクリプションを作成します。
- **「一般」**に、定期タイマー・サブスクリプションの名前 (例えば
-
定期タイマーのサブスクリプションが作成されたので、イベントサブスクリプションページに移動し、定義されたサブスクリプションのリストを表示します。
-
サブスクリプションを更新するには、定期タイマーのサブスクリプションページに移動します。 イベント・サブスクリプションのページで、更新するサブスクリプションの名前をクリックします。
-
定期タイマーの購読ページから、イベントメッセージのデータを変更します。 **「カスタム・イベント・データ (Custom event data)」**タブで、イベント・データを
hello sunshine
に変更します。 **「保存」**をクリックして変更を保存します。 -
myjob
ジョブは、ログ・ファイルに情報を出力するサンプルcodeengine
アプリケーションを参照しているので、そのログを確認します。myjob
イベント・コンシューマー・ジョブのジョブ・ログを表示し、イベント・メッセージがhello sunshine
であることを確認します。 コンソールでのジョブのログの表示を参照してください。
CLI でのジョブの定期タイマー (cron) イベントのサブスクライブ
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成します。
- ジョブを作成します。 例えば、
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 sub cron create
コマンドを使用して、CLIでジョブを定期的なタイマー・サブスクリプションに接続する。
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 バイト送信できます。 詳しくは、Code Engine の制限と割り当て量を参照してください。 - cron サブスクリプションでは、デフォルトでは
UTC
タイム・ゾーンが使用されます。 タイム・ゾーンを変更するには、--time-zone
コマンドまたはsub cron create
コマンドでsub cron update
オプションを指定します。 有効なタイムゾーン値については、 TZデータベースを参照してください。kubectl
を使用してサブスクリプションを作成する場合は、タイム・ゾーンを指定しないと、UTC
タイム・ゾーンが割り当てられるので注意してください。 - アプリまたはジョブ・イベント・コンシューマーをまだ作成していない場合は、**
sub cron create
**コマンドで--force
オプションを使用して、cron イベント・サブスクリプションを強制的に作成します。 アプリケーションまたはジョブの名前を指定し、cron サブスクリプションの作成後に、アプリケーションの作成または ジョブの作成を行うことができます。
- 周期タイマーイベントのデータサイズは最大4096バイトに制限される。 したがって、
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 分間隔)、Ready 状態が true
であることがわかります。
サブスクリプションで作成されたジョブ実行は 10 分後に削除されます。
CLI (ジョブ) を使用した cron サブスクリプションの更新
CLI を使用して cron サブスクリプションを更新するには、ibmcloud ce subscription cron update
コマンドを使用します。 例えば、mycronevent
サブスクリプションを更新して、myapp
というアプリにイベントを 2 分ごとに送信するようにスケジュールを変更するには、次のようにします。
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
コンソールでのジョブのイベント情報の表示
イベント・サブスクリプションに関する情報を表示するには、次のようにします。
- Code EngineからProjectsページから、プロジェクトに移動します。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
サンプル 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 によって送信される環境変数について詳しくは、イベントの環境変数を参照してください。
コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。
ジョブに配信されるイベントの環境変数
ジョブに配信されるすべてのイベントは、環境変数として受信されます。 これらの環境変数は「CE_
」というプレフィックスを含み、「CloudEvents
仕様に基づいている。
各イベントには、イベントがジョブに配信されるたびに表示されるいくつかの共通の環境変数が含まれています。 各イベントの実際の変数のセットには、これより多くのオプションが含まれる可能性があります。 詳しくは'CloudEvent
属性を参照。
cron イベントに固有の環境変数について、以下の表で説明します。
変数 | 説明 |
---|---|
CE_DATA |
イベントのデータ (本文)。 クーロン・イベントについての 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) サブスクリプションは削除できます。
コンソールからのサブスクリプションの削除
- Code EngineからProjectsページから、プロジェクトに移動します。
- 「概要」ページで、**「イベント・サブスクリプション (Event subscriptions)」**をクリックし、定義済みのサブスクリプションのリストを表示します。
- アプリケーションまたはジョブから削除するサブスクリプションを、サブスクリプションのリストから削除します。
アプリまたはジョブを削除しても、サブスクリプションは削除されません。
CLI でのサブスクリプションの削除
ibmcloud ce sub cron delete
コマンドまたは ibmcloud ce sub cos delete
コマンドを実行してサブスクリプションを削除できます。
例えば、mycronevent2
という cron サブスクリプションを削除します。
ibmcloud ce subscription cron delete --name mycronevent2
アプリまたはジョブを削除しても、サブスクリプションは削除されません。 その代わりに、CLI で、サブスクリプションの Ready 状態が false
になります。サブスクリプションは、アプリケーションまたはジョブが使用可能であることに依存しているからです。 そのアプリまたはジョブ (または同じ名前の別のアプリまたはジョブ) を再作成すると、サブスクリプションが再び関連付けられ、Ready 状態が true
になります。