4.6.7. テストイベントでのデプロイされた関数の呼び出し
kn func invoke
CLI コマンドを使用して、ローカルまたは OpenShift Container Platform クラスター上で関数を呼び出すためのテストリクエストを送信できます。このコマンドを使用して、関数が機能し、イベントを正しく受信できることをテストできます。
コマンドの例
$ kn func invoke
kn func invoke
コマンドは、デフォルトでローカルディレクトリーで実行され、このディレクトリーが関数プロジェクトであると想定します。
4.6.7.1. kn func はオプションのパラメーターを呼び出します
次の knfuncinvoke
CLI コマンドフラグを使用して、リクエストのオプションのパラメーターを指定できます。
フラグ | 説明 |
---|---|
|
呼び出された関数のターゲットインスタンスを指定します。たとえば、 |
|
メッセージの形式を指定します (例: |
| リクエストの一意の文字列識別子を指定します。 |
| クラスターの namespace を指定します。 |
|
リクエストの送信者名を指定します。これは、CloudEvent |
|
リクエストのタイプを指定します (例: |
|
リクエストの内容を指定します。CloudEvent リクエストの場合、これは CloudEvent |
| 送信するデータを含むローカルファイルへのパスを指定します。 |
| リクエストの MIME コンテンツタイプを指定します。 |
| プロジェクトディレクトリーへのパスを指定します。 |
| すべてのオプションを対話的に確認するように要求を有効にします。 |
| 詳細出力の出力を有効にします。 |
|
|
4.6.7.1.1. 主なパラメーター
次のパラメーターは、kn func invoke
コマンドの主なプロパティーを定義します。
- イベントターゲット (
-t
、-target
) -
呼び出された関数のターゲットインスタンス。ローカルにデプロイされた関数の
local
値、リモートにデプロイされた関数のremote
値、または任意のエンドポイントにデプロイされた関数の URL を受け入れます。ターゲットが指定されていない場合、デフォルトでlocal
になります。 - イベントメッセージ形式 (
-f
、--format
) -
http
やcloudevent
などのイベントのメッセージ形式。これは、デフォルトで、関数の作成時に使用されたテンプレートの形式になります。 - イベントタイプ (
--type
) -
送信されるイベントのタイプ。各イベントプロデューサーのドキュメントで設定されている
type
パラメーターに関する情報を見つけることができます。たとえば、API サーバーソースは、生成されたイベントのtype
パラメーターをdev.knative.apiserver.resource.update
として設定する場合があります。 - イベントソース (
--source
) -
イベントを生成する一意のイベントソース。これは、
https://10.96.0.1/
などのイベントソースの URI、またはイベントソースの名前である可能性があります。 - イベント ID (
--id
) - イベントプロデューサーによって作成されるランダムな一意の ID。
- イベントデータ (
--data
) kn func invoke
コマンドで送信されるイベントのdata
値を指定できます。たとえば、イベントにこのデータ文字列が含まれるように、"Hello World"
などの--data
値を指定できます。デフォルトでは、kn func invoke
によって作成されたイベントにデータは含まれません。注記クラスターにデプロイされた関数は、
source
およびtype
などのプロパティーの値を提供する既存のイベントソースからのイベントに応答できます。多くの場合、これらのイベントには、イベントのドメイン固有のコンテキストをキャプチャーする JSON 形式のdata
値があります。本書に記載されている CLI フラグを使用して、開発者はローカルテスト用にこれらのイベントをシミュレートできます。--file
フラグを使用してイベントデータを送信し、イベントのデータを含むローカルファイルを指定することもできます。この場合は、--content-type
を使用してコンテンツタイプを指定します。- データコンテンツタイプ (
--content-type
) -
--data
フラグを使用してイベントのデータを追加している場合は、-content-type
フラグを使用して、イベントによって伝送されるデータのタイプを指定できます。前の例では、データはプレーンテキストであるため、kn func invoke --data "Hello world!" --content-type "text/plain"
を指定できます。
4.6.7.1.2. コマンドの例
これは、kn func invoke
コマンドの一般的な呼び出しです。
$ kn func invoke --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> --id <event_ID> --format <format> --namespace <namespace>
たとえば、Hello world! イベントを送信すると、以下を行うことができます。
$ kn func invoke --type ping --source example-ping --data "Hello world!" --content-type "text/plain" --id example-ID --format http --namespace my-ns
4.6.7.1.2.1. データを使用したファイルの指定
イベントデータが含まれるディスクにファイルを指定するには、--file
フラグおよび --content-type
フラグを使用します。
$ kn func invoke --file <path> --content-type <content-type>
たとえば、test.json
ファイルに保存されている JSON データを送信するには、以下のコマンドを使用します。
$ kn func invoke --file ./test.json --content-type application/json
4.6.7.1.2.2. 関数プロジェクトの指定
--path
フラグを使用して、関数プロジェクトへのパスを指定できます。
$ kn func invoke --path <path_to_function>
たとえば、./example/example-
function ディレクトリーにある function プロジェクトを使用するには、以下のコマンドを使用します。
$ kn func invoke --path ./example/example-function
4.6.7.1.2.3. ターゲット関数がデプロイされる場所の指定
デフォルトでは、kn func invoke
は関数のローカルデプロイメントをターゲットにします。
$ kn func invoke
別のデプロイメントを使用するには、--target
フラグを使用します。
$ kn func invoke --target <target>
たとえば、クラスターにデプロイされた関数を使用するには、-target remote
フラグを使用します。
$ kn func invoke --target remote
任意の URL にデプロイされた関数を使用するには、-target <URL>
フラグを使用します。
$ kn func invoke --target "https://my-event-broker.example.com"
ローカルデプロイメントを明示的にターゲットとして指定できます。この場合、関数がローカルで実行されていない場合、コマンドは失敗します。
$ kn func invoke --target local