Functionのシェル起動
はじめに
functions shellは、Node shellコンソールの機能とCatalyst CLIの効率性を組み合わせて、Functionのテストとデバッグを行う機能を提供します。
Catalyst CLI functions shellを使用すると、プロジェクト内のJava、Node.js、またはPythonプラットフォームの以下のFunctionタイプをテストおよびデバッグできます:Basic I/O、Cron、Event、およびIntegration Function。
Functionの実行出力はJSON形式でCLIに取得・表示されます。Basic I/O Functionの場合はCLIに文字列出力が生成され、その他のFunctionタイプの場合は適切なレスポンスが取得されます。
JavaまたはNode.jsスタックのBasic I/O Functionをテストする際は、Functionのエンドポイントにデバッガをアタッチしてローカルサーバーを介してコードをテストしたり、シェルでHTTPモードを有効にしたりすることもできます。Python Functionではこの機能はサポートされていませんが、Python Functionを独立してデバッグすることは可能です。
Catalyst CLIはfunctions shellのその他のオプションも提供しており、このセクションの後半で説明します。
Functions Shellコマンドの実行
Functionをテストするためのシェルを起動するには、Functionのプロジェクトディレクトリに移動し、以下のコマンドを実行します:
これによりCLIでシェルが開きます。Advanced I/O Function以外のプロジェクト内の任意のFunctionをテストし、Basic I/O Functionの場合は入力を渡して実行し、その他のnode shell操作を実行できます。
シェルでBasic I/O Functionに入力を渡す方法は2つあります:
- Function変数に値を渡してFunctionを実行する。
- CLIで変数を宣言し、Function変数に代入して、宣言した変数を介して入力値を渡す。その後、宣言した変数をそのFunctionにバインドして実行できます。
直接入力を渡す例
_EMI_というシンプルなFunctionをテストしましょう。このFunctionでは、_principal_という変数に入力値を渡すことができます。このFunctionは、いくつかの事前定義された定数値に基づいて、配送サービスのEMI金額を計算します。
シェルで以下のステートメントを入力して、入力変数の値を渡し_EMI_ Functionを実行します:
これにより_EMI_ Functionが呼び出され、入力がその変数に渡されます。Functionの実行が完了すると、サーバーからJSONレスポンスとして出力が取得されます。CLIは、サーバーから送信されたHTTPステータスコードとともにFunctionの出力を表示します。
変数を宣言してバインドする例
CLIで変数を宣言し、Function内の変数に代入することもできます。これにより、宣言した変数をFunctionの変数の代わりに使用して、入力値を簡単に渡すことができます。
変数’P’を宣言し、EMI Functionの_principal_変数に代入して入力値を渡しましょう。シェルで以下のコマンドを実行します:
これにより_P_が_principal_に代入され、Pに入力値3000が渡されます。コンソールでPの値を出力して、変数が代入されているか確認できます。
これはNode.jsのconsole.log() functionを以下の方法で使用して行えます:
変数が代入され値が正常に渡された場合、シェルは渡された_principal_の値を出力します。
宣言した変数をFunctionにバインドして、以下のように実行できます:
これによりFunctionが呼び出され、_P_を介してその変数に入力が渡されます。Functionの実行が完了すると、CLIはサーバーから送信されたHTTPステータスコードとともに出力を表示します。
ランタイムエラーが発生した場合、CLIはサーバーから適切なHTTPレスポンスコードを返します。
シェルの終了
ローカル環境に応じてターミナルコマンドを終了するか、以下のコマンドを実行してfunctions shellを終了できます:
Functionのテストが十分に完了したら、ローカル環境からリモートコンソールにFunctionをデプロイできます。
Functions Shellオプション
functions shellの起動コマンドで使用できるオプションは4つあります。
--http [port]
--httpオプションは、Basic I/O FunctionをHTTPモードで呼び出します。CLIはローカルホストを介してFunctionをサーブし、ローカルエンドポイントへのアクセスを提供します。サーバーはFunctionがローカルでホストされているポートをリッスンし、CLIはそのポートでのアクティビティのライブログを表示します。その後、CLIはfunctions shellを開き、Functionをテストできます。
このオプションは、Basic I/O Function、Advanced I/O Function、およびクライアントコンポーネントをローカルでサーブする catalyst serve コマンドの機能と同様です。
プロジェクトディレクトリから以下のコマンドを実行して、HTTPモードでfunction shellを起動し、プロジェクト内のすべてのBasic I/O Functionをテストできます:
これにより、プロジェクトのFunctionディレクトリ内のすべてのBasic I/O Functionがデフォルトポート8080でローカルにホストされます。CLIはすべてのFunctionのエンドポイントURLを表示します。シェル操作の実行中はいつでも、ブラウザでURLを開いてこれらのFunctionにアクセスできます。
前のセクションで説明したようにシェルを使用してFunctionのテストと実行を行い、URLにアクセスしてHTTPモードで表示できます。
必要に応じて、このコマンドの実行時にデフォルトポート8080をオーバーライドして別のポートでサーバーを起動することもできます。--httpオプションでポート番号を指定して行います。
たとえば、ポート7000を使用したい場合は、プロジェクトディレクトリから以下のコマンドを実行します:
--debug [port]
Catalystでは、ライブlocalhostサーバーにリモートデバッガをアタッチして、JavaおよびNode.js Functionをローカルでテストできます。
--debugオプションを使用してfunctions shellを起動すると、Catalystはデフォルトまたはカスタムポートでトランスポートdt_socketをリッスンし、Functionの呼び出し後にデバッガからの接続が確立されるのを待ちます。接続が確立されると、アタッチされたデバッガがFunctionの実行をデバッグし、コード内のエラーや問題を特定します。
プロジェクトディレクトリから以下のコマンドを実行して、functions shellを起動しデバッガへの接続を開始できます:
これにより、以前と同じ方法でfunctions shellが開きます。シェルでFunctionを呼び出すと、Catalystがデバッガへの接続を確立します。Catalyst CLIはデフォルトでデバッガにポート8000を割り当てます。
デバッガがアタッチされると、CLIはそのことを示すメッセージを表示します。その後、CatalystはデバッグモードでFunctionを実行し、サーバーレスポンスを表示します。
必要に応じて、デフォルトポート8000をオーバーライドして別のポートでデバッガを起動できます。--debugオプションでポート番号を指定して行います。
たとえば、ポート7000を使用したい場合は、プロジェクトディレクトリから以下のコマンドを実行します:
--ignore-scripts
このオプションを使用すると、特定のFunctionの catalyst.json ファイルに記述されたライフサイクル前後のスクリプトを無視するようCatalystに指示できます。
functions shellの--httpオプションを使用してBasic I/O Functionのエンドポイントをホストしてアクセスできるため、ホスト時にpreserveおよびpostserveスクリプトが自動的に実行されます。preserveスクリプトはFunctionがサーブされる前に実行され、postserveスクリプトはローカルサーブを終了した後に実行されます(利用可能な場合)。
--ignore-scriptsオプションを使用して、Functionがサーブされる際にこれらのライフサイクル前後のスクリプトを無視するようCatalystに指示できます。
たとえば、プロジェクトのcatalyst.jsonファイルに、Functionの以下のpreserveおよびpostserveスクリプトを含めるように設定しましょう。
–ignore-scriptsオプションを使用せずにfunctions shellを起動すると、以下に示すように、シェルが開く前とシェルを終了した後にそれぞれスクリプトが実行されます。
preserveおよびpostserveスクリプトを無視するには、プロジェクトディレクトリから以下のコマンドを実行してfunctions shellを起動します:
これによりスクリプトが無視され、標準的な方法でシェルが実行されます。
--no-watch
Catalyst CLIはデフォルトでfunctions shellにライブウォッチモードを有効にしています。このモードは、シェルが開かれた後にFunctionファイルまたはFunctionディレクトリで行われた変更を能動的に監視します。Functionファイルまたはディレクトリで変更がコミットされたことを検出すると、functions shellのホットリロードを有効にして更新をライブで反映します。そのため、変更を保存した直後に、コードの再コンパイルや再サーブを行うことなく、ライブシェルでFunctionの更新バージョンにアクセスできます。
以下のように--no-watchオプションを使用してfunctions shellを起動することで、このデフォルトのウォッチモードを無効にできます:
シェルで起動した後にFunctionファイルに変更を加えても、シェルで開いているコンパイル済みFunctionには更新が反映されません。変更後にFunctionを再呼び出しするか、シェルを終了して再度開くことで、Functionの更新バージョンを操作できます。
たとえば、Node.js Basic I/O Functionのデフォルトサンプルコードを含むFunctionを考えましょう。functions shellで呼び出すと「Hello from index.js」というメッセージが出力されます。
以下のようにFunctionのコードを変更しても、Functionがまだシェルで開いている間はCLIにライブで更新が反映されません。
更新されたコードの出力を取得するには、Functionを再度呼び出す必要があります。
ただし、--no-watchオプションを使用せずにデフォルトのウォッチモードを有効にしたままfunctions shellを起動すると、シェルはコードの変更をライブで検出し、以下に示すようにFunctionのホットリロードを自動的に実行します。
Python Functionのデバッグ
Python Functionをデバッグするには、Catalystは現在CLIでのデバッグをサポートしていないため、Python IDEを独立して使用する必要があります。Visual Studio CodeやPyCharmなど、お好みのIDEでローカルデバッガをアタッチできます。デバッガはFunctionがローカルでホストされているポートをリッスンし、IDEはそのポートでのアクティビティのライブログを表示します。
VS Codeを使用してPython Functionをデバッグする手順は以下の通りです:
- IDEからローカルサーバーでホストされている特定のPython Functionをデバッグするには、ローカルサーバーとIDEの間の接続を確立するデバッガパッケージが必要です。この場合、debugpy Pythonパッケージを使用します。
VS CodeでCatalystプロジェクトディレクトリを開きます。main.pyファイルに、以下のコード行を追加します。
import debugpy
debugpy.listen(<<"Enter port number here">>)
debugpy.wait_for_client()
- Functionディレクトリに移動し、debugpyパッケージをインストールするために、IDEターミナルで以下のコマンドを実行します:
- Catalystプロジェクトのルートディレクトリにlaunch.jsonファイルがまだ存在しない場合は作成します。launch.jsonファイルの作成手順については、こちらのヘルプページをご参照ください。ファイルに以下のコードを追加して保存します。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": <>
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "${workspaceFolder}/.build/"
}
],
"justMyCode": true
}
]
}
- VS Codeで「実行とデバッグ」ビューに切り替え、デバッガを開始します。IDEターミナルでCLI serveコマンドを実行して、Functionの実行詳細を確認できます。
VS CodeでのPython Functionのローカルスクリプトデバッグのより詳細な手順については、こちらのヘルプページをご参照ください。
最終更新日 2026-02-23 18:09:41 +0530 IST
Yes
No
Send your feedback to us













