Skip to content

Latest commit

 

History

History
197 lines (156 loc) · 12.9 KB

OpenFunction-context-specs.md

File metadata and controls

197 lines (156 loc) · 12.9 KB

OpenFunction Context Specs

Overview

Statement

Scope indicates which functions-framework has already support this item.

functions-framework abbreviation

OpenFunction/functions-framework-go -> ff-go

Context

Example:

{
  "name": "function",
  "version": "v1",
  "requestID": "a0f2ad8d-5062-4812-91e9-95416489fb01",
  "port": "50002",
  "clientPort": "44538",
  "inputs": {},
  "outputs": {},
  "runtime": "Async",
  "state": "",
  "prePlugins": [],
  "postPlugins": [],
  "pluginsTracing": {
    "enable": true,
    "provider": {
      "name": "skywalking",
      "oapServer": "localhost:xxx"
    },
    "tags": {
      "key": "value"
    },
    "baggage": {
      "key": "value"
    }
  },
  "out": {
    "code": 200,
    "data": "",
    "error": "",
    "metadata": {}
  }
}

Specification:

Key Type Description Scope example
name string, require Function name. ff-go "myfunction", "hello-func"
version string, require Function version. ff-go "v1", "v2"
requestID string Request ID, uuid format. ff-go "a0f2ad8d-5062-4812-91e9-95416489fb01"
port string Function serving port. ff-go "50003"
clientPort string Dapr client port. (default is "50001" in Kubernetes mode) ff-go "50001"
inputs map Function input from bindings data.
A map of Input objects. The key is the name of input and the value is input object, see Input.
Empty means no input.
ff-go
outputs map Function output to bindings data.
A map of Output objects. The key is the name of output and the value is output object, see Output.
Empty means no output.
ff-go
runtime enum, require Function serving runtime, see Runtime. ff-go "Knative", "Async"
state string Used to store the states of the function in operation.
out map Outputs after the function is run, see Out. ff-go
prePlugins array List of names of plugins executed before the user function. ff-go ["plg1", "plg2"]
postPlugins array List of names of plugins executed after the user function. ff-go ["plg1", "plg2"]
pluginsTracing map Configuration of the tracing plugins, see PluginsTracing. ff-go

Input

Example:

{
  "my-input": {
    "uri": "my-uri",
    "componentName": "my-component",
    "componentType": "bindings.kafka",
    "metadata": {
      "Content-Type": "application/json; charset=utf-8"
    }
  }
}

Specification:

Key Type Description Scope example
name(key) string Input name. ff-go "demo-kafka", "cron-job"
uri string Input serving listening path. This indicates the destination of the input data.
Bindings: same as the component's name, can be omitted.
Pubsub: represent the topic's name, cannot be omitted.
ff-go "echo"
componentType string Input type. When using Async as runtime, you need to set the type (refer to Input Type) parameter. ff-go "bindings.kafka"
componentName string The component's name. ff-go "componentA"
metadata map The metadata to be passed to dapr for use. Usage can be found in dapr's documentation. ff-go

Input Type

Effective only when using Async as runtime.

Value Description Scope
bindings.* Indicates that the input is the Dapr bindings component. Refer to Bindings API reference to learn more about Dapr bindings components. ff-go
pubsub.* Indicates that the input is the Dapr pubsub component. Refer to Pub/sub API reference to learn more about Dapr bindings components.
❗Note that when using pubsub as input, the name of pubsub's topic should be assigned to the input's uri.
ff-go

Outputs

Examples:

{
  "my-output": {
    "uri": "my-uri",
    "componentName": "my-component",
    "componentType": "bindings.kafka",
    "operation": "post"
  }
}

Specification:

Output

Key Type Description Scope example
name(key) string Output name. ff-go "demo-kafka", "cron-job"
uri string Output serving listening path. This indicates the destination of the output data.
Bindings: same as the component's name, can be omitted.
Pubsub: represent the topic's name, cannot be omitted.
ff-go "echo"
componentType string Output type. When using Async as runtime, you need to set the type (refer to Output Type) parameter. ff-go "bindings.kafka"
componentName string The component's name. ff-go "componentA"
metadata map The metadata to be passed to dapr for use. Usage can be found in dapr's documentation. ff-go
operation string The operation's name. Usage can be found in dapr's documentation. ff-go "post", "create"
Output Type
Value Description Scope
bindings.* Indicates that the output is the Dapr bindings component. Refer to Bindings API reference to learn more about Dapr bindings components. ff-go
pubsub.* Indicates that the output is the Dapr pubsub component. Refer to Pub/sub API reference to learn more about Dapr bindings components.
❗Note that when using pubsub as output, the name of pubsub's topic should be assigned to the output's uri.
ff-go

Runtime

We currently support Knative and Async serving runtime.

Value Description Scope
Knative Serving function with Knative runtime (based on Knative). ff-go
Async Serving function with Async runtime (based on KEDA+Dapr). ff-go
### Out
Key Type Description Scope example
code int Return code of the function. ff-go 200, 500
data string The data returned by the function. ff-go "some data"
error string The error information returned by the function. ff-go "some error"
metadata map The metadata returned by the function. ff-go {"key": "value"}

PluginsTracing

Key Type Description Scope example
enable bool Whether to enable tracing capability. ff-go true, false
provider map Configuration of tracing capability provider, see TracingProvider ff-go
tags map Tags for tracing. ff-go {"func": "function-with-tracing"}
baggage map Baggage for tracing. ff-go {"key": "sw8-correlation"}

TracingProvider

Key Type Description Scope example
name string The name of the provider (if the tracing capability is enabled, this name will be automatically inserted into the list of plugin names) ff-go "skywalking"
oapServer string The oap server address. ff-go "localhost:xxx"