クラウド実行環境向けフローの作成
概要
クラウド実行環境で実行するフローは、「クラウド実行環境とは」で記載したように、通常のNode-REDのフローと差異があります。
ここでは、この差異を踏まえたクラウド実行環境向けのフローの作り方を説明します。
準備
LCDP in / outノードのインポート
クラウド実行環境で実行するフローは、LCDP inノードから始まり、LCDP outノードで終わる必要があります。
LCDP in / outノードは、Discover Assetsに公開していますので、以下の手順でプロジェクトにインポートしてください。
- 検索欄に
lcdp-toolkit
と入力し、プルダウンから名称
を選択してください lcdp-toolkit
のオフィシャルアセット(enebular
の帯付きのアセット)が表示されますのでクリックします- 右上の
インポート
ボタンを押します - インポート先を選択するダイアログが表示されますので、インポート先のプロジェクト名と、このアセットに対するコラボレーターの権限を設定し、
インポート
ボタンを押します
クラウド実行環境の作成
プロジェクトにクラウド実行環境を作成します。 作成方法については、「クラウド実行環境の作成」を参照ください。
フローの作成方法
フローの作成
「フローの作成」を参照し、フローを追加してください。
フローの作成は、フローエディターか、enebular editorで行います。
フローエディターは、フローの概要タブの右側に表示された編集
ボタンを押すと起動します。
enebular editorで行う場合は、お使いのPCにenebular editorをインストールする必要があります。「enebular editor」を参照し、準備してください。
フローの編集
LCDP in / outノードの配置
フローエディターを開くと、左側にパレットが表示され、その右隣にフローを編集するワークスペースが表示されます。
LCDP in / outノードのインポートを実施済みであれば、パレットのネットワークカテゴリにLCDP in
ノードと、LCDP out
ノードがあります。
これらのノードをワークスペースにドラッグ&ドロップします。
クラウド実行環境にデプロイしたノードが実行されると、LCDP inノードが実行されます。
このとき、LCDP inノードが出力するmsgの内容は以下です(HTTPトリガー、スケジュールトリガーのどちらのトリガーから呼び出されたかに応じ内容は異なります)。
項目 | HTTPトリガー | スケジュールトリガー | エージェント実行環境からのメッセージ受信 | テーブルの更新トリガー | SlackBot I/F | 補足 |
---|---|---|---|---|---|---|
msg.triggeredBy | http | scheduler | agent | ds-table-changed | slack-bot | この値を利用してトリガーの種類を判別ください。 |
msg.uhuru | コンテキスト情報など | コンテキスト情報など | コンテキスト情報など | コンテキスト情報など | コンテキスト情報など | ウフル作成のノードが複数のノードにまたがって利用する情報を保持します。フローの実行時に変更、削除を行わないでください。 |
msg.payload | HTTPのクエリパラメーターやbody部 | {} | {} | テーブルの更新内容 *1 | Slack Payload | |
msg.req | HTTPのヘッダー、メソッド等 | - | - | - | - | HTTPトリガーの場合のみ存在します。 |
*1: テーブルの更新内容は以下の形式です。
{
tableId: <更新のあったテーブルID>,
eventName: <更新の種類(INSERT/MODIFY/REMOVEのいずれか)>,
oldItem: <更新前のアイテム(INSERTの場合は含まない)>,
newItem: <更新後のアイテム(REMOVEの場合は含まない)>
}
詳細については、LCDP inノードの情報タブのヘルプをご参照ください。
LCDP outへ入力するmsgの構造を以下に示します。
項目 | HTTPトリガー | スケジュールトリガー | エージェント実行環境からのメッセージ受信 | テーブルの更新トリガー | SlackBot I/F | 補足 |
---|---|---|---|---|---|---|
msg.uhuru | コンテキスト情報など | コンテキスト情報など | コンテキスト情報など | コンテキスト情報など | コンテキスト情報など | LCDP inノードが設定した値。 |
msg.payload | HTTPレスポンスで返す値 | - | - | - | - | |
msg.statusCode | HTTPレスポンスで返すステータスコード(デフォルト200) | - | - | - | - | |
msg.headers | HTTPレスポンスで返すヘッダー情報 | - | - | - | - | |
msg.cookies | HTTPレスポンスで返すCookie情報(任意) | - | - | - | - | |
msg.isBase64encoded | HTTPレスポンスの内容がBase64エンコードされているかを表す(デフォルトfalse) | - | - | - | - |
詳細については、LCDP outノードの情報タブのヘルプをご参照ください。
環境変数の利用
クラウド実行環境に設定した環境変数をフローから参照できます。参照方法については、Node-REDの「環境変数を利用する」のページを参照ください。
クラウド実行環境に環境変数を設定する方法については、「環境変数」を参照ください。
異なるオリジンからのアクセス方法
異なるオリジンからクラウド実行環境のHTTPトリガーで設定したURLにアクセスしたとき、CORSエラーが発生します。
HTTPレスポンスで返すヘッダー情報msg.headers
に、CORSエラーを回避するために必要なヘッダー情報をフローで設定することにより、異なるオリジンからのアクセスを許可できるようになります。
詳細については、Discover Assetsに公開しております、lcdp-cross-domain-sample-flow
フローを参照ください。
ログ出力
クラウド実行環境でログを出力するには、debugノードを使います。
Node-REDのパレットからdebugノードをワークスペースへ配置します。たとえば、LCDP inノードでログを出力したいときは、debugノードをLCDP inノードにつなぎます。その後、debugノードのノードプロパティの 出力先
のシステムコンソール
にチェックをつけます。
これで、クラウド実行環境でログが出力されるようになります。
注意点
フローを作成するにあたり、以下の点に注意してください。
- フローは、クラウド実行環境のタイムアウトに設定した秒数以上、処理を継続することはできません
- 1回のフローの呼び出しで、複数回LCDP outノードを呼び出すことはできません(LCDP outノードが実行されるとそこで処理を中断します)
- 利用していないプライベートノードをプロジェクトに配置しておくとフローの実行時間が遅くなります
- クラウド実行環境にデプロイできるファイルサイズは250MB以内になります(このファイルサイズとは、フロー、ノード、Private Node、Node-REDなど作成したフローを実行するために必要なすべてのファイルを含むZIPファイルのサイズです)