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 集群中调用功能。此命令可用于测试功能是否正常工作并且能够正确接收事件。
示例命令
kn func invoke
$ kn func invoke
kn func invoke 命令默认在本地目录上执行,并假定此目录是一个功能项目。
4.6.7.1. kn func 调用可选参数 复制链接链接已复制到粘贴板!
您可以使用以下 kn func invoke CL 命令标记为请求指定可选参数。
| 标记 | 描述 |
|---|---|
|
|
指定调用函数的目标实例,如 |
|
|
指定消息的格式,如 |
|
| 指定请求的唯一字符串标识符。 |
|
| 指定集群上的命名空间。 |
|
|
指定请求的发件人名称。这与 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) -
生成该事件的唯一事件源。这可能是事件源的 URI,如
https://10.96.0.1/或事件源的名称。 - 事件 ID(
--id) - 由事件制作者创建的随机唯一 ID。
- 事件数据(
--data) 允许您为
kn func invoke命令发送的事件指定data值。例如,您可以指定一个--data值,如"Hello World",以便事件包含此数据字符串。默认情况下,kn func invoke创建的事件中不包含任何数据。注意已部署到集群的功能可以对现有事件源的事件响应,该源提供属性(如
source和type)的值。这些事件通常具有 JSON 格式的data值,用于捕获事件的特定域上下文。通过使用本文档中介绍的 CLI 标志,开发人员可以模拟这些事件以进行本地测试。您还可以使用
--file标志发送事件数据,以提供包含事件数据的本地文件。在这种情况下,使用--content-type指定内容类型。- 数据内容类型(
--content-type) -
如果您使用
--data标志为事件添加数据,您可以使用--content-type标志指定事件传输的数据类型。在上例中,数据是纯文本,因此您可以指定kn func call --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 目录中的功能项目,请使用以下命令:
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