LoginSignup
0
0

More than 1 year has passed since last update.

IBM Cloud FunctionsのPeriodicトリガーを使ってアプリを実行する(コマンドを使って構築)

Last updated at Posted at 2022-11-16

はじめに

以前に投稿した記事「IBM Cloud FunctionsのPeriodicトリガーを使ってアプリを実行する」ではUIのみで作業を行いました
本記事では上述の作業をコマンドを利用して行います。

前提

  • IBM Cloudが提供している2022/11/16時点の機能を用いています。

準備

  1. リンク先の手順に従って、IBM Cloud コマンド・ライン・インターフェース (CLI) をインストールします。
  2. リンク先の手順に従って、Cloud Functions プラグインをインストールします。
  3. 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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0