概要
enebularでnode-redやってみる。
enebular-cliのチュートリアルを見つけたのでやってみる。
参考にしたページ
手順
インストール
windows 10に、node.jsとenebular-cliをインストール。
>winget install CoreyButler.NVMforWindows
見つかりました NVM for Windows [CoreyButler.NVMforWindows] バージョン 1.2.2
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/coreybutler/nvm-windows/releases/download/1.2.2/nvm-setup.exe
?????????????????????????????? 5.35 MB / 5.35 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストーラーは管理者として実行するように要求します。プロンプトが表示されます。
インストールが完了しました
>nvm install lts
'nvm' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
isa>nvm install lts
Downloading node.js version 24.19.0 (64-bit)...
Extracting node and npm...
Complete
Installation complete.
If you want to use this version, type:
nvm use 24.19.0
>nvm use lts
Now using node v24.19.0 (64-bit)
>node -v
v24.19.0
>npm -v
11.17.0
added 3 packages in 10s
npm notice
npm notice New major version of npm available! 11.17.0 -> 12.0.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2
npm notice To update run: npm install -g npm@12.0.2
npm notice
>npm -v
11.17.0
>node -v
v24.19.0
>nvm use 22.11.0
activation error: Version not installed. Run "nvm ls" to see available versions.
>nvm list
* 24.19.0 (Currently using 64-bit executable)
>nvm install 22.11.0
Downloading node.js version 22.11.0 (64-bit)...
Extracting node and npm...
Complete
Installation complete.
If you want to use this version, type:
nvm use 22.11.0
>nvm use 22.11.0
Now using node v22.11.0 (64-bit)
>npm install -g @uhuru/enebular-cli
added 3 packages in 4s
>enebular version
version: 1.0.0
アクセスキーを作成する
enebular CLI を使うには、アクセスキーとシークレットキーが必要です。enebular のアカウント設定画面から作成できます。
画面右上のユーザーメニューから「アカウント設定」を開く
「アクセスキー / シークレットキー」の項目で、説明文を入力して「作成」をクリック
表示されたアクセスキーとシークレットキーをコピーしておく
シークレットキーは作成時にしか表示されません。コピーするか、CSV ファイルとしてダウンロードして保管してください。
zipファイルを用意する
任意の作業ディレクトリを作成し、以下の内容で lambda_function.py を作成します。
import json
from datetime import datetime
def lambda_handler(event, context):
response = {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': json.dumps({
'message': 'Hello from enebular CLI!',
'timestamp': datetime.now().isoformat()
})
}
return response
これを ZIP ファイルにまとめます。
Windows の場合は、lambda_function.py を右クリックして「送る」→「圧縮 (zip 形式) フォルダー」を選択し、python-app.zip という名前で保存します。
プロジェクトを作る
今回、フローは使わないので、デフォルトのプライベートノードの利用はOFFにしました。
クラウド実行環境の作成
クラウド実行環境は、ZIPファイルアーカイブのデプロイにチェックを入れ、ランタイムとアーキテクチャは計画と使用しているPCに合わせて作成しました。
ZIP ファイルを登録する
作成した ZIP ファイルを enebular に登録します。
enebular add file \
--project-id <プロジェクトID> \
--file ./python-app.zip \
--deploy-type cloud \
--handler lambda_function.lambda_handler \
--name "python-hello" \
--detail "Python Hello World"
各オプションの意味は以下のとおりです。
--project-id :登録先のプロジェクト ID
--file :アップロードする ZIP ファイルのパス
--deploy-type :デプロイ先の種別。今回はクラウド実行環境なので cloud
--handler :ハンドラー名。<ファイル名>.<関数名> の形式で、今回は lambda_function の lambda_handler
--name :アセット名。1 〜 30 文字の英数字
--detail :アセットの説明
実行すると、確認プロンプトが表示されたあと、登録処理が進みます。完了すると、登録されたアセットの ID が表示されます。この ID は次のコマンドで使うので、メモしておいてください。
プロジェクト ID は、enebular の画面でプロジェクトの左側の設定メニューから確認できます。
クラウド実行環境にデプロイする
次に、登録したファイルをクラウド実行環境にデプロイします。
enebular deploy cloud \
--project-id <プロジェクトID> \
--cloud-id <クラウド実行環境ID> \
--asset-id <先ほど登録したアセットのID> \
--asset-type file
各オプションの意味は以下のとおりです。
--project-id :プロジェクト ID
--cloud-id :デプロイ先のクラウド実行環境 ID
--asset-id :1 コマンド目で登録したアセット ID
--asset-type :アセット種別。ZIP ファイルの場合は file
クラウド実行環境 ID は、enebular のクラウド実行環境画面で対象の環境を開き、設定タブで確認できます。実行が完了すれば、デプロイは完了です。
プロジェクト: enebular-demo-ai(<プロジェクトID>)
クラウド実行環境: cloud-app-20260512(<クラウド実行環境ID>)
アセット: python-hello(<アセットID>)
種別: ファイル
クラウド実行環境へのアセットデプロイを実施します。
実行してもよろしいですか? [y/N]
> y
成功しました
デプロイ先:
プロジェクト: enebular-demo-ai(<プロジェクトID>)
クラウド実行環境: cloud-app-20260512(<クラウド実行環境ID>)
アセット: python-hello(<アセットID>
動作確認
デプロイが完了したら、enebular の画面でクラウド実行環境を開き、デプロイ履歴に「デプロイ済み」のステータスが表示されていることを確認します。
HTTP トリガーを設定している場合は、設定画面に表示される URL にブラウザでアクセスすると、以下のような JSON レスポンスが返ってきます。
{
"message": "Hello from enebular CLI!",
"timestamp": "2026-05-07T12:34:56.789000"
}
HTTP トリガーがまだ設定されていない場合は、クラウド実行環境の設定タブから有効にしてください。
エラーが出ました。
{"message":"Internal Server Error"}
[Aug 21st 2026, 10:44:27]: 2026-08-21T01:44:27.138Z undefined ERROR Uncaught Exception {"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'lambda_function'\nRequire stack:\n- /var/runtime/index.mjs","stack":["Runtime.ImportModuleError: Error: Cannot find module 'lambda_function'","Require stack:","- /var/runtime/index.mjs"," at _loadUserApp (file:///var/runtime/index.mjs:1192:17)"," at async UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1235:21)"," at async start (file:///var/runtime/index.mjs:1454:23)"," at async file:///var/runtime/index.mjs:1464:1"]}
[Aug 21st 2026, 10:44:27]: INIT_REPORT Init Duration: 88.33 ms Phase: invoke Status: error Error Type: Runtime.ImportModuleError
[Aug 21st 2026, 10:44:27]: START RequestId: c35ad73f-756c-41e5-8012-2cabba6b0928 Version: $LATEST
[Aug 21st 2026, 10:44:27]: END RequestId: c35ad73f-756c-41e5-8012-2cabba6b0928
[Aug 21st 2026, 10:44:27]: REPORT RequestId: c35ad73f-756c-41e5-8012-2cabba6b0928 Duration: 98.11 ms Billed Duration: 99 ms Memory Size: 256 MB Max Memory Used: 77 MB Status: error Error Type: Runtime.ImportModuleError
原因は、クラウド実行環境をnodeで作ってた、pythonにする。
{"message": "Hello from enebular CLI!", "timestamp": "2026-08-21T01:56:30.564043"}
感想
node-red使わないなんて、反則じゃねい。
でも、道は開けた感じがする。
以上。


