はじめに
以前に投稿した記事「IBM Cloud FunctionsのPeriodicトリガーを使ってアプリを実行する」ではUIのみで作業を行いました
本記事では上述の作業をコマンドを利用して行います。
前提
- IBM Cloudが提供している2022/11/16時点の機能を用いています。
準備
- リンク先の手順に従って、IBM Cloud コマンド・ライン・インターフェース (CLI) をインストールします。
- リンク先の手順に従って、Cloud Functions プラグインをインストールします。
- 2の手順に従い、IBM Cloudへのログインと名前空間のターゲットを指定します。
Acionの作成
次の内容のJavascriptファイルoutputInvokedLogCmd.jsを作成します。
outputInvokedLogCmd.js
function main(params) {
var date = new Date();
console.log("Invoked at: " + date.toLocaleString());
console.log("param testKey: " +params.testKey);
return { message: 'Invoked at: ' + date.toLocaleString() };
}
Javascriptファイルからアクションを作成します。
ibmcloud fn action create outputInvokedLogCmd outputInvokedLogCmd.js
ok: created action outputInvokedLogCmd
アクションの一覧を表示し、アクションが作成されていることを確認します。
ibmcloud fn action list
actions
<NAMESPACE>/outputInvokedLogCmd private nodejs:16
Triggerの作成
CRON式「0/1 * * * *」を利用して、1分毎に起動されるトリガーを作成します。
ibmcloud fn trigger create every1Minute --feed /whisk.system/alarms/alarm -p cron "0/1 * * * *"
ok: invoked /whisk.system/alarms/alarm with id xxxxxxxxxxxxxxxxxxxxxxx
トリガーの一覧を表示し、トリガーが作成されていることを確認します。
ibmcloud fn trigger list
triggers
<NAMESPACE>/every1Minute private
Ruleの作成および動作確認
ActionとTriggerを紐づけるRuleを作成します。
ibmcloud fn rule create every1MinuteRule every1Minute outputInvokedLogCmd
ok: created rule every1MinuteRule
Ruleの一覧を表示し、Ruleが作成されていることを確認します。
ibmcloud fn rule list
rules
<NAMESPACE>/every1MinuteRule private active
Ruleが作成され、ActionとTriggerが紐づいたことで1分おきにActionが実行されるようになっています。
アクティベーションを確認しActionが実行されていることを確認します。(直近の4行の未出力するコマンドです)
ibmcloud fn activation list -l 4
Datetime Activation ID Kind Start Duration Status Entity
2022-11-16 23:29:00 8f3ad4393364478dbad4393364278d02 nodejs:16 cold 43ms success <NAMESPACE>/outputInvokedLogCmd:0.0.1
2022-11-16 23:29:00 d216187b86cb411b96187b86cbe11b97 trigger warm 0s success <NAMESPACE>/every1Minute:0.0.1
2022-11-16 23:28:01 6013f890b6724d0e93f890b672ed0e22 nodejs:16 warm 4ms success <NAMESPACE>/outputInvokedLogCmd:0.0.1
2022-11-16 23:28:01 ddd190be648c48489190be648ca84859 trigger warm 0s success <NAMESPACE>/every1Minute:0.0.1
1分おきにActionが実行し続けるのでRuleとTriggerを削除します。
ibmcloud fn rule delete every1MinuteRule
ok: deleted rule every1MinuteRule
ibmcloud fn trigger delete every1Minute
ok: deleted trigger every1Minute