华为云用户手册

  • 响应示例 状态码: 200 OK { "reserved_instances" : [ { "function_urn" : "urn:fss:{region}:46b6f338fc3445b8846c71dfb1fbxxxx:function:default:xxxxx:latest", "qualifier_type" : "version", "qualifier_name" : "latest", "min_count" : 10, "idle_mode" : false, "tactics_config" : { "cron_configs" : [ { "name" : "cronConfig", "cron" : "0 1 * * * *", "count" : 15, "start_time" : 1658073600, "expired_time" : 1658160000 } ], "metric_configs" : [ { "name" : "metricConfig", "type" : "Concurrency", "threshold" : 90, "min" : 12 } ] } } ], "count" : 1, "page_info" : { "next_marker" : 1, "previous_marker" : 0, "current_count" : 1 }}
  • URI GET /v2/{project_id}/fgs/functions/reservedinstanceconfigs 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户项目 ID,获取方式请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 function_urn 否 String 函数的URN,详细解释见FunctionGraph函数模型的描述。 marker 否 String 本次查询起始位置,默认值0 缺省值:0 最小长度:1 最大长度:64 limit 否 String 本次查询最大返回的数据条数,最大值500,默认值100 缺省值:100 最小长度:1 最大长度:64
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 reserved_instances Array of ReservedInstanceConfigs objects 函数预留实例列表 page_info PageInfo object count Long 函数个数 表5 ReservedInstanceConfigs 参数 参数类型 描述 function_urn String 函数URN qualifier_type String 限定类型, 支持version和alias qualifier_name String 限定类型对应的取值 min_count Integer 预留实例个数 idle_mode Boolean 是否开启闲置模式配置 tactics_config TacticsConfig object 表6 TacticsConfig 参数 参数类型 描述 cron_configs Array of CronConfig objects 定时配置列表 metric_configs Array of MetricConfig objects 流量配置列表 表7 CronConfig 参数 参数类型 描述 name String 定时配置名称 cron String 定时表达式 count Integer 拉起预留实例个数 start_time Long 开始时间戳 expired_time Long 失效时间戳 表8 MetricConfig 参数 参数类型 描述 name String 流量配置名称 type String 流量配置类型 threshold Integer 流量阈值 min Integer 流量最小值 表9 PageInfo 参数 参数类型 描述 next_marker Long 下一次读取位置 previous_marker Long 上一次读取位置 current_count Long 当前页总数 状态码: 400 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表11 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表12 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表13 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表14 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应示例 状态码: 200 ok { "name" : "a1", "version" : "latest", "description" : "", "last_modified" : "2019-10-31 11:37:58", "alias_urn" : "urn:fss:{region}:46b6f338fc3445b8846c71dfb1fbxxxx:function:default:xxxxx:!a1"} 状态码: 404 Not Found 找不到资源。 { "error_code" : "FSS.1051", "error_msg" : "Not found the function"}
  • 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • URI DELETE /v2/{project_id}/fgs/triggers/{function_urn}/{trigger_type_code}/{trigger_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户项目 ID,获取方式请参见获取项目ID。 function_urn 是 String 函数的URN,详细解释见FunctionGraph函数模型的描述。 trigger_type_code 是 String 触发器类型代码。 枚举值: TIMER APIG CTS DDS DMS DIS LTS OBS SMN KAFKA RABBITMQ DEDICATEDGATEWAY OPENSOURCEKAFKA APIC GAUSSMONGO EVENTGRID IOTDA trigger_id 是 String 触发器编码。
  • 请求示例 创建指定obs触发器。 POST https://{Endpoint}/v2/{project_id}/fgs/triggers/{function_urn}{ "trigger_type_code" : "OBS", "trigger_status" : "ACTIVE", "event_data" : { "bucket" : "input-picture2", "events" : [ "s3:ObjectCreated:*" ], "name" : "obs-event-1ec7" }} 创建指定apig触发器。 POST https://{Endpoint}/v2/{project_id}/fgs/triggers/{function_urn}{ "trigger_type_code" : "APIG", "trigger_status" : "ACTIVE", "event_data" : { "func_info" : { "timeout" : 5000 }, "name" : "API_test_gxz_v1_billing", "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID", "env_name" : "RELEASE", "protocol" : "HTTPS", "auth" : "NONE", "group_id" : "318b09eb214a41488c667ecd51667e3x", "sl_domain" : "318b09eb214a41488c667ecd51667e3x.apig.{region}.huaweicloudapis.com", "match_mode" : "SWA", "req_method" : "ANY", "backend_type" : "FUNCTION", "type" : 1, "path" : "/test_gxz_v1_billing" }} 创建指定kafka触发器。 POST https://{Endpoint}/v2/{project_id}/fgs/triggers/{function_urn}{ "trigger_type_code" : "KAFKA", "trigger_status" : "DISABLED", "event_data" : { "instance_id" : "86ad3efc-c019-460e-91e7-317b1a89f95x", "topic_ids" : [ "PUSH_TOKEN_RECORD" ], "batch_size" : 100 }} 创建指定timer触发器。 POST https://{Endpoint}/v2/{project_id}/fgs/triggers/{function_urn}{ "trigger_type_code" : "TIMER", "trigger_status" : "ACTIVE", "event_data" : { "name" : "Timer-l8v2", "schedule" : "3m", "schedule_type" : "Rate" }} 创建指定lts触发器(需配置访问LTS服务权限的委托)。 POST https://{Endpoint}/v2/{project_id}/fgs/triggers/{function_urn}{ "trigger_type_code" : "LTS", "trigger_status" : "ACTIVE", "event_data" : { "log_group_id" : "ccd3fa30-7c86-4590-8a9d-XXX", "log_group_name" : "function_flow_lts_group_XXX", "log_topic_id" : "5b4944dd-9603-481d-9b91-XXX", "log_topic_name" : "79eebdc0-3a0d-4231-b88e-XXX" }} 创建指定smn触发器。 POST https://{Endpoint}/v2/{project_id}/fgs/triggers/{function_urn}{ "trigger_type_code" : "SMN", "trigger_status" : "ACTIVE", "event_data" : { "topic_urn" : "urn:smn:{region}:{project_id}:Failed_times" }}
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 trigger_id String 触发器ID。 trigger_type_code String 触发器类型。 TIMER: "定时触发器。" APIG: "APIG触发器。" CTS: "云审计服务触发器。" DDS: "文档数据库服务触发器。" DMS: "分布式服务触发器。" DIS: "数据接入服务触发器。" LTS: "云日志服务触发器。" OBS: "对象存储触发器。" SMN: "消息通知服务触发器。" KAFKA: "专享版消息通知服务触发器。" 枚举值: TIMER APIG CTS DDS DMS DIS LTS OBS SMN KAFKA RABBITMQ DEDICATEDGATEWAY OPENSOURCEKAFKA APIC GAUSSMONGO EVENTGRID IOTDA trigger_status String "触发器状态" ACTIVE: 启用状态。 DISABLED: 禁用状态。 枚举值: ACTIVE DISABLED event_data Object 触发器源事件。 last_updated_time String 最后更新时间。 created_time String 触发器创建时间。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应示例 状态码: 201 Created { "trigger_id" : "9a14fae1-78cf-4185-ac7a-429eb6dc41fb", "trigger_type_code" : "TIMER", "trigger_status" : "ACTIVE", "event_data" : { "name" : "Timer-cpg3", "schedule" : "3m", "schedule_type" : "Rate" }, "last_updated_time" : "2022-11-09 16:37:24", "created_time" : "2022-11-09 16:37:24"}
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 trigger_type_code 是 String 触发器类型。 TIMER: 定时触发器。 APIG: APIGW触发器。 CTS: 云审计触发器,需要先开通云审计服务。 DDS: 文档数据库触发器,需要开启函数vpc。 DMS: 分布式消息服务触发器,需要配置dms委托。 DIS: 数据接入服务触发器,需要配置dis委托。 LTS: 云审计日志服务触发器,需要配置lts委托。 OBS: 对象存储服务触发器。 KAFKA: 专享版本kafka触发器。 枚举值: TIMER APIG CTS DDS DMS DIS LTS OBS SMN KAFKA RABBITMQ DEDICATEDGATEWAY OPENSOURCEKAFKA APIC GAUSSMONGO EVENTGRID IOTDA trigger_status 否 String 触发器状态,取值为ACTIVE,DISABLED。 枚举值: ACTIVE DISABLED event_type_code 否 String 消息代码。 event_data 是 Object 事件结构体。
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 trigger_id String 触发器ID。 trigger_type_code String 触发器类型。 TIMER: "定时触发器。" APIG: "APIG触发器。" CTS: "云审计服务触发器。" DDS: "文档数据库服务触发器。" DMS: "分布式服务触发器。" DIS: "数据接入服务触发器。" LTS: "云日志服务触发器。" OBS: "对象存储触发器。" SMN: "消息通知服务触发器。" KAFKA: "专享版消息通知服务触发器。" 枚举值: TIMER APIG CTS DDS DMS DIS LTS OBS SMN KAFKA RABBITMQ DEDICATEDGATEWAY OPENSOURCEKAFKA APIC GAUSSMONGO EVENTGRID IOTDA trigger_status String "触发器状态" ACTIVE: 启用状态。 DISABLED: 禁用状态。 枚举值: ACTIVE DISABLED event_data Object 触发器源事件。 last_updated_time String 最后更新时间。 created_time String 触发器创建时间。 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • URI PUT /v2/{project_id}/fgs/triggers/{function_urn}/{trigger_type_code}/{trigger_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户项目 ID,获取方式请参见获取项目ID。 function_urn 是 String 函数的URN,详细解释见FunctionGraph函数模型的描述。 trigger_type_code 是 String 触发器类型代码。 枚举值: TIMER APIG CTS DDS DMS DIS LTS OBS SMN KAFKA RABBITMQ DEDICATEDGATEWAY OPENSOURCEKAFKA APIC GAUSSMONGO EVENTGRID IOTDA trigger_id 是 String 触发器编码。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 trigger_status 否 String 触发器状态 枚举值: ACTIVE DISABLED event_data 否 Array of TriggerEventData objects 触发器更新事件 表4 TriggerEventData 参数 是否必选 参数类型 描述 is_serial 否 Boolean 串行处理数据 max_fetch_bytes 否 Integer 最大字节数 polling_interval 否 Integer 拉取周期 polling_unit 否 String 拉取周期单位 枚举值: ms s
  • 响应示例 状态码: 200 OK { "trigger_id" : "9a14fae1-78cf-4185-ac7a-429eb6dc41fb", "trigger_type_code" : "TIMER", "trigger_status" : "ACTIVE", "event_data" : { "name" : "Timer-cpg3", "schedule" : "3m", "schedule_type" : "Rate" }, "last_updated_time" : "2022-11-09 16:37:24", "created_time" : "2019-10-29171553"} 状态码: 404 Not Found { "error_code" : "FSS.0404", "error_msg" : "not found"}
  • 响应示例 状态码: 200 OK { "result" : "{\"statusCode\": 200, \"isBase64Encoded\": false, \"body\": \"{\\\"key\\\": \\\"value\\\"}\", \"headers\": {\"Content-Type\": \"application/json\"}}", "log" : "2022-09-20T11:43:57Z Start invoke request '1cbe80f3-3c65-475e-ad88-76ac518d386a', version: v1\nHello, World!\n\n2022-09-20T11:43:58Z Finish invoke request '1cbe80f3-3c65-475e-ad88-76ac518d386a', duration: 65.828ms, billing duration: 66ms, memory used: 21.473MB, billing memory: 128MB", "status" : 200, "request_id" : "1cbe80f3-3c65-475e-ad88-76ac518d386x"}
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 X-Cff-Log-Type 否 String 取值为:tail(返回函数执行后的4K日志),或者为空(不返回日志)。 X-CFF-Request-Version 否 String 返回体格式,取值v0,v1。 v0:默认返回文本格式 v1:默认返回json格式,sdk需要使用此值。 表3 请求Body参数 参数 是否必选 参数类型 描述 {自定义key} 是 Object 执行函数请求体
  • 响应参数 状态码: 200 表4 响应Header参数 参数 参数类型 描述 X-Cff-Invoke-Summary String - X-Cff-Request-Id String - 表5 响应Body参数 参数 参数类型 描述 request_id String 请求ID。 result String 函数执行结果 log String 函数执行返回日志 status Integer 函数执行返回状态 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 503 表11 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应示例 状态码: 200 OK { "reservedinstances" : [ { "func_urn" : "urn:fss:xxxxx:46b6f338fc3445b8846c71dfb1fbxxxx:function:csharp:test2-0:latest", "count" : 2 } ], "page_info" : { "next_marker" : 2, "previous_marker" : 0, "current_count" : 2 }}
  • URI GET /v2/{project_id}/fgs/functions/reservedinstances 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户项目 ID,获取方式请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 marker 否 String 上一次查询到的最后的记录位置。 缺省值:0 limit 否 String 每次查询获取的最大函数记录数量 最大值:400 如果不提供该值或者提供的值大于400或等于0,则使用默认值:400 如果该值小于0,则返回参数错误。 缺省值:400 urn 否 String 查询指定函数版本预留实例数的函数urn。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 reservedinstances Array of FuncReservedInstance objects 函数预留实例列表 page_info PageInfo object count Long 函数个数 表4 FuncReservedInstance 参数 参数类型 描述 func_urn String 函数urn count Long 预留实例数目 表5 PageInfo 参数 参数类型 描述 next_marker Long 下一次读取位置 previous_marker Long 上一次读取位置 current_count Long 当前页总数 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 处理遥测 http://localhost:{PORT}" 使用遥测 API 订阅后,扩展会自动开始通过遥测侦听器接收来自FunctionGraph的遥测数据。每个 POST 请求正文都包含 Event 对象数组。 订阅事件类型包括三大类:platform、function、extension。 类别 Event Type 描述 平台事件 platform 函数的执行情况 函数日志 function 来自函数代码的日志 扩展日志 extension 来自扩展代码的日志 platform类型事件包括以下几类: 类别 子类型 含义 数据结构 示例 开始调用事件 platform.initStart 表示函数初始化阶段已开始 Event: Object - name: String = platform.initStart --事件类型 - startTime: String --开始时间 - traceId: String --调用ID { "name":"platform.initStart ", "startTime": "2023-02-01T00:03:50.000Z ", "traceId": "69be64a7-0233-11e8-82e4-e5d37911193e" } platform.start 表示函数调用阶段已开始 platform.restoreStart 表示函数环境还原事件已启动 调用完成事件 platform.initRuntimeDone, 表示函数初始化阶段已完成 Event: Object - name: String = platform.initRuntimeDone --事件类型 - startTime: String --开始时间 - traceId: String --调用ID - status: String --调用状态 { "name": " platform.initRuntimeDone", "startTime": "2023-02-01T00:03:50.000Z", "traceId": "69be64a7-0233-11e8-82e4-e5d37911193e", "status":" success ", } platform.RuntimeDone 表示函数调用阶段已完成 platform.restoreRuntimeDone 表示函数环境还原事件已完成 调用报告 platform.initReport 包含函数初始化阶段的总体报告 Event: Object - name: String = platform.initReport | platform.report | platform.restoreReport --事件类型 - startTime: String --开始时间 - traceId: String --调用ID - endTime: String --结束时间 - status: String --调用状态 - metrics: reportMetrics --调用数据 reportMetrics: Object - durationMs: float64 --调用时长 - billingDurationMS: float64 --计费时长 - memoryUsed: float64 --内存使用大小 - memorySize: int --内存大小 - podName: String --pod名 { "name": " platform.initReport", "startTime": "2023-02-01T00:03:50.000Z", "traceId": "69be64a7-0233-11e8-82e4-e5d37911193e", "endTime":" 2023-02-02T00:03:50.000Z ", "status":" success ", "reportMetrics": { "durationMs": 10.6, "billingDurationMS": 11, "memoryUsed": 23.4, " memorySize ": 128, "podName": pool22-300-128-fusion-64774779-4g77v, } } platform.report 包含函数调用阶段的总体报告 platform.restoreReport 包含函数还原事件的总体报告 Function类型事件: 类型 数据结构 示例 Function Event: Object - name: String --事件类型 - startTime: String --开始时间 - logs: string --日志内容 对于需要采集的日志内容需要在日志中添加[Function],例如:[Function]this is a simple log. { "name": "function", "startTime": "2023-02-01T00:03:50.000Z", "logs": "[Function]this is a simple log." } Extension类型事件: 类型 数据结构 示例 Extension Event: Object - name: String --事件类型 - startTime: String --开始时间 - logs: string --日志内容 对于需要采集的日志内容需要在日志中添加[Extension],例如:[Extension]this is a simple log. { "name": "extension", "startTime": "2023-02-01T00:03:50.000Z", "logs": "[Extension]this is a simple log." } 父主题: 概述
  • 如何在扩展中使用OpenTelemetry API 遥测是一种特殊的扩展,扩展进程中必须完成以下工作才能成功启用遥测功能: 在使用OpenTelemetry API之前,需要先注册拓展,具体内容可参考扩展API使用。 在拓展启动一个httpClient,向FunctionGraph发送注册Telemetry API的请求。 创建一个httpServer遥测侦听器,接收FunctionGraph发送的遥测数据。用户可以对此数据进行任何自定义处理。 最多只能创建一个遥测扩展,遥测的端口限制和扩展的端口限制一致,127.0.0.1:8081 ~ 127.0.0.1:8090 。 遥测扩展示例:Telemetry.zip 父主题: 概述
  • 如何通过扩展完成SkyWalking的对接 通过以下对接SkyWalking的示例帮助您理解如何通过扩展API将函数与监控、可观察性、安全性和监管等工具集成。 当用已编译的语言实现扩展时,在本地编译生成二进制文件;使用非编译的语言实现扩展时,需要把对接第三方平台需要的依赖一起打包上传,且需要函数的运行时兼容。 将skywalking agent直接嵌入到扩展代码中,即可通过扩展完成对函数请求的监控。 示例代码:skywalking-go.zip func startSkywalkingAgent() { r, err := reporter.NewGRPCReporter("10.174.242.117:11800", reporter.WithCDS(100)) if err != nil { log.Fatalf("new reporter error %v \n", err) return } defer r.Close() tracer, err := go2sky.NewTracer("testservice", go2sky.WithReporter(r)) if err != nil { log.Fatalf("create tracer error %v \n", err) return } go2sky.SetGlobalTracer(tracer) sm, err := httpPlugin.NewServerMiddleware(go2sky.GetGlobalTracer()) if err != nil { log.Fatalf("create server middleware error %v \n", err) return } http.HandleFunc(invokeURL, sm(RequestHandler{}).ServeHTTP) http.ListenAndServe(currentExtensionAddr, nil)} 其中10.174.242.117:11800 用户可以根据自己部署的是sykwalking collector的地址即可,testservice 用户可以根据自己项目服务进行命名。 在本地编译生成二进制文件,将二进制文件和以extension为前缀的.sh文件类型的脚本文件打包上传依赖。扩展依赖包的文件结构如下: extension - extensionDemo.sh Extension # 编译后的二进制文件 成功对接后Service界面如下: Endpoint界面如下: 父主题: 扩展API
  • 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 注册OpenTelemetry API http://${EXTENSION_API_ADDR}/telemetry 您可以通过 EXTENSION_API_ADDR 环境变量得到平台开放的提供注册的API地址,例如对于Python,EXTENSION API 的获取方式为os.getenv("EXTENSION_API_ADDR ")。 路径 - /telemetry 方法 – POST 主体参数 { "subscriber": { "protocol": "POST", "uri": "http://127.0.0.1:{PORT}" }, "types": ["platform", "function", "extension"],} 请求体中必须包括上述JSON字段。 protocol为请求类型,限制为POST。 uri为扩展进程中遥测侦听器URI,用于接收FunctionGraph发送的遥测数据,其中PORT可选8081~8090。 Types为您希望扩展订阅的事件类型的信息,可选platform、function、extension。 响应代码 200 - 订阅请求成功 400 - 请求错误,并返回错误信息 500 - 服务错误 父主题: 概述
  • 制作扩展依赖包 准备一个zip包,zip包中用于扩展进程的编写,可以拉起一个扩展进程,zip包中限制如下: zip包中必须含有extension命名的文件夹,extension的文件夹中必须包含以extension为前缀,.sh文件类型的脚本文件,用于后续扩展启动扩展进程,例如zip包的文件结构如下: extension - extensionDemo.sh test.py 代码内容参考extension.zip。 其中extensionDemo.sh 中的语言所在路径参考下表。 表1 多语言路径说明 语言 路径 Java8 /opt/function/runtime/java8/rtsp/jre/bin/java Java11 /opt/function/runtime/java11/rtsp/jre/bin/java Node.js6 /opt/function/runtime/nodejs6.10/rtsp/nodejs/bin/node Node.js8 /opt/function/runtime/nodejs8.10/rtsp/nodejs/bin/node Node.js10 /opt/function/runtime/nodejs10.16/rtsp/nodejs/bin/node Node.js12 /opt/function/runtime/nodejs12.13/rtsp/nodejs/bin/node Node.js14 /opt/function/runtime/nodejs14.18/rtsp/nodejs/bin/node Python2.7 /opt/function/runtime/python2.7/rtsp/python/bin/python Python3.6 /opt/function/runtime/python3.6/rtsp/python/bin/python3 Python3.9 /opt/function/runtime/python3.9/rtsp/python/bin/python3 PHP7.3 /opt/function/runtime/php7.3/rtsp/php/bin/php 父主题: 扩展API
  • 概述 通过FunctionGraph的OpenTelemetry API,扩展可以直接从FunctionGraph接收到函数执行期间初始化、调用期间的遥测数据,也可以收集函数执行期间和扩展执行期间的用户打印日志。 在FunctionGraph执行时,您可以从扩展向OpenTelemetry API发送订阅请求,订阅后,FunctionGraph会自动将所有遥测数据发送到您的扩展,您可以对数据进行处理,例如存储到OBS、写入文件中或转发给其他可观测性工具。 扩展可以使用遥测 API 订阅三种不同的遥测流: 平台遥测:日志、指标和跟踪,描述与执行环境运行时生命周期、扩展生命周期和函数调用相关的事件和错误。 函数日志:FunctionGraph函数代码生成的自定义日志。 扩展日志:FunctionGraph扩展代码生成的自定义日志。 如何在扩展中使用OpenTelemetry API 注册OpenTelemetry API 处理遥测 父主题: 遥测API
  • 注册 http://${EXTENSION_API_ADDR}/extension/register 进程部署的扩展都需要在FunctionGraph注册成功后才能接收事件。您可以通过 EXTENSION_API_ADDR 环境变量得到FunctionGraph平台开放的提供注册的扩展API地址,例如对于Python,EXTENSION API 的获取方式为os.getenv("EXTENSION_API_ADDR ")。 路径 - /extension/register 方法 – POST 请求标头 FunctionGraph-Extension-Name – 扩展名的完整文件名。必需:是。类型:字符串。 FunctionGraph-Extension-Address – 该扩展用于接收调用事件的服务端地址。必需:是。类型:字符串。例如:127.0.0.1:8081。 FunctionGraph需要使用扩展的完整文件名来验证扩展是否已完成引导启动,且扩展注册的请求头必须包含本扩展启动的httpServer的地址和端口。例如,请求头的格式为: headers = {'Content-type': 'application/json','FunctionGraph-Extension-Name': "extensionDemo.sh"'FunctionGraph-Extension-Address': "127.0.0.1:8011"} 当前规定最多支持十个扩展,扩展启动的Server地址和端口限制为127.0.0.1:8081 ~ 127.0.0.1:8090,且每个扩展的端口不可重复。 主体参数 不做解析 响应代码 200 - 响应正文包含函数名称、函数版本和处理程序名称。 其他为错误请求 示例响应正文 { "functionName": "helloWorld", "functionVersion": "$LATEST", "errorInfo": { "errorType": "", "errorMessage": "" }}
  • 调用 http://${FunctionGraph-Extension-Address}/extension/invoke 在注册完成后,创建的httpServer的可以监听此路径,用于接收FunctionGraph函数请求调用事件。 路径 - /extension/register 方法 – POST 主体参数 traceId - 请求的requestID invokedFunctionUrn - 请求调用的URN 响应代码 200 - 响应正文包含函数名称、函数版本和处理程序名称。 其他为错误请求 示例响应正文 { "traceId": "3da1f2dc-3222-475e-9205-e2e6c6318895", "invokedFunctionUrn": "sn:cn:yrk:1111:function:0@test@hello:latest"}
  • 修订记录 表1 修订记录 发布日期 修订记录 2022-11-21 新增接口内容如下: 分页查询指定函数流记录 2022-11-14 新增接口内容如下: 创建依赖包版本 获取依赖包版本列表 获取依赖包版本详情 删除依赖包版本 获取按指定指标排序的函数列表 获取函数预留实例配置列表 获取函数预留实例数量 修改接口内容如下: 下线“函数异步执行并返回预留实例ID” 2022-09-07 新增错误码: FSS.4208 新增接口内容如下: 修改函数预留实例数量 2022-07-29 新增错误码: FSS.1206 新增接口内容如下: 函数异步执行并返回预留实例ID 更新函数最大实例数 设置函数异步配置信息 停止函数异步调用请求 2022-04-29 新增接口内容如下: 同步执行函数流 2022-04-02 新增接口内容如下: 异步执行工作流 删除函数流 查询函数流 创建函数流 获取指定函数流执行实例列表 获取指定函数流执行实例 获取指定函数流实例的元数据 修改指定函数流实例的元数据 获取函数流指标 获取指定函数流指标 重试函数流 停止函数流 2022-01-21 接口修改内容如下: 函数管理域 新增获取函数异步调用请求列表接口。 新增修改函数调用链配置接口。 新增获取函数调用链配置接口。 2020-08-29 修改内容如下: 新增获取依赖包列表接口。 新增创建依赖包接口。 新增删除指定的依赖包接口。 新增获取指定依赖包接口。 新增更新指定依赖包接口。 新增获取指定函数的测试事件列表接口。 新增创建测试事件接口。 新增删除指定测试事件接口。 新增获取测试事件详细信息接口。 新增更新测试事件详细信息接口。 新增查询租户配额接口。 新增获取指定时间段的函数运行指标接口。 新增租户函数统计信息接口。 新增更新触发器接口。 2020-06-16 新增API Explorer跳转链接。 2020-03-30 删除工作流的API接口。 2019-05-27 按照V3.0版本模板调整API参考,不涉及接口变化。 2018-11-16 函数实现与云监控服务的对接, 新增FunctionGraph监控指标说明。 2018-8-29 函数新增禁用功能,相关内容修改。 2018-8-20 支持的运行时新增Node.js 8.10,增加相关内容。 触发器类型新增LTS、CTS,增加相关内容。 2018-6-30 增加FunctionGraph函数相关的API接口。 2018-5-15 修改文档结构。 2018-02-28 第一次正式发布。
共100000条