tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

WebServer 镜像函数

PDF
聚焦模式
字号
最后更新时间: 2024-04-22 18:03:28
云函数 SCF 支持开发者将容器镜像部署为函数的功能。本文介绍镜像部署函数的背景信息、工作原理、函数开发、函数日志打印、冷启动优化、计费说明及使用限制。

背景信息

云函数 SCF 从设计开始即是基于云原生架构的 FaaS 产品。在 Runtime 层支持容器镜像部署为函数后,产品形态整体向容器化生态迈进。一方面,解决函数运行时的环境依赖问题,给予用户更大的自由发挥空间。另一方面,产品形态层面的呈现使得用户无需受困于 Kubernetes 集群管理、安全维护、故障诊断等技术门槛,将弹性伸缩、可用性等需求下沉至计算平台,进一步释放云计算能力。

工作原理

您在开发函数具体的逻辑之前,首先需要确认函数类型,云函数提供事件函数和 Web 函数两种类型。
云函数在函数实例初始化阶段,获得镜像仓库的临时用户名和密码作为访问凭证来拉取镜像。镜像拉取成功后,根据指定您所定义的启动命令 Command、参数 Args 及端口(固定为9000)启动您定义的 HTTP Server。最后,HTTP Server 将接收云函数的所有入口请求,包括来自您的事件函数调用及 Web 函数调用。
函数工作原理如下图所示:



基于镜像部署的函数开发

HTTP Server 搭建

基于镜像部署的函数,需要搭建 HTTP Server,配置要求如下:
监听 0.0.0.0:9000*:9000
HTTP Server 需在30秒内启动完毕。
如未完成,则可能会导致健康检查超时,出现以下错误:
The request timed out in 30000ms.Please confirm your http server have enabled listening on port 9000.

函数入参

event:POST 请求体(HTTP Body) 请求体包含事件数据,结构请参见 触发器事件消息结构汇总
context:请求头(HTTP Header)
公共参数,用于标识用户和接口签名的参数,每次请求中均需携带。
通过 X-Scf-Request-Id 获取当前请求 ID。
说明:
事件函数和 Web 函数均包含 Common Headers。
公共请求头由云函数生成,主要包含权限、函数基本信息等。
详细列表如下表所示:
Header 字段
描述
X-Scf-Request-Id
当前请求ID
X-Scf-Memory
函数实例运行时可使用的最大内存
X-Scf-Timeout
函数执行的超时时间
X-Scf-Version
函数版本
X-Scf-Name
函数名称
X-Scf-Namespace
函数所在命名空间
X-Scf-Region
函数所在地域
X-Scf-Appid
函数所有者的Appid
X-Scf-Uin
函数所有者的Uin
X-Scf-Session-Token
临时 SESSION TOKEN
X-Scf-Secret-Id
临时 SECRET ID
X-Scf-Secret-Key
临时 SECRET KEY
X-Scf-Trigger-Src
Timer(使用定时触发器时)


内置环境变量

自定义镜像场景相较于基于代码包部署,在容器内置的环境变量做了变更,您可以根据实际需要进行引用。
环境变量 Key
具体值或值来源
TENCENTCLOUD_RUNENV
SCF
USER_CODE_ROOT
/var/user/
USER
qcloud
SCF_FUNCTIONNAME
函数名
SCF_FUNCTIONVERSION
函数版本
TENCENTCLOUD_REGION
区域
TENCENTCLOUD_APPID
账号 APPID
TENCENTCLOUD_UIN
账号 UIN

函数调用

事件函数,用户需要监听固定路径 /event-invoke 来接受函数调用请求。
Web 函数,用户无需监听指定路径,API 网关将会以7层反向代理的方式透传请求路径。

函数日志打印

云函数 SCF 将以无侵入的方式,收集在容器内所产生的 stdout、stderr 等标准输出日志,并上报至日志模块。您在调用函数后,可以通过控制台查看日志聚合展示效果。

冷启动优化

镜像由于增加了基础环境、系统依赖等文件层,相较于基于代码包部署的完全内置,存在额外的文件下载和镜像解压的时间。为了进一步降低冷启动时间,推荐您使用以下策略。

优化镜像体积

在同一地域创建镜像仓库与函数。在函数触发镜像拉取时通过 VPC 网络进行拉取,以此获得更快更稳定的镜像拉取效率。
镜像制作秉承最小化原则,即仅包含必要基础环境、运行依赖,去除不必要的文件等。

开启镜像加速

通过开启镜像加速开关,函数平台会通过内部加速机制,预先将镜像就近缓存,在调用函数实例时,直接从缓存进行加载和解压,省去了镜像文件下载的时间。可获得平均 5 倍的启动速度提升。

操作步骤

1. 登录云函数控制台,选择左侧导航栏中的 函数服务
2. 在“函数服务”列表页面,选择需进行配置的镜像函数名。
3. 在“函数管理”页面中,选择函数代码
4. 在“函数代码”页面中,单击编辑,进入编辑模式。
5. 在“镜像加速”中,勾选“启用”,开启镜像加速模式。
6. 单击保存完成配置。

注意事项

该功能目前属于公测免费期,每个账户在单个地域下限制为最多开启5个函数加速。

使用预置并发

镜像部署搭配预置并发功能,预先启动函数实例,达到最优降低冷启动的体验,详情请参见 预置并发

计费说明

使用镜像部署函数的计费项与使用代码包部署的计费项完全一致。计费详情请参见 计费方式

使用限制

镜像大小

目前仅支持镜像(解压前)小于1Gi,如有特殊需要,可 提交工单 申请。建议您根据镜像的大小来选择适合的函数实例执行内存。
镜像大小(X)
执行内存(Y)
X < 256MB
256MB < Y < 512MB
256MB < X <512MB
512MB < Y < 1Gi
512MB < X < 1Gi
Y>1Gi

镜像仓库访问

仅支持腾讯云容器镜像服务企业版和个人版,详情可参见 容器镜像服务
容器镜像服务企业版镜像仓库详情可参见 镜像仓库基本操作
容器镜像服务个人版镜像仓库详情可参见 开通镜像仓库
仅支持同地域(Region)下私有镜像仓库的镜像读取。

容器内文件读写权限

默认 /tmp 可读可写,建议输出文件时选择 /tmp
避免使用其他用户的存在限制访问或执行的文件。
容器内文件可写层存储空间限制为512M。

构建镜像的客户端 CPU 架构限制

云函数当前是基于 X86 架构运行的,所以暂不支持运行在 ARM 平台上构建的镜像。ARM 的平台典型如 Apple Mac 搭载 M1 芯片的 PC 端。

构建镜像的客户端限制

满足其中之一即可:
Docker image manifest V2,schema 2 (使用 Docker version 1.10或者更新版本)
Open Container Initiative (OCI) Specifications (v1.0.0及以上)

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈