0
0

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 1 year has passed since last update.

IBM Cloud Functionsのシーケンスを使ってアプリを実行する

Posted at

はじめに

以前に投稿した記事では、IBM CloudのFunctionsのPeriodicトリガーおよびCloudantトリガーを使ってアプリ(Action)を実行しました。

今回はIBM CloudのFunctionsのシーケンス機能を使い、複数のActionをチェーンさせて処理を実行するパターンを実装してみました。
具体的には、シーケンス機能を利用してCloudantデータベースへのデータ登録とデータ参照を実現します。

Cloud Functions の用語よりシーケンスの説明を引用

一連のアクションをチェーニングして、コードを記述することなく、シーケンスにまとめることができます。 シーケンスは、順番に呼び出されるアクションのチェーンであり、1 つのアクションの出力が次のアクションへの入力として渡されます。 シーケンスを作成すれば、既存のアクションを組み合わせて、素早く簡単に再利用できます。 シーケンスは、アクションと同様に、REST API から呼び出したり、イベントに応答して自動的に呼び出したりできます。

前提

  • テスト用Cloudantデータベースが作成済
  • テスト用Cloudantデータベースのデータは削除済
  • IBM Cloudが提供している2022/09/19時点の機能を用いています。

Cloudantデータベースにデータを登録するシーケンスの作成

IBM Cloud FunctionsのActionページに遷移します。
"作成"ボタンを押下します。
image.png

"アクション"を選択します。
image.png

表示されたアクションの作成画面にActionの情報を入力し、"作成"ボタンを押下します。

  • アクション名およびパッケージに任意の値を設定します。
  • ランタイムには、Node.js 16 を設定します。
    image.png

コードエディターが表示されるので、function mainを以下の内容に変更し、"保存"ボタンを押下します。
※ParameterをもとにCloudantに登録するデータを準備する処理です。


function main(params) {
  if (!params.name || !params.comment) {
    return Promise.reject({ error: 'no name or comment'});
  }

  return {
    doc: {
      createdAt: new Date(),
       name: params.name,
       email: params.email,
       comment: params.comment
    }
  };
}

メニューの"エンクロージング・シーケンス"を選択します。
image.png

"シーケンスに追加 +"リンクを押下します。
image.png

表示されたシーケンスに追加画面にシーケンスの情報を入力し、"作成&追加"ボタンを押下します。
作成するのはEntityを登録するシーケンスです。

  • "新規作成"を選択します。
  • シーケンス名およびパッケージに任意の値を設定します。
    image.png

エンクロージング・シーケンスの一覧から、作成したシーケンスの名称を押下します。
image.png

アクションの順序付け画面で、"追加 +"リンクを押下します。
image.png

アクションの追加画面で"パブリックの使用"を押下し、"Cloudant"アイコンを選択します。
image.png

以下の設定し"追加"ボタンを押下します。

  • アクションにはcreate-documentを設定します。
  • "新規バインディング"を選択します。
  • バインディングの"名前"に任意の値を設定します。
  • "インスタンス"、"資格情報"、"データベース"には、テスト用Cloudantデータベースの名称等を設定します。
    image.png

"保存"ボタンを押下します。
image.png

作成したシーケンスをテスト実行します。
"パラメーターを付けて起動"リンクを押下します。
image.png

アクションの入力データの変更画面に以下のようなパラメーター値を入力し"適用"ボタンを押下します。


{
  "name": "Hanako Suzuki",
  "email": "hanako@sample.com",
  "comment": "this is Hanako's comment"
}

image.png

"起動"ボタンを押下し、アクティベーションで処理が実行できたことを確認します。
image.png
image.png
参考 Cloudantに該当のデータが登録されている。
image.png

Cloudantデータベースのデータを参照するシーケンスの作成

IBM Cloud FunctionsのActionページに遷移し、"作成"ボタンを押下します。
image.png

"アクション"を選択し、アクションの作成画面を表示します。
image.png

フラグを設定するActionを作成します。
Actionの情報を入力し、"作成"ボタンを押下します。

  • アクション名およびパッケージに任意の値を設定します。
  • ランタイムには、Node.js 16 を設定します。
    image.png

コードエディターが表示されるので、function mainを以下の内容に変更し、"保存"ボタンを押下します。
※フラグを設定する処理です。trueに設定しないと最後の稼働確認でエラーが発生します。


function main(params) {
  return {
    params: {
      include_docs: true
    }
  };
}

メニューの"エンクロージング・シーケンス"を選択します。
image.png

"シーケンスに追加 +"リンクを押下します。
image.png

表示されたシーケンスに追加画面にシーケンスの情報を入力し、"作成&追加"ボタンを押下します。

  • "新規作成"を選択します。
  • シーケンス名およびパッケージに任意の値を設定します。
    image.png

エンクロージング・シーケンスの一覧から、作成したシーケンスの名称を押下します。
image.png

アクションの順序付け画面で、"追加 +"リンクを押下します。
image.png

アクションの追加画面で"パブリックの使用"を押下します。
"Cloudant"アイコンを選択します。
image.png

以下の設定し"追加"ボタンを押下します。

  • アクションはlist-documentsを選択します。
  • "マイバインディング"を選択します。
  • 「Cloudantデータベースにデータを登録するシーケンスの作成」で作成したバインディング名を選択します。
    image.png

アクションの順序付け画面で、"追加 +"リンクを押下します。
image.png

取得したEntityをフォーマットするActionを作成します。
アクションの追加画面で"以下を入力し、"作成&追加"ボタンを押下します。

  • アクション名およびパッケージに任意の値を設定します。
  • ランタイムには、Node.js 16 を設定します。
    image.png

アクションの順序付け画面で、作成したAction名を押下します。
image.png

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


const md5 = require('spark-md5');

function main(params) {
  return {
    entries: params.rows.map((row) => { return {
      name: row.doc.name,
      email: row.doc.email,
      comment: row.doc.comment,
      createdAt: row.doc.createdAt,
      icon: (row.doc.email ? `https://secure.gravatar.com/avatar/${md5.hash(row.doc.email.trim().toLowerCase())}?s=64` : null)
    }})
  };
}

IBM Cloud FunctionsのActionページに遷移します。

作成していたシーケンスを選択します。
image.png

アクションの順序付け画面で、"保存"ボタンを押下します。
image.png

"起動"ボタンを押下し、稼働確認を行います。
"Cloudantデータベースにデータを登録するシーケンスの作成"の稼働確認で登録したデータがアクティベーションの結果に表示されます。
image.png
image.png

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?