创建函数 URL

最近更新时间:2025-05-08 16:30:22

我的收藏
本文向您介绍如何使用控制台和使用 API 创建函数 URL。

使用控制台创建函数 URL

1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 函数服务页面,单击函数名,进入该函数详情页面。
3. 选择左侧导航中的函数 URL,单击新建函数 URL。如下图所示:

4. 新建函数 URL 页面,参考以下信息进行创建。

配置项
描述
别名/版本
URL 绑定在别名或者版本维度,每一个别名或者版本仅允许创建一个 URL。
公网/内网访问
可以根据业务需求选择开启公网或者内网 URL 访问。
CORS
使用 CORS 允许从任何域访问函数 URL。您还可以使用 CORS 来控制对函数 URL 的请求中特定 HTTP 标头和方法的访问。具体设置方法查看 跨源资源共享(CORS)
授权类型
授权类型支持选择开放CAM 鉴权
开放:不需要对函数请求进行身份验证,支持匿名访问,任何人都可以发起 HTTP 请求调用您的函数。
CAM 鉴权:需要对函数 CAM 鉴权验证,用户可以基于函数 InvokeFunctionUrl 接口进行资源管理和使用权限配置,详情请参见 函数 URL 认证鉴权配置
5. 单击确定完成创建。

使用 API 创建函数 URL

创建函数 URL 与创建触发器共用接口,公用参数详情请参见 设置函数触发方式,其中Type参数请填写httpTriggerDesc参数配置说明如下:
名称
类型
必选
描述
AuthType
String
授权类型,CAM 表示需使用 函数 URL 认证鉴权配置,NONE 表示无需授权。
NetConfig
NetConfig
网络访问配置,示例值:{ "EnableIntranet": true, "EnableExtranet": false }
CorsConfig
CorsConfig
CORS 配置,示例值:
{"Enable":true,"Origins":["*"],"Headers":["content-type","custom-header"],"Methods":["POST","PATCH"],"ExposeHeaders":["*"],"MaxAge":10,"Credentials":true}

NetConfig

名称
类型
必选
描述
EnableIntranet
Bool
是否开启内网访问。
EnableExtranet
Bool
是否开启公网访问。

CorsConfig

名称
类型
必选
描述
Enable
Bool
是否开启 CORS。
Origins
Array of String
Access-Control-Allow-Origin 参数指定了单一的源,告诉浏览器允许该源访问资源。或者,对于不需要携带身份凭证的请求,服务器可以指定该字段的值为通配符“*”,表示允许来自任意源的请求。
Headers
Array of String
Access-Control-Allow-Headers 标头字段用于预检请求的响应。其指明了实际请求中允许携带的标头字段。这个标头是服务器端对浏览器端 Access-Control-Request-Headers 标头的响应。
Methods
Array of String
Access-Control-Allow-Methods 标头字段指定了访问资源时允许使用的请求方法,用于预检请求的响应。其指明了实际请求所允许使用的 HTTP 方法。
ExposeHeaders
Array of String
Access-Control-Expose-Headers 头将指定标头放入允许列表中,供浏览器的 JavaScript 代码(如 getResponseHeader())获取。
MaxAge
Integer
Access-Control-Max-Age 头指定了 preflight 请求的结果能够被缓存多久。
Credentials
Bool
Access-Control-Allow-Credentials 头指定了当浏览器的 credentials 设置为 true 时是否允许浏览器读取 response 的内容。

参数示例

trigger_desc = {
"AuthType": "NONE",
"NetConfig": {
"EnableIntranet": true,
"EnableExtranet": false
},
"CorsConfig": {
"Enable":true,
"Origins":["*"],
"Headers":["content-type","custom-header"],
"Methods":["POST","PATCH"],
"ExposeHeaders":["*"],
"MaxAge":10,
"Credentials":true
}
}
params = {
"FunctionName": "helloworld",
"TriggerName": "func_url",
"TriggerDesc": json.dumps(trigger_desc),
"Type": "http",
"Namespace": "default",
"Enable": "OPEN",
}