This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.6.7. テストイベントでのデプロイされた関数の呼び出し
kn func invoke CLI コマンドを使用して、ローカルまたは OpenShift Container Platform クラスター上で関数を呼び出すためのテストリクエストを送信できます。このコマンドを使用して、関数が機能し、イベントを正しく受信できることをテストできます。関数をローカルで呼び出すと、関数開発中の簡単なテストに役立ちます。クラスターで関数を呼び出すと、実稼働環境に近いテストに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- 呼び出す関数をすでにデプロイしている必要があります。
手順
関数を呼び出します。
kn func invoke
$ kn func invokeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
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>
$ 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
$ 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>
$ kn func invoke --file <path> --content-type <content-type>
たとえば、test.json ファイルに保存されている JSON データを送信するには、以下のコマンドを使用します。
kn func invoke --file ./test.json --content-type application/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>
$ kn func invoke --path <path_to_function>
たとえば、./example/example- function ディレクトリーにある function プロジェクトを使用するには、以下のコマンドを使用します。
kn func invoke --path ./example/example-function
$ kn func invoke --path ./example/example-function
4.6.7.1.2.3. ターゲット関数がデプロイされる場所の指定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、kn func invoke は関数のローカルデプロイメントをターゲットにします。
kn func invoke
$ kn func invoke
別のデプロイメントを使用するには、--target フラグを使用します。
kn func invoke --target <target>
$ kn func invoke --target <target>
たとえば、クラスターにデプロイされた関数を使用するには、-target remote フラグを使用します。
kn func invoke --target remote
$ kn func invoke --target remote
任意の URL にデプロイされた関数を使用するには、-target <URL> フラグを使用します。
kn func invoke --target "https://my-event-broker.example.com"
$ kn func invoke --target "https://my-event-broker.example.com"
ローカルデプロイメントを明示的にターゲットとして指定できます。この場合、関数がローカルで実行されていない場合、コマンドは失敗します。
kn func invoke --target local
$ kn func invoke --target local