这篇向你介绍如何使用控制台和使用 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参数请填写http,TriggerDesc参数配置说明如下:
| 名称 | 类型 | 必选 | 描述 |
| 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",}