1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IBM Cloud FunctionsのCloudantトリガーを使ってアプリを実行する

Posted at

はじめに

IBM Cloud FunctionsのPeriodicトリガーを使ってアプリを実行するに続いて、今回はCloudantトリガーを使ってアクション(Function)を実行するパターンを実装しました。
具体的にはCloudantデータベースの更新をトリガーし、コンソールにアクションが実行されたことを出力します。

前提

  • IBM Cloudが提供している2021/12/27時点の機能を用いています。
  • コマンドは使用しません。UIのみで作業を行います。
  • トリガー、アクションは未作成の状態です。

テスト用Cloudantデータベースの作成

まずはテスト用のCloudantデータベースを作成します。
Cloudantのカタログページを表示します。
PlanはLite(Freeのプラン)を選択し"Create"ボタンを押下します。今回、他の項目はデフォルトのままです。
リソース・リストから、作成したCloudantデータベースを選択します。
image.png

"Launch Dashboard"ボタンを押下します。
image.png

"Create Database"を押下します。
image.png

Database nameに任意の値を入力し、"Create"ボタンを押下します。
image.png

続いて、テストデータを作成します。
Create Documentボタンを押下します。
image.png

エディタで任意のJSONを記述して、Create Documentボタンを押下します。
image.png

一覧にデータが追加されます。
image.png
なお、行をクリックするとエディタが表示され、JSONを変更してSave Changesボタンを押下するとデータの更新が可能です。

Cloudantトリガー&アクションの作成

IBM Cloud Functionsのページに遷移します。 
 メニューの"トリガー"を選択し、表示された画面の"作成"ボタンを押下します。
image.png

トリガーを選択します。
image.png

Cloudantを選択します。
image.png

表示された新規トリガー構成画面でトリガーの情報を入力します。

  • トリガー名に任意の値を入力します。
  • インスタンスにはテスト用に作成したClundantデータベースを選択します。

資格情報に「資格情報を作成してください」警告が出ているので、"資格情報を作成"リンクを押下します。
image.png

別タブでサービス資格情報画面が開かれので、"新規資格情報"ボタンを押下します。
image.png

資格情報の作成画面が表示されるので、デフォルトのまま"追加"ボタンを押下します。
image.png

一覧に作成した資格情報が追加されます。
image.png

元のタブに戻り、「最新表示」リンクを押下します。
image.png

作成した資格名が自動で設定されるので、"作成"ボタンを押下します。
image.png

トリガーとトリガー発生時に実行するアクションを紐づけるため、"追加"を押下します。
image.png

表示されたアクションの追加画面でアクションの情報を入力します。
今回はアクションを新規に作成するので"新規作成"を選択した状態で以下の入力を行います。

  • 任意のアクション名を記入します。
  • ランタイムは"Node.js 12"を選択します。
  • "作成&追加"ボタンを押下します。

image.png

"接続されたアクション"の一覧に作成したアクションが追加されます。
 アクションのコードを書くため、作成したアクションの名前を押下します。
image.png

コードエディターが表示されるので、function mainを以下の内容に変更し、"保存"ボタンを押下します。


function main(params) {
    var date = new Date();
    var changes = params.changes;
    console.log("Invoked at: " + date.toLocaleString());
    console.log("param dbname: " + params.dbname);
    console.log("param id: " + params.id);
    console.log("param seq: " + params.seq);
    for (var change of changes) {
        console.log("rev: " + change.rev);
    }
    return { message: 'Invoked at: ' + date.toLocaleString() };
}

なお、以下のページを参考にして、コードではイベントに含まれるパラメーターを取得し、コンソール出力するようにしました。
https://cloud.ibm.com/docs/openwhisk?topic=openwhisk-pkg_cloudant&locale=ja#cloudant_struct

動作確認

Cloudantデータベースの値を変更します。

リソース・リストから、作成したCloudantデータベースを選択します。
"Launch Dashboard"ボタンを押下します。
作成したテスト用データベースを選択します。
image.png

"テスト用Cloudantデータベースの作成"で作成したテストデータを選択します。
image.png

データを変更(変更なしでも良い)し"Save Changes"ボタンを押下します。
image.png

トリガー&アクションが動いたことを確認します。

IBM Cloud Functionsのページに遷移します。
メニューの"アクティブ化ダッシュボード"を選択します。
image.png

アクティベーション・ダッシュボード画面が表示され、アクティベーション・ログにトリガーの発生とアクションの実行が記録されていることが確認できました。
image.png

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?