お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Functionのシェル起動

はじめに

functions shellは、Node shellコンソールの機能とCatalyst CLIの効率性を組み合わせて、Functionのテストとデバッグを行う機能を提供します。

Catalyst CLI functions shellを使用すると、プロジェクト内のJava、Node.js、またはPythonプラットフォームの以下のFunctionタイプをテストおよびデバッグできます:Basic I/OCronEvent、およびIntegration Function。

注意: node shellを使用してAdvanced I/O Functionをテストすることはできません。ただし、catalyst serveコマンドを使用して、Advanced I/O Function、Basic I/O 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のプロジェクトディレクトリに移動し、以下のコマンドを実行します:

copy
$
catalyst functions:shell

これによりCLIでシェルが開きます。Advanced I/O Function以外のプロジェクト内の任意のFunctionをテストし、Basic I/O Functionの場合は入力を渡して実行し、その他のnode shell操作を実行できます。

Functions Shell

シェルでBasic I/O Functionに入力を渡す方法は2つあります:

  • Function変数に値を渡してFunctionを実行する。
  • CLIで変数を宣言し、Function変数に代入して、宣言した変数を介して入力値を渡す。その後、宣言した変数をそのFunctionにバインドして実行できます。

直接入力を渡す例

_EMI_というシンプルなFunctionをテストしましょう。このFunctionでは、_principal_という変数に入力値を渡すことができます。このFunctionは、いくつかの事前定義された定数値に基づいて、配送サービスのEMI金額を計算します。

シェルで以下のステートメントを入力して、入力変数の値を渡し_EMI_ Functionを実行します:

copy
$
EMI({"principal":"10000"})

これにより_EMI_ Functionが呼び出され、入力がその変数に渡されます。Functionの実行が完了すると、サーバーからJSONレスポンスとして出力が取得されます。CLIは、サーバーから送信されたHTTPステータスコードとともにFunctionの出力を表示します。

Functions Shell

変数を宣言してバインドする例

CLIで変数を宣言し、Function内の変数に代入することもできます。これにより、宣言した変数をFunctionの変数の代わりに使用して、入力値を簡単に渡すことができます。

変数’P’を宣言し、EMI Functionの_principal_変数に代入して入力値を渡しましょう。シェルで以下のコマンドを実行します:

copy
$
var P={"principal":"3000"}

これにより_P_が_principal_に代入され、Pに入力値3000が渡されます。コンソールでPの値を出力して、変数が代入されているか確認できます。

これはNode.jsのconsole.log() functionを以下の方法で使用して行えます:

copy
$
console.log(P)

変数が代入され値が正常に渡された場合、シェルは渡された_principal_の値を出力します。

Functions Shell

宣言した変数をFunctionにバインドして、以下のように実行できます:

copy
$
EMI(P)

これによりFunctionが呼び出され、_P_を介してその変数に入力が渡されます。Functionの実行が完了すると、CLIはサーバーから送信されたHTTPステータスコードとともに出力を表示します。

Functions Shell

ランタイムエラーが発生した場合、CLIはサーバーから適切なHTTPレスポンスコードを返します。

シェルの終了

ローカル環境に応じてターミナルコマンドを終了するか、以下のコマンドを実行してfunctions shellを終了できます:

copy
$
.exit

Functionのテストが十分に完了したら、ローカル環境からリモートコンソールにFunctionをデプロイできます。

Functions Shellオプション

functions shellの起動コマンドで使用できるオプションは4つあります。

--http [port]

--httpオプションは、Basic I/O FunctionをHTTPモードで呼び出します。CLIはローカルホストを介してFunctionをサーブし、ローカルエンドポイントへのアクセスを提供します。サーバーはFunctionがローカルでホストされているポートをリッスンし、CLIはそのポートでのアクティビティのライブログを表示します。その後、CLIはfunctions shellを開き、Functionをテストできます。

注意: --httpオプションはBasic I/O Functionにのみ適用されます。Cron、Event、およびIntegration Functionのエンドポイントには直接アクセスできないためです。

このオプションは、Basic I/O Function、Advanced I/O Function、およびクライアントコンポーネントをローカルでサーブする catalyst serve コマンドの機能と同様です。

プロジェクトディレクトリから以下のコマンドを実行して、HTTPモードでfunction shellを起動し、プロジェクト内のすべてのBasic I/O Functionをテストできます:

copy
$
catalyst functions:shell --http

これにより、プロジェクトのFunctionディレクトリ内のすべてのBasic I/O Functionがデフォルトポート8080でローカルにホストされます。CLIはすべてのFunctionのエンドポイントURLを表示します。シェル操作の実行中はいつでも、ブラウザでURLを開いてこれらのFunctionにアクセスできます。

Functions Shell- HTTP Port

前のセクションで説明したようにシェルを使用してFunctionのテストと実行を行い、URLにアクセスしてHTTPモードで表示できます。

必要に応じて、このコマンドの実行時にデフォルトポート8080をオーバーライドして別のポートでサーバーを起動することもできます。--httpオプションでポート番号を指定して行います。

たとえば、ポート7000を使用したい場合は、プロジェクトディレクトリから以下のコマンドを実行します:

copy
$
catalyst serve --http 7000

--debug [port]

Catalystでは、ライブlocalhostサーバーにリモートデバッガをアタッチして、JavaおよびNode.js Functionをローカルでテストできます。

注意: catalyst functions:shell –debugコマンドはPython Functionではサポートされていません。Python Functionのデバッグ手順については、こちらのセクションをご参照ください。

--debugオプションを使用してfunctions shellを起動すると、Catalystはデフォルトまたはカスタムポートでトランスポートdt_socketをリッスンし、Functionの呼び出し後にデバッガからの接続が確立されるのを待ちます。接続が確立されると、アタッチされたデバッガがFunctionの実行をデバッグし、コード内のエラーや問題を特定します。

プロジェクトディレクトリから以下のコマンドを実行して、functions shellを起動しデバッガへの接続を開始できます:

copy
$
catalyst functions:shell --debug

これにより、以前と同じ方法でfunctions shellが開きます。シェルでFunctionを呼び出すと、Catalystがデバッガへの接続を確立します。Catalyst CLIはデフォルトでデバッガにポート8000を割り当てます。

Functions Shell- Debug

デバッガがアタッチされると、CLIはそのことを示すメッセージを表示します。その後、CatalystはデバッグモードでFunctionを実行し、サーバーレスポンスを表示します。

必要に応じて、デフォルトポート8000をオーバーライドして別のポートでデバッガを起動できます。--debugオプションでポート番号を指定して行います。

たとえば、ポート7000を使用したい場合は、プロジェクトディレクトリから以下のコマンドを実行します:

copy
$
catalyst serve --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スクリプトを含めるように設定しましょう。

Functions Shell- Ignore Scripts

–ignore-scriptsオプションを使用せずにfunctions shellを起動すると、以下に示すように、シェルが開く前とシェルを終了した後にそれぞれスクリプトが実行されます。

Functions Shell- Ignore Scripts

preserveおよびpostserveスクリプトを無視するには、プロジェクトディレクトリから以下のコマンドを実行してfunctions shellを起動します:

copy
$
catalyst functions:shell --ignore-scripts

これによりスクリプトが無視され、標準的な方法でシェルが実行されます。

Functions Shell- Ignore Scripts

--no-watch

Catalyst CLIはデフォルトでfunctions shellにライブウォッチモードを有効にしています。このモードは、シェルが開かれた後にFunctionファイルまたはFunctionディレクトリで行われた変更を能動的に監視します。Functionファイルまたはディレクトリで変更がコミットされたことを検出すると、functions shellのホットリロードを有効にして更新をライブで反映します。そのため、変更を保存した直後に、コードの再コンパイルや再サーブを行うことなく、ライブシェルでFunctionの更新バージョンにアクセスできます。

以下のように--no-watchオプションを使用してfunctions shellを起動することで、このデフォルトのウォッチモードを無効にできます:

copy
$
catalyst functions:shell --no-watch

シェルで起動した後にFunctionファイルに変更を加えても、シェルで開いているコンパイル済みFunctionには更新が反映されません。変更後にFunctionを再呼び出しするか、シェルを終了して再度開くことで、Functionの更新バージョンを操作できます。

たとえば、Node.js Basic I/O Functionのデフォルトサンプルコードを含むFunctionを考えましょう。functions shellで呼び出すと「Hello from index.js」というメッセージが出力されます。

Functions Shell- No Watch

以下のようにFunctionのコードを変更しても、Functionがまだシェルで開いている間はCLIにライブで更新が反映されません。

Functions Shell- No Watch

更新されたコードの出力を取得するには、Functionを再度呼び出す必要があります。

Functions Shell- No Watch

ただし、--no-watchオプションを使用せずにデフォルトのウォッチモードを有効にしたままfunctions shellを起動すると、シェルはコードの変更をライブで検出し、以下に示すようにFunctionのホットリロードを自動的に実行します。

Functions Shell- No Watch


Python Functionのデバッグ

Python Functionをデバッグするには、Catalystは現在CLIでのデバッグをサポートしていないため、Python IDEを独立して使用する必要があります。Visual Studio CodeやPyCharmなど、お好みのIDEでローカルデバッガをアタッチできます。デバッガはFunctionがローカルでホストされているポートをリッスンし、IDEはそのポートでのアクティビティのライブログを表示します。

VS Codeを使用してPython Functionをデバッグする手順は以下の通りです:

  1. IDEからローカルサーバーでホストされている特定のPython Functionをデバッグするには、ローカルサーバーとIDEの間の接続を確立するデバッガパッケージが必要です。この場合、debugpy Pythonパッケージを使用します。

VS CodeでCatalystプロジェクトディレクトリを開きます。main.pyファイルに、以下のコード行を追加します。

copy
import debugpy
debugpy.listen(<<"Enter port number here">>)
debugpy.wait_for_client()
注意: VS Codeデバッグ設定のアタッチ用デフォルトポートは5678です。これはPython Functionがサーブされるポートです。必要に応じて、以下のオプションを使用してserveコマンドの実行時にデフォルトポートをオーバーライドして変更できます:
copy
$
catalyst serve –http <Port number>
  1. Functionディレクトリに移動し、debugpyパッケージをインストールするために、IDEターミナルで以下のコマンドを実行します:
copy
$
python -m pip install --upgrade debugpy
  1. Catalystプロジェクトのルートディレクトリにlaunch.jsonファイルがまだ存在しない場合は作成します。launch.jsonファイルの作成手順については、こちらのヘルプページをご参照ください。ファイルに以下のコードを追加して保存します。
copy
{
    "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
        }
    ]
}
  1. VS Codeで「実行とデバッグ」ビューに切り替え、デバッガを開始します。IDEターミナルでCLI serveコマンドを実行して、Functionの実行詳細を確認できます。
注意: コマンドの実行時に、設定ファイルに記載されたものと同じポート番号を指定するようにしてください。

VS CodeでのPython Functionのローカルスクリプトデバッグのより詳細な手順については、こちらのヘルプページをご参照ください。

注意: Visual Studio Code IDEユーザーの場合、Catalyst Tools拡張機能をインストールして、CLIの代わりにIDEを使用してCLI操作を実行できます。Visual Studio Code IDEを使用してCatalyst Functionを実行およびデバッグする手順はこちらをご覧ください。

最終更新日 2026-02-23 18:09:41 +0530 IST