华为云用户手册

  • 请求参数 表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 表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 错误信息
  • 响应示例 状态码: 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"}
  • 响应参数 状态码: 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 错误信息
  • 请求参数 表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 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." } 父主题: 概述
  • 如何通过扩展完成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
  • 如何在扩展中使用OpenTelemetry API 遥测是一种特殊的扩展,扩展进程中必须完成以下工作才能成功启用遥测功能: 在使用OpenTelemetry API之前,需要先注册拓展,具体内容可参考扩展API使用。 在拓展启动一个httpClient,向FunctionGraph发送注册Telemetry API的请求。 创建一个httpServer遥测侦听器,接收FunctionGraph发送的遥测数据。用户可以对此数据进行任何自定义处理。 最多只能创建一个遥测扩展,遥测的端口限制和扩展的端口限制一致,127.0.0.1:8081 ~ 127.0.0.1:8090 。 遥测扩展示例:Telemetry.zip 父主题: 概述
  • 响应参数 状态码: 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
  • 注册 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"}
  • 概述 通过FunctionGraph的OpenTelemetry API,扩展可以直接从FunctionGraph接收到函数执行期间初始化、调用期间的遥测数据,也可以收集函数执行期间和扩展执行期间的用户打印日志。 在FunctionGraph执行时,您可以从扩展向OpenTelemetry API发送订阅请求,订阅后,FunctionGraph会自动将所有遥测数据发送到您的扩展,您可以对数据进行处理,例如存储到OBS、写入文件中或转发给其他可观测性工具。 扩展可以使用遥测 API 订阅三种不同的遥测流: 平台遥测:日志、指标和跟踪,描述与执行环境运行时生命周期、扩展生命周期和函数调用相关的事件和错误。 函数日志:FunctionGraph函数代码生成的自定义日志。 扩展日志:FunctionGraph扩展代码生成的自定义日志。 如何在扩展中使用OpenTelemetry API 注册OpenTelemetry API 处理遥测 父主题: 遥测API
  • 修订记录 表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 第一次正式发布。
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:自定义策略中授权项定义的内容即为权限。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。 FunctionGraph服务支持的自定义策略授权项如表1所示。 表1 FunctionGraph授权项明细 权限 对应API接口 授权项 IAM项目(Project) 企业项目(Enterprise Project) 获取函数列表 GET /v2/{project_id}/fgs/functions FunctionGraph:function:list √ √ 获取函数的metadata GET /v2/{project_id}/fgs/functions/{function_urn}/config FunctionGraph:function:getConfig √ √ 获取指定函数代码 GET /v2/{project_id}/fgs/functions/{function_urn}/code FunctionGraph:function:getCode √ √ 创建函数 POST /v2/{project_id}/fgs/functions FunctionGraph:function:create √ √ 删除函数/版本 DELETE /v2/{project_id}/fgs/functions/{function_urn} FunctionGraph:function:delete √ √ 修改函数代码 PUT /v2/{project_id}/fgs/functions/{function_urn}/code FunctionGraph:function:updateCode √ √ 修改函数的metadata信息 PUT /v2/{project_id}/fgs/functions/{function_urn}/config FunctionGraph:function:updateConfig √ √ 发布函数版本 POST /v2/{project_id}/fgs/functions/{function_urn}/versions FunctionGraph:function:createVersion √ √ 获取指定函数的版本列表 GET /v2/{project_id}/fgs/functions/{function_urn}/versions FunctionGraph:function:listVersion √ √ 创建函数版本别名 POST /v2/{project_id}/fgs/functions/{function_urn}/aliases FunctionGraph:function:createAlias √ √ 修改函数版本别名信息 PUT /v2/{project_id}/fgs/functions/{function_urn}/aliases/{alias_name} FunctionGraph:function:updateAlias √ √ 删除函数版本别名 DELETE /v2/{project_id}/fgs/functions/{function_urn}/aliases/{alias_name} FunctionGraph:function:deleteAlias √ √ 函数版本的指定别名信息 GET /v2/{project_id}/fgs/functions/{function_urn}/aliases/{alias_name} FunctionGraph:function:getAlias √ √ 获取指定函数所有版本别名列表 GET /v2/{project_id}/fgs/functions/{function_urn}/aliases FunctionGraph:function:listAlias √ √ 获取指定函数的所有触发器 GET /v2/{project_id}/fgs/triggers/{function_urn} FunctionGraph:trigger: listSpecifiedFunctionTriggers √ √ 获取指定触发器的信息 GET /v2/{project_id}/fgs/triggers/{function_urn}/{trigger_type_code}/{trigger_id} FunctionGraph:trigger:get √ √ 删除指定函数的所有触发器 DELETE /v2/{project_id}/fgs/triggers/{function_urn} FunctionGraph:trigger: deleteSpecifiedFunctionTriggers √ √ 创建触发器 POST /v2/{project_id}/fgs/triggers/{function_urn} FunctionGraph:trigger:create √ √ 删除触发器 DELETE /v2/{project_id}/fgs/triggers/{function_urn}/{trigger_type_code}/{trigger_id} FunctionGraph:trigger:delete √ √ 同步执行函数 POST /v2/{project_id}/fgs/functions/{function_urn}/invocations FunctionGraph:function:invoke √ √ 异步执行函数 POST /v2/{project_id}/fgs/functions/{function_urn}/invocations-async FunctionGraph:function:invokeAsync √ √
  • 概述 您可以使用扩展API将函数与监控、可观察性、安全性和监管等工具集成,控制并参与 FunctionGraph生命周期的所有阶段。例如在函数调用之前、期间和之后捕获诊断信息;无需更改代码即可自动检测您的代码;在函数调用之前获取配置设置;通过安全代理检测功能发出警报;将遥测数据直接从函数异步发送到自定义目的地。 扩展作为独立进程在函数执行环境中运行。由于扩展作为进程运行,您可以使用不同于函数的语言来编写它们,建议您使用已编译的语言实现扩展。在这种情况下,扩展是一个独立的二进制文件,与支持的运行时兼容。如果使用非编译的语言,请确保和函数的运行时兼容。 当前http和事件类型函数支持扩展的使用, 自定义镜像 不支持。 您可以通过将扩展制作为依赖包的方式添加到函数。 父主题: 扩展API
  • 步骤二:创建父函数 在控制台创建父函数。委托名称选择包含“FunctionGraph Administrator”或“Tenant Administrator”权限的委托,本例所选参数如图2所示,其他参数保持默认。 图2 配置参数 在“代码”页签,进行代码编辑,示例代码如下所示。 import jsonimport requestsdef handler (event, context): token = context.getToken() project_id = context.getProjectID() urn = 'urn:fss:xx-xxxxx-x:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:function:xxx:subfunction:latest' #子函数的urn,在子函数详情页拓扑图的右侧可查询 url = 'https://functiongraph.xx-xxxxx-x.xxxxxxxxxxxxx.com/v2/%s/fgs/functions/%s/invocations' % (project_id,urn) headers = { "x-auth-token": token, "content-type": 'application/json' } body = {"k":"v"} resp = requests.post(url, json=body, headers=headers, verify=False) print(resp.text) return { "statusCode": 200, "isBase64Encoded": False, "body": json.dumps(event), "headers": { "Content-Type": "application/json" } }
  • 监控指标 表1 监控指标 指标名称 显示名 描述 单位 上限值 下限值 建议阈值 值类型 指标意义 所属维度 count 调用次数 该指标用于统计函数调用次数 次数 - 0 - Int 该指标用于统计函数调用次数 package-functionname failcount 错误次数 该指标用于统计函数调用错误次数 次数 - 0 - Int 该指标用于统计函数调用错误次数 package-functionname rejectcount 被拒绝次数 该指标用于统计函数调用被拒绝次数 次数 - 0 - Int 该指标用于统计函数调用被拒绝次数 package-functionname duration 平均运行时间 该指标用于统计函数调用平均运行时间 毫秒 - 0 - Int 该指标用于统计函数调用平均运行时间 package-functionname maxDuration 最大运行时间 该指标用于统计函数调用最大运行时间 毫秒 - 0 - Int 该指标用于统计函数调用最大运行时间 package-functionname minDuration 最小运行时间 该指标用于统计函数调用最小运行时间 毫秒 - 0 - Int 该指标用于统计函数调用最小运行时间 package-functionname
  • 基本概念 帐号 您注册公有云服务时的帐号,帐号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号安全,建议您不要直接使用帐号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由帐号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看帐号ID和用户ID。通常在调用API的鉴权过程中,您需要用到帐号、用户和密码等信息。 区域 指云资源所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。通过在不同地区创建云资源,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。 可用区 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 公有云区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您帐号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 400 FSS.0400 Invalid parameter. 无效参数 检查请求body体中参数 400 FSS.1001 Invalid query parameter. 无效的查询参数 检查查询参数 400 FSS.1002 Invalid function name. 无效的函数名称 检查函数名称 400 FSS.1003 Invalid function handler. 无效的函数Handler 检查函数执行入口 400 FSS.1004 Invalid Package (function app). 无效的函数包 检查函数包 400 FSS.1005 Invalid runtime. 无效的Runtime 检查运行时 400 FSS.1006 Invalid function code entry mode. 无效的代码类型 检查代码类型 400 FSS.1007 Invalid function memory. 无效的内存 检查函数内存 400 FSS.1008 Invalid function timeout. 无效的超时时间 检查函数超时时间 400 FSS.1009 Invalid function UserData. 无效的环境变量 检查函数环境变量 400 FSS.1010 Invalid URL. 无效的URL 检查URL 400 FSS.1011 Invalid function code. 无效的函数代码 检查函数代码 400 FSS.1012 The function code must be configured. 函数代码不能为空 检查函数代码 400 FSS.1013 Invalid file type. 无效的文件类型 检查文件类型 400 FSS.1014 Invalid function alias. 无效的函数版本别名 检查函数别名 400 FSS.1015 Invalid function version. 别名对应的版本无效 检查函数版本 400 FSS.1016 The function cannot be published because no changes have been made since last publication. 无效的版本发布操作,与上次发布相比无任何更改 确认与上次版本发布相比函数进行了更改 400 FSS.1017 The number of environment variables exceeds the maximum allowed limit (20). 环境变量个数超过限制(20) 检查环境变量的个数 400 FSS.1018 The total size of environment variables exceeds the maximum allowed limit (2 KB). 环境变量总大小超过限制(2K) 检查环境变量的总大小 400 FSS.1019 The description exceeds the maximum allowed limit (512 characters). 描述信息长度超过限制(512 字符数) 检查描述长度 400 FSS.1022 Only one YAML file is allowed. 只容许有一个YAML文件 确认是否只有一个YAML文件 400 FSS.1023 The imported file is too large. 导入的文件太大了,超过了最大限制 检查导入文件的大小 400 FSS.1024 Invalid dependency. 无效的依赖包 检查依赖包 400 FSS.1025 Invalid YAML file. 无效的YAML文件 检查YAML文件 400 FSS.1026 Invalid Concurrency. 无效的并发策略 检查并发策略 400 FSS.1027 Invalid packageName (app name). 无效的包名或者应用名称 检查包和应用名称。 400 FSS.1028 The app cannot be deleted because it contains functions. 该应用不能删除,因为该应用下还有函数存在 应用删除前,检查其下是否有函数存在 400 FSS.1029 The default app cannot be deleted. 默认的应用不能删除 默认的应用不能删除 400 FSS.1031 The dependency already exists. 依赖包已经存在 检查依赖包是否存在 400 FSS.1032 Invalid dependency type. 无效的依赖包类型,当前只容许本地zip包或者OBS上传 检查依赖包类型 400 FSS.1034 Invalid image URL. 无效的镜像地址 检查镜像地址 400 FSS.1035 The image does not exist. 该镜像不存在 检查镜像是否存在 400 FSS.1036 The VPC does not exist. 该VPC不存在 检查VPC是否存在 400 FSS.1037 No subnet matches the specified ID. 没有匹配的子网 检查子网是否存在 400 FSS.1038 The file system configuration already exists in the function. 在该函数中已经存在相同的文件系统配置 检查文件系统配置是否重复 400 FSS.1039 The mounting path is invalid. 无效的挂载路径 检查挂载路径 400 FSS.1058 The app name and function name cannot be the same in the YAML file. 在YAML文件中不允许存在相同的应用名和函数名 检查YAML中应用名和函数名是否重复 400 FSS.1074 The event field is invalid. 无效的事件参数 检查事件参数 400 FSS.1075 The value of UserId or GroupId must be a non-zero integer from -1 to 65534. 用户ID和用户组ID必须是从-1到65534之间的整数(0、1000、1002除外) 检查用户ID和用户组ID 400 FSS.1076 The number of reserved instances exceeds the maximum allowed limit. 函数的预留实例数超过了最大限制 检查函数预留实例的个数 400 FSS.1077 The code and configuration of the function cannot be updated because the function has at least one reserved instance. 该函数下存在预留实例,不能更新函数代码和配置 检查函数下是否存在预留实例 400 FSS.1091 The additional version is invalid. 无效的灰度版本 检查灰度版本 400 FSS.1092 The weight of the additional version is invalid. 无效的灰度版本权重值 检查灰度版本权重值 400 FSS.1093 The major version and the additional version cannot be the same. 灰度版本不能与主版本一致 检查灰度版本和主版本 400 FSS.1101 Invalid trigger type. 无效的触发器类型 检查触发器类型 400 FSS.1102 Invalid SMN trigger parameters. 无效的SMN触发器参数 检查SMN触发器参数 400 FSS.1103 Invalid DMS trigger parameters. 无效的DMS触发器参数 检查DMS触发器参数 400 FSS.1104 Invalid DIS trigger parameters. 无效的DIS触发器参数 检查DIS触发器参数 400 FSS.1106 Invalid OBS trigger parameters. 无效的OBS触发器参数 检查OBS触发器参数 400 FSS.1107 Invalid APIG trigger parameters. 无效的APIG触发器参数 检查APIG触发器参数 400 FSS.1109 Invalid timer trigger parameters. 无效的定时任务触发器参数 检查定时任务触发器参数 400 FSS.1110 Invalid LTS trigger parameters. 无效的LTS触发器参数 检查LTS触发器参数 400 FSS.1112 The Kafka trigger parameters are invalid. 无效的Kafka触发器参数 检查Kafka触发器参数 400 FSS.1113 The username and password must be specified because Kafka SASL_SSL is enabled. 若Kafka开启了SASL_SSL协议,所以必须设置对应的用户名和密码 若Kafka开启了SASL_SSL协议,检查是否设置对应的用户名和密码 400 FSS.1114 The subnet of the function must be the same as that of the Kafka instance. 函数的子网与kafka实例所在的子网不一样 检查函数的子网与Kafka实例所在的子网是否一致 400 FSS.1116 Kafka instance configuration error. Please check the username and password. Kafka实例配置错误,请检查对应的用户名和密码是否正确 检查Kafka实例配置的用户名和密码是否正确 400 FSS.1117 Failed to query messages from the Kafka instance. 从kafka实例读取消息失败 检查Kafka实例是否正常 400 FSS.1164 Invalid DDS trigger parameters. 无效的DDS触发器参数 检查DDS触发器参数 400 FSS.1172 The database instance does not exist. 找不到指定的数据库实例 检查数据库实例 400 FSS.1173 DDS DB instance configuration error. Please contact DDS R&D personnel. DDS实例配置错误,请联系DDS研发人员 联系DDS开发人员 400 FSS.1301 The CTS trigger does not exist. CTS触发器不存在 检查CTS触发器 400 FSS.1303 Access denied due to insufficient permissions. 权限校验失败,访问被禁止 检查是否授权 400 FSS.1304 The CTS service failed to process the request. 服务器未能处理请求 联系CTS开发人员 400 FSS.1305 Invalid CTS trigger parameters. 无效的CTS触发器参数 检查CTS触发器参数 400 FSS.1306 The number of triggers exceeds the maximum allowed limit. 触发器达到上限 检查触发器数目是否达到上限 400 FSS.1307 The trigger name already exists. 触发器名称已存在 检查触发器名称是否重复 400 FSS.1308 The operation resource does not exist. 操作资源不存在 检查资源是否存在 400 FSS.1309 Invalid function URN. functionUrn验证错误 检查functionUrn 400 FSS.1310 Unauthorized user. 获取组用户Token验证失败 检查权限 400 FSS.1311 Unauthorized access. 未开通CTS服务 检查CTS服务是否开通 400 FSS.1312 The notification name must be specified. 关键通知名称为空 检查关键通知名称 400 FSS.1313 The number of resources to be operated has reached the maximum allowed limit (100). 操作资源超过100条上限 检查操作资源的数目是否超过上限 400 FSS.1314 The operation resource must be specified. 操作资源为空 检查是否操作资源是否为空 400 FSS.1316 The resource operation has already been selected. 选择重复的操作。 检查是否选择的相同的操作。 400 FSS.1317 The trigger name is too long. 触发器名称过长 检查触发器名字的长度 400 FSS.1318 Invalid trigger operation. 无效的触发器操作 检查触发器操作 400 FSS.1404 Invalid function initializer. 非法的函数初始化入口 检查函数初始化入口 400 FSS.1405 Invalid initialization timeout. 非法的函数初始化超时时间 检查函数初始化超时时间 401 FSS.0401 Unauthorized access. 未授权的访问 检查用户的权限 401 FSS.1118 Access denied. 访问受限,该用户不在白名单中 检查白名单配置 403 FSS.0403 Forbidden. 禁止操作 检查用户的操作权限 403 FSS.1040 The selected Xrole does not have permissions to mount the resources. 选择的委托没有权限挂载该资源类型 检查选择的委托权限 403 FSS.1041 The number of functions exceeds the maximum allowed limit (400). 租户的函数数量超过限制(400) 检查租户的函数数量是否超限 403 FSS.1042 The total code size of functions exceeds the maximum allowed limit (20 GB). 租户的函数的总大小超过限制(20G) 检查函数的总大小是否超过限制(20G) 403 FSS.1043 The number of aliases exceeds the maximum allowed limit. 别名数量超过了允许的最大限制 检查别名数量是否超过了允许的最大限制 403 FSS.1044 The number of apps exceeds the maximum allowed limit (400). 应用数量超过了允许的最多限制(400) 检查应用数量是否超过了允许的最多限制(400) 403 FSS.1045 The number of dependencies exceeds the maximum allowed limit. 依赖包数量超过了最大限制 检查依赖包数量是否超过了最大限制 403 FSS.1046 The dependency is inaccessible. 该依赖包不可用 检查依赖包是否可用 403 FSS.1047 The number of bound VPCs exceeds the maximum limit allowed for a tenant. 租户的绑定的VPC数量超过了最大限制 检查租户的绑定的VPC数量是否超过了最大限制 403 FSS.1048 The number of bound VPCs exceeds the maximum limit allowed for a project. 单个项目的绑定的VPC数量超过了最大限制 检查单个项目的绑定的VPC数量是否超过了最大限制 403 FSS.1049 The number of file systems mounted to the function exceeds the maximum allowed limit (5). 单个函数挂载文件系统数量超过了最大限制(5) 检查单个函数挂载文件系统数量是否超过了最大限制(5) 403 FSS.1068 The number of events configured for the function exceeds the maximum allowed limit. 单个函数的事件数超过了最大限制 检查单个函数的事件数是否超过了最大限制 403 FSS.1069 The size of EventData exceeds 4 KB. 事件大小超过了允许的最大限制(4KB) 检查代码大小是否超过了允许的最大限制(4KB) 403 FSS.1073 The function event already exists. 事件在函数中已经存在 检查事件在函数中是否已经存在 403 FSS.1094 The version cannot be deleted when it is used as the additional version of an alias. 不能删除正在被灰度版本使用的版本号 检查灰度版本号是否正在被使用 403 FSS.1096 The file sharing protocol of the mounted resource is not NFS. 挂载资源的文件共享协议不是NFS 检查挂载资源的文件共享协议是否为NFS 403 FSS.1108 The bucket configuration of the current trigger conflicts with that of an existing OBS trigger. 当前触发器的存储桶配置与现有OBS触发器的存储桶配置冲突 检查触发器的存储桶配置与现有OBS触发器的存储桶配置是否冲突 403 FSS.1121 Forbidden 访问受限,请检查是否有配置对应的DMS委托 检查是否配置对应的DMS委托 403 FSS.1122 Forbidden 访问受限,请检查是否有配置对应的DIS委托 检查是否有配置对应的DIS委托 403 FSS.1123 The number of pull triggers exceeds the maximum allowed limit (10). 拉模式的触发器数量达到最大值10 检查拉模式的触发器数量是否达到最大值10 403 FSS.1124 The number of APIs exceeds the maximum allowed limit. API数量超过了最大限制 检查API数量是否超过了最大限制 403 FSS.1125 Forbidden 无权限访问,请检查是否配置了对应的LTS委托 检查是否配置了对应的LTS委托 403 FSS.1126 You do not have permissions to call the API. 没有权限访问API 检查是否有权限访问API 403 FSS.1127 The EPS user does not have permissions to call the API. EPS用户没有权限访问该API 检查权限 403 FSS.1154 Aliases of a function bound with triggers cannot be deleted. 该函数别名下面存在触发器,不能删除该别名 删除函数别名之前,先删除其下的触发器 404 FSS.0404 The specified resource cannot be found. 没有找到指定的资源 检查访问的资源是否存在 404 FSS.1050 The mounted resource cannot be found. 找不到挂载的资源类型 检查挂载的资源类型是否存在 404 FSS.1051 The function does not exist. 找不到指定的函数 检查函数是否存在 404 FSS.1052 The version does not exist. 找不到指定的函数版本 检查函数版本是否存在 404 FSS.1053 The alias does not exist. 找不到指定的函数版本别名 检查函数的指定版本别名是否存在 404 FSS.1054 The function code package does not exist in OBS. 从OBS找不到指定的函数代码包 检查指定的函数代码包在OBS中是否存在 404 FSS.1055 The app does not exist in obs. 从OBS找不到指定的函数应用 检查指定的函数应用在OBS中是否存在 404 FSS.1056 The dependency does not exist. 找不到指定的依赖包 检查依赖包是否存在 404 FSS.1057 The function name does not exist in the YAML file. 在YAML文件中找不到该函数名 检查YMAL文件中是否有该函数名 404 FSS.1059 The function template does not exist. 函数模板不存在 检查函数模板是否存在 404 FSS.1060 The event template cannot be found. 事件模板不存在 检查事件模板是否存在 404 FSS.1070 The event cannot be found. 事件不存在 检查事件是否存在 404 FSS.1086 The function async invocation configuration does not exist. 函数异步配置不存在 函数异步配置不存在 404 FSS.1111 The Kafka resource cannot be found. 指定的kafka不存在 检查指定的Kafka是否存在 404 FSS.1130 The DIS stream does not exist. 没有找到指定的DIS通道 检查指定的DIS通道是否存在 404 FSS.1131 The trigger does not exist. 没有找到指定的触发器 检查指定的触发器是否存在 404 FSS.1132 The SMN trigger does not exist. View the SMN console. 没有找到指定的SMN触发器 检查指定的SMN触发器是否存在 404 FSS.1133 The DMS trigger does not exist. 没有找到指定的DMS触发器 检查DMS触发器是否存在 404 FSS.1134 The DIS trigger does not exist. 没有找到指定的DIS触发器 检查DIS触发器是否存在 404 FSS.1135 The DMS queue does not exist. 没有找到指定的DMS队列 检查指定的DMS队列是否存在 404 FSS.1136 The OBS trigger does not exist. 没有找到指定的OBS触发器 检查OBS触发器是否存在 404 FSS.1137 Invalid trigger type. 无效的触发器类型 检查触发器类型是否合法 404 FSS.1138 The APIG trigger does not exist. 没有找到指定的APIG触发器 检查APIG触发器是否存在 404 FSS.1139 The DMS consumer group does not exist. 没有找到指定的DMS消费组 检查DMS消费组是否存在 404 FSS.1140 The timer trigger does not exist. 没有找到指定的定时任务触发器 检查定时任务触发器是否存在 404 FSS.1160 The LTS trigger does not exist. 没有找到指定的LTS触发器 检查LTS触发器是否存在 404 FSS.1161 The LTS topic does not exist. 没有找到指定的LTS日志主题 检查指定的LTS日志主题是否存在 404 FSS.1163 The DDS trigger cannot be found. 找不到指定的DDS触发器 检查指定的DDS触发器是否存在 404 FSS.1171 The SMN topic does not exist. Create it on the SMN console. 该SMN的topic不存在 检查指定的SMN的topic是否存在 404 FSS.1174 The Kafka trigger does not exist. 找不到指定的Kafka触发器 检查定的Kafka触发器是否存在 406 FSS.0406 Not acceptable. 请求格式无效 对着api检查请求body体 406 FSS.1151 The OBS bucket is in a different region. OBS桶所在区域与当前区域不匹配 更换OBS桶 408 FSS.0408 Request timeout. 请求超时 检查网络 409 FSS.0409 The specified resource already exists. 指定的资源已经存在 检查是否重复创建资源 409 FSS.1061 The function already exists. 函数已经存在 检查是否重复创建函数 409 FSS.1062 The version already exists. 函数版本已经存在 检查是否重复创建函数版本 409 FSS.1063 The alias already exists. 函数版本别名已经存在 检查是否重复创建函数版本别名 409 FSS.1064 The app already exists. 函数应用已经存在 检查是否重复创建函数应用 409 FSS.1065 The dependency already exists. 依赖包已经存在 检查依赖包是否重复创建 409 FSS.1066 The version is already in use by another alias. 该版本号已经在其他别名中使用了 检查版本号是否已被占用 409 FSS.1067 The function template already exists. 函数模板已经存在 检查函数模板是否重复创建 409 FSS.1141 The SMN trigger already exists. 指定的SMN触发器已经存在 检查SMN触发器是否重复创建 409 FSS.1142 The DMS trigger already exists. 指定的DMS触发器已经存在 检查DMS触发器是否重复创建 409 FSS.1143 The DIS trigger already exists. 指定的DIS触发器已经存在 检查DIS触发器是否重复创建 409 FSS.1145 The OBS trigger already exists. 指定的OBS触发器已经存在 检查OBS触发器是否重复创建 409 FSS.1146 The APIG trigger already exists. 指定的APIG触发器已经存在 检查APIG触发器是否重复创建 409 FSS.1147 The request path already exists. APIG触发路径已存在 检查APIG触发路径是否已经存在 409 FSS.1148 The timer trigger already exists. 指定的定时任务触发器已经存在 检查指定的定时任务触发器是否已经存在 409 FSS.1149 The LTS trigger already exists. LTS触发器已存在 检查LTS触发器是否已存在 409 FSS.1150 The Kafka trigger already exists. 指定的kafka触发器已经存在 检查指定的Kafka触发器是否已经存在 409 FSS.1166 The DDS trigger already exists. 指定的DDS触发器已经存在 检查指定的DDS触发器是否已经存在 410 FSS.0410 The specified resource does not exist. 指定的资源不存在 检查指定的资源是否存在 412 FSS.1033 The dependency is currently in use. 依赖包正在使用,不能被删除 删除依赖包之前,请检查是否被使用 412 FSS.1090 The subnet is not in the ACTIVE state. 子网不是ACTIVE状态 检查子网状态是否为可用 412 FSS.1095 The mounted resource is not ready. 挂载资源还没有准备好 准备好挂载资源 412 FSS.1153 The triggering conditions have not been met. 触发器前置条件不满足 检查触发器前置条件 413 FSS.0413 The request body is too large. 请求体大小超过限制 检查请求体 413 FSS.1071 The size of the code package to be uploaded exceeds the maximum allowed limit (50 MB). 上传代码包大小超过限制(50M) 检查代码包大小 413 FSS.1072 The size of the inline code exceeds the maximum allowed limit (10 KB). 在线编辑代码大小超过限制(10K) 检查在线编辑代码大小是否超过限制(10K) 413 FSS.1201 The request body is too large. 请求体大小超过限制 检查请求体大小 424 FSS.0424 Invalid dependency. 无效的依赖 检查依赖是否有效 426 FSS.0426 An upgrade is required. 不支持该操作,需要升级 联系开发人员 426 FSS.1152 The selected bucket cannot be used to create a trigger. 所选的OBS桶不支持创建触发器 联系开发人员 428 FSS.0428 The preconditions have not been met. 先决条件不满足 检查先决条件 429 FSS.0429 Too many requests. 太多的请求 请求数过多,稍后重试 500 FSS.0500 Internal service error. 服务临时性异常,服务内部调用出错,稍后重试 服务临时性异常,服务内部调用出错,稍后重试 500 FSS.1162 The operation cannot take effect immediately due to service exception. 由于服务异常,该操作无法立即生效 联系开发人员 500 FSS.1202 The response body or callback body is invalid because they do not contain any status code. 函数返回的body无效 联系开发人员 500 FSS.1206 Failed to convert result for apig. 无法转换 apig 的结果 检查apig返回或联系开发人员 500 FSS.1302 Failed to save the data. 触发器存储失败 稍后重试或联系开发人员 500 FSS.1315 The CTS service is unavailable. 服务器异常 联系CTS开发人员 500 FSS.4001 function entry cannot be foundut. 找不到函数入口 请检查函数的执行入口和上传代码的函数入口是否一致 500 FSS.4002 The user function failed to run. 用户函数运行报错 请根据错误提示信息排查自身代码问题 500 FSS.4004 the return value of the function exceeds the maximum allowed limit 函数返回值大小超过平台限制 请检查函数返回值内容的大小是否超过平台限制(6M) 500 FSS.4010 invoke timed out. 函数执行超时 请检查函数超时的原因和配置的超时时间 500 FSS.4011 Initialization function execution times out. 初始化函数执行超时 请检查函数初始化超时的原因 500 FSS.4014 reading the storeObject timeout.Use larger memory 加载依赖包超时 请增加函数的内存规格 500 FSS.4021 trigger request of this tenant is limited at this frontend instance 函数的并发数超过限制 请联系技术支持工程师协助解决 500 FSS.4024 function metadata is not found. 函数间调用时检查函数不存在 1.请检查被调函数是否已删除 2.如果函数未删除,请联系技术支持工程师协助解决 500 FSS.4025 can not create a state using a stateless function 使用无状态函数创建状态实例 请检查函数是否为有状态函数 500 FSS.4026 instanceName is not exist 删除或查询有状态实例ID时,指定了未创建的实例名 请检查有状态实例名是否已经成功创建 500 FSS.4027 cannot be created repeatedly instanceID 使用了同一个实例名给同一个函数创建状态实例 请检查函数是否使用同一个有状态实例名重复创建状态实例 500 FSS.4140 the size of request body is beyond maximum body size. 函数的请求体超过平台限制(默认6M) 请检查函数的请求体大小是否超过限制,如果仍无法解决,请联系技术支持工程师协助解决 500 FSS.4201 function initialization failed 用户函数初始化失败 请检查初始化函数代码 500 FSS.4202 runtime bootstrap not found 函数找不到 bootstrap 文件 请检查 bootstrap 脚本文件路径配置是否正确 500 FSS.4203 runtime process is exited 用户 bootstrap 脚本未执行完退出 请检查 bootstrap 脚本是否存在异常退出的情况 500 FSS.4204 The user bootstrap script syntax is incorrect. 用户 bootstrap 脚本语法错误 请根据错误提示信息检查 bootstrap 脚本代码。 500 FSS.4205 runtime memory limit exceeded 函数使用的内存总量超过限制 请检查函数代码占用的内存大小和配置的内存大小限制 500 FSS.4206 failed to mount volumes for function 用户磁盘挂载失败 请检查代码中使用的磁盘信息(如:路径等)是否与配置信息一致。如果仍无法解决,请联系技术支持工程师协助解决 500 FSS.4207 disk uages exceed limit 磁盘使用超出限额 请检查函数代码中是否超额使用磁盘存储。如果仍无法解决,请联系技术支持工程师协助解决 500 FSS.4208 function invocation canceled 请求被取消 用户调用了请求取消接口 502 FSS.0502 Bad gateway. 网关错误 联系开发人员 502 FSS.1319 Invalid trigger name. 无效触发器名称 更换触发器名称 503 FSS.0503 Service unavailable. 服务不可用 联系开发人员 503 FSS.1115 The network is unreachable. 网络不可达 检查网络 503 FSS.1169 The network is unreachable. 网络不可达 检查网络 503 FSS.1170 Authentication error. 鉴权失败,请检查DDS的配置 检查DDS配置 503 FSS.1401 Failed to obtain the image information. 获取镜像信息失败 检查获取镜像的配置 503 FSS.1402 Failed to pull the image to create a container. 加载镜像创建容器失败 检查镜像地址 503 FSS.1403 Failed to pull the image to delete a container. 加载镜像删除容器失败 检查镜像地址 504 FSS.0504 Gateway timeout. 网关超时 检查网络 父主题: 附录
  • API概览 FunctionGraph API为开发者、合作伙伴提供开发、部署、托管、运维的开放接口,帮助用户快速、低成本地实现业务创新,缩短应用上线周期。 FunctionGraph API提供的接口有如下几种类型。 表1 接口简介 类型 说明 函数调用 包括同步执行函数、异步执行函数、函数异步执行并返回预留实例ID接口。 函数配额 查询租户配额。 函数依赖包 包括创建、删除、获取、更新依赖包等接口。 函数测试事件 包括创建、删除、获取、更新测试事件等接口。 函数调用链 获取、修改调用链配置。 函数生命周期管理 包括创建、删除函数等接口。 函数版本别名 包括创建、删除函数版本别名等接口。 函数指标 包括获取按指定指标排序的函数列表、租户函数统计信息、获取指定时间段的函数运行指标接口。 函数日志 获取指定函数的lts日志组日志流配置、开通lts日志上报功能。 函数预留实例 获取函数预留实例配置列表、修改函数预留实例数量。 函数导入导出 导入、导出函数。 函数触发器 包括创建、删除、更新触发器等接口。 函数流 查询、删除、创建、停止函数流等接口。 函数异步配置 获取、删除、设置函数异步配置信息等接口。
  • 状态码 状态码如表1所示 表1 状态码 状态码 返回 说明 200 - 请求成功。 204 - 请求成功。 400 Bad Request 服务器未能处理请求。 401 Unauthorized 被请求的页面需要认证。 403 Forbidden 对被请求页面的访问被禁止。 404 Not Found 服务器无法找到被请求的页面。 405 Method Not Allowed 请求中指定的方法不被允许。 406 Not Acceptable 服务器生成的响应无法被客户端所接受。 407 Proxy Authentication Required 用户必须首先使用代理服务器进行验证,这样请求才会被处理。 408 Request Timeout 请求超出了服务器的等待时间。 409 Conflict 由于冲突,请求无法被完成。 500 Internal Server Error 请求未完成,服务异常。 501 Not Implemented 请求未完成,服务器不支持所请求的功能。 502 Bad Gateway 请求未完成,服务器从上游服务器收到一个无效的响应。 503 Service Unavailable 请求未完成,系统暂时异常。 504 Gateway Timeout 网关超时。 父主题: 附录
  • URI GET /v2/{project_id}/fgs/workflows/{workflow_id}/executions-history 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 最小长度:1 最大长度:64 workflow_id 是 String 函数工作流 ID 最小长度:1 最大长度:512 表2 Query参数 参数 是否必选 参数类型 描述 offset 是 Integer 偏移量,表示从此偏移量开始查询,offset大于等于0 最小值:0 limit 是 Integer 分页查询,每页查询数据条数,取值范围:1,2,3...100 最小值:1 最大值:100 start_time 否 String 查询开始时间,UTC时间,格式:YYYY-MM-DD hh:mm:ss。若起始时间未填写,以终止时间前推3天为起始时间。 end_time 否 String 查询结束时间,UTC时间,格式:YYYY-MM-DD hh:mm:ss。若终止时间未填写,以起始时间后退3天未终止时间。若均未填写,默认查询最近3天数据。
  • 响应示例 状态码: 200 函数流执行查询返回体 { "executions" : [ { "workflow_id" : "c0aecc37-8b78-4fc5-81af-14af495dc053", "execution_id" : "41c25eec-a1ba-4789-9851-eaead00cd6b9", "status" : "success", "begin_time" : "2022-10-11T06:30:45Z", "end_time" : "2022-10-11T06:30:47Z", "last_update_time" : "2022-10-11T06:30:45Z", "created_by" : "c0aecc37-8b78-4fc5-81af-14af495dc053", "workflow_urn" : "urn:fss:cn-north-7:c53626012ba84727b938ca8bf03108ef:workflow:default:flow_nxy_tp:latest" }, { "workflow_id" : "c0aecc37-8b78-4fc5-81af-14af495dc053", "execution_id" : "74a29a25-2d6d-4b50-a02e-63b7c5b8ab93", "status" : "success", "begin_time" : "2022-10-11T06:30:24Z", "end_time" : "2022-10-11T06:30:26Z", "last_update_time" : "2022-10-11T06:30:25Z", "created_by" : "c0aecc37-8b78-4fc5-81af-14af495dc053", "workflow_urn" : "urn:fss:cn-north-7:c53626012ba84727b938ca8bf03108ef:workflow:default:flow_nxy_tp:latest" } ], "total" : 100, "size" : 10}
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 endpoints Array of strings Ip列表 address 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 错误信息
共100000条