Periodicトリガーについて
Periodicトリガーを作成したときに、曜日や時間・分の指定はブラウザ上から簡単に行えますが、月次で実行したい場合は、cron式を使う必要があり、ブラウザからcron式で指定出来るのは、UTCのみなので、日本時間でファンクションを実行するには、CLIを使います。
CLIプラグインのインストール
$ ibmcloud plugin install cloud-functions
プラグインのインストールに失敗する場合は、古いバージョンのプラグインを試してみて下さい。
以下からダウンロード出来ます。
https://plugins.ng.bluemix.net/ui/repository.html
次でインストールできます。
$ ibmcloud pulgin install (ダウンロードしたパス)
リージョン、リソースグループ、名前空間は自身の環境に合わせてに設定して下さい。
$ ibmcloud target -r (リージョン) -g (リソースグループ)
$ ibmcloud fn property set --namespace (名前空間)
リージョンの指定は、こちらを参照。
https://cloud.ibm.com/docs/containers?topic=containers-regions-and-zones
リージョン | 指定 |
---|---|
東京 | jp-tok |
シドニー | au-syd |
ダラス | us-south |
ワシントン | us-east |
日本時間のトリガーの作成
日本時間でcron式を使ってトリガーを作成するには、CLIから次のようにします。
$ ibmcloud fn trigger create (トリガー名) \
--feed /whisk.system/alarms/alarm \
--param cron "(cron式)" --param timezone "Japan" \
ここのJapan
はAsia/Tokyo
で指定しても構いません。
cron式サンプル
毎月月初3:00AMに実行
0 3 1 * *
1年だけ、毎月10日9:00AMに実行
0 9 10 * * 2020
5年間、毎月10日9:00AMに実行
0 9 10 * * 2020-2024
月末の指定の仕方
月末を指定するL
は、上記のコマンドでは使えません。
例えば毎月月末11:00PMに実行する、次のようなcron式を指定すると、
0 23 L * *
このようなレスポンスが返ります。
"response": {
"result": {
"error": {
"error": "cron pattern '0 23 L * *' is not valid"
}
},
"size": 60,
"status": "application error",
"success": false
}
UTC限定になり、9時間の時差が発生しますが、ブラウザのcron式指定からは利用可能なようなです。(画像では、JSTに補正されています。)
他にも、日本よりも5時間進んでいるキリスィマスィ島をタイムゾーンに指定する方法もあります。
0 23 L * *(Japan)
でトリガーを作成する場合、次のように作成することができます。
$ ibmcloud fn trigger create (トリガー名) \
--feed /whisk.system/alarms/alarm \
--param cron "0 4 1 * *" --param timezone "Pacific/Kiritimati" \