云服务器内容精选

  • 使用限制 单账号跟踪的事件可以通过 云审计 控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的 CTS /system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到 对象存储服务 (OBS)或 云日志 服务(LTS),才可在OBS桶或LTS日志组里面查看历史事件信息。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。 CTS新版事件列表不显示数据类审计事件,您需要在旧版事件列表查看数据类审计事件。
  • 操作步骤 登录 FunctionGraph 控制台,配置 Java 函数,并打开“快照式冷启动”开关。 图1 开启快照式冷启动 (可选)配置 Restore Hook,并在函数代码中实现对应的 Hook 逻辑。 图2 开启Restore Hook 函数代码中Restore Hook示例如下: 函数发布新版本后,触发快照的自动化制作。 图3 发布新版本 请耐心等待快照制作完成(5min 超时时间)。 图4 快照制作中 图5 快照制作成功 调用 Java 函数,体验快照优化后的性能提升。
  • 概述 华为云发布的基于进程级快照的冷启动加速方案,是一种性能优化服务,用户无需额外付费,只需进行简单的配置、少量的代码修改,即可享受到该创新方案带来的冷启动性能提升。 当用户 Java 函数打开冷启动加速的配置开关后,华为云 FunctionGraph 会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。后续调用该函数并触发冷启动扩容时,会直接从提前初始化后的应用快照来恢复执行环境,而非重新走一遍初始化流程,以此达到极大提升启动性能的效果。
  • 概述 函数工作流 提供了按量和预留两种类型的实例。 按量实例是由函数工作流根据用户使用函数的实际情况来创建和释放,当函数工作流收到函数的调用请求时,自动为此请求分配执行环境。 预留实例是将函数实例的创建和释放交由用户管理,当您为某一函数创建了预留实例,函数工作流收到此函数的调用请求时,会优先将请求转发给您的预留实例,当请求的峰值超过预留实例处理能力时,剩余部分的请求将会转发给按量实例,由函数工作流自动为您分配执行环境。 预留实例在创建完成后,会自动加载该函数的代码、依赖包以及执行初始化入口函数,且预留实例会常驻环境,消除冷启动对业务的影响。(注意:不要依赖预留实例本身的初始化函数去执行一次性业务。) 预留实例当前支持配置固定数量的预留实例,也支持配置定时伸缩的预留实例、配置按指标弹性伸缩的预留实例和配置智能推荐的预留实例。 用户默认没有权限使用指标策略和智能推荐策略,如果需要使用该功能,请在工单系统提交工单添加白名单。
  • 概述 心跳函数用于检测用户函数运行时的异常,例如以下场景: 用户函数死锁,无法正常运行。 用户函数内存溢出,无法正常运行。 用户函数网络异常,无法正常运行。 在配置了自定义心跳函数后,当用户函数运行时,FunctionGraph每隔5s向函数实例发送一次心跳请求,触发心跳函数。如果心跳请求返回异常,FunctionGraph会认为函数实例异常,终止此函数实例。 FunctionGraph心跳请求的超时时间是3s,如果连续6次心跳请求未响应,函数实例将被终止。
  • 云日志服务(LTS)管理函数日志 FunctionGraph支持开通云日志服务(LTS),使用更丰富的函数日志管理功能。开通云日志服务后,FunctionGraph会自动创建1个日志组(functiongraph开头),创建函数后,会默认生成一个日志流(函数名称开头)。 您也可以针对某个函数自行关联日志组和日志流,管理函数日志,即进行函数调用后,调用日志会保存到指定的日志组和日志流下。具体操作请参见配置日志组、日志流和查看函数日志。 默认创建的20个日志流,您无法自定义。您可以在函数的“日志”页签下,按“F12”,找到query接口里的日志流ID,再到lts里找到对应的日志流ID。 若在LTS控制台误删函数日志组,之前的日志数据不可找回,FunctionGraph服务不感知该操作。此时您可以通过修改函数常规设置中的描述信息,保存后触发重建函数日志组。 开通云日志服务(LTS)管理函数日志。 FunctionGraph V1版本开通:在“日志”页签,单击“使用 云日志服务(LTS) 管理函数日志”,页面直接切换至LTS管理函数日志的页面。 FunctionGraph V1版本支持“切换旧版”,将会停用云日志服务(LTS) ,并切换为 应用运维管理 服务( AOM ) 管理函数日志。 函数运行过程中产生的日志管理费用将按需收取。 FunctionGraph V2版本开通:在“日志”页签,直接单击“点击开通”。继续单击“确认”,右上角弹出“开通成功”。 FunctionGraph V2版本当前只支持使用LTS管理函数日志。 设置查询条件。 请求列表:支持设置请求ID、调用结果(执行成功、执行失败)、原因分析(初始化失败、加载失败、系统错误、调用超时、内存超限、磁盘超限、代码异常)。 请求日志:支持关键字、请求ID、实例ID。 表2 调用结果 调用结果 说明 执行成功 函数执行成功打印的日志。 执行失败 函数执行失败打印的日志,包含调用超时、内存超限、磁盘超限、代码异常四种情况。 若想查看调用超时的日志信息,请将“日志类型”切换为调用超时,另外3种执行失败下的日志类型查看方法相同。 表3 原因分析 原因分析 说明 初始化失败 函数初始化失败打印的日志。 加载失败 runtime加载用户函数文件失败打印的日志 系统错误 内部错误。 调用超时 函数调用时间超过配置的“执行超时时间”打印的日志。 内存超限 函数内存大小超过配置的“内存”大小打印的日志。 磁盘超限 磁盘超出限制大小打印的日志。 代码异常 代码出现异常情况打印的日志。 支持的时间条件:最近1小时、最近1天、最近3天及自定义。 您可以单击“到LTS进行 日志分析 等更多操作”,前往LTS控制台管理函数日志。 用户普通实例的初始化阶段的日志大小限制为(10MB),超过大小限制的日志进行滚动更新,为您保留最新的日志。
  • FunctionGraph V1和V2版本支持管理函数日志的区别 FunctionGraph V1版本的函数支持应用运维管理服务(AOM)管理函数日志及云日志服务(LTS)管理函数日志。 图5 应用运维管理服务(AOM)管理函数日志页面 图6 云日志服务(LTS)管理函数日志页面 FunctionGraph V2版本的函数支持云日志服务(LTS)管理函数日志。 图7 云日志服务(LTS)管理函数日志页面
  • 概述 用户在本地环境打包容器镜像,只要符合OCI(Open Container Initiative)标准,都可以上传到FunctionGraph,由平台加载并启动运行。与原来上传代码方式相比,用户可以使用自定义的代码包,不仅灵活也简化了用户的迁移成本。您可以选择“事件函数”类型创建 自定义镜像 函数,也可以选择“HTTP函数”类型创建自定义镜像函数。 使用容器镜像部署函数,开发HTTP函数示例,请参见开发HTTP函数。 使用容器镜像部署函数,开发事件函数示例,请参见开发事件函数。 支持的功能: 下载用户镜像 用户镜像储存在自己的SWR服务中,需要SWR Admin权限才能下载,FunctionGraph会在创建pod前使用swr api生成并设置好临时登录指令。 环境变量 设置FunctionGraph函数的加密配置和环境变量,具体请参见配置函数的环境变量。 挂载外部数据盘 支持挂载外部数据盘,具体请参见扩展函数的磁盘存储空间。 计费 下载镜像、等待镜像Ready不计费。 预留实例 支持预留实例,具体请参见预留实例。 流式返回 支持在函数中返回超过6MB并且不超过200MB的大报文,以数据流的方式返回。 部署新镜像 支持在函数中重新部署新镜像。 用户容器会使用属主1003、属组1003启动,与其他类型的函数相同。
  • 创建委托 如下示例表示:为FuntionGraph赋予VPC Administrator权限,仅在授权区域生效。 按照如下参数设置委托,创建委托的具体步骤请参见如何创建委托。 登录 统一身份认证 服务( IAM )控制台。 在统一身份认证服务(IAM)的左侧导航窗格中,选择“委托”页签,单击右上方的“+创建委托”。 图1 创建委托 开始配置委托。 图2 填写基本信息 委托名称:serverless-trust。 委托类型:选择“云服务”。 云服务:选择“函数工作流 FunctionGraph”。 持续时间:选择“永久”。 描述:填写描述信息。 单击“下一步”,进入委托选择页面,在右方搜索框中搜索需要添加的权限并勾选。此处以添加VPC Administrator权限为例。 图3 选择策略 表2 委托权限示例 权限名称 使用描述/场景 VPC Administrator 虚拟私有云服务管理员。 单击“下一步”,选择权限的作用范围。 图4 根据业务需要选择对应的权限
  • 应用场景 若您在FunctionGraph服务中使用如下场景,请先创建委托。创建委托时授予的权限类型请您根据实际业务需要进行调整,比如前期您在开发阶段授予Admin权限,后期在生产环境中建议您调整为细粒度最小使用权限,保证业务所需权限的同时,也降低权限过大的风险。具体对应授权项参见表1 常见授权项选择进行选择。 表1 常见授权项选择 场景 Admin权限 细粒度最小使用权限 说明 使用自定义镜像 SWR Administrator 暂不支持 SWR Admin: 容器镜像服务 (SWR)管理员,拥有该服务下的所有权限。 如何创建自定义镜像,请参见使用容器镜像创建函数。 挂载SFS文件系统 SFS Administrator 暂不支持 SFS Administrator:弹性文件服务(SFS)管理员,拥有该服务下的所有权限。 如何挂载SFS文件系统,请参见添加SFS容量型文件系统。 挂载sfs turbo文件系统 SFS Turbo ReadOnlyAccess sfsturbo:shares:getShare(查询单个文件系统详细信息) sfsturbo:shares:showFsDir(查询目录是否存在) SFS Turbo ReadOnlyAccess:弹性文件服务SFS Turbo的只读权限。 sfsturbo:shares:getShare:您拥有SFS服务下查询单个文件系统信息的权限。 sfsturbo:shares:showFsDir:您拥有SFS服务下查询目录是否存在的权限。 如何挂载挂载sfs turbo文件系统,请参见添加sfs turbo文件系统。 挂载E CS 共享目录 ECS ReadOnlyAccess ecs:cloudServers:get(查询云服务器详情) ECS ReadOnlyAccess:弹性云服务器的只读访问权限。 ecs:cloudServers:get:您拥有ECS服务下查询云服务器信息的权限。 如何挂载ECS共享目录,请参见添加ECS共享目录。 配置预留实例策略 AOM ReadOnlyAccess aom:metric:get(查询指标) aom:metric:list(查询指标列表) AOM ReadOnlyAccess:应用运维管理服务只读权限。 aom:metric:get:您拥有AOM服务下查询某个指标信息的权限。 aom:metric:list:您拥有AOM服务下查询指标列表详情的权限。 使用DIS触发器 DIS Administrator 暂不支持 数据接入服务 (DIS)管理员,拥有该服务下的所有权限。 如何创建DIS触发器,请参见使用DIS触发器。 使用DMS触发器 DMS ReadOnlyAccess dms:instance:get(查看实例详情信息) DMS ReadOnlyAccess:分布式消息服务只读权限。 dms:instance:get:您拥有DMS服务下查看实例详情信息的权限。 配置跨域VPC访问 VPC Administrator vpc:ports:get(查询端口) vpc:ports:create(创建端口) vpc:vpcs:get(查询VPC) vpc:subnets:get(查询子网) vpc:vips:delete(虚IP解绑VM) vpc:securityGroups:get(查询安全组列表或详情) 拥有VPC Administrator权限的用户可以对VPC内所有资源执行任意操作。在函数配置跨VPC访问时,则函数必须配置具备VPC管理权限的委托。 VPC细粒度最小使用权限:您拥有VPC服务下虚IP解绑VM、查询端口、创建端口、查询VPC、查询子网、查询安全组列表或详情的权限。 如何配置跨域VPC访问,请参见配置网络。 DNS 域名 解析 DNS ReadOnlyAccess dns:recordset:get(查询租户Record Set资源) dns:zone:get(查询租户zone) dns:recordset:list(查询Record Set列表) dns:zone:list(查询zone列表) DNS ReadOnlyAccess:云解析服务只读权限,拥有该权限的用户仅能查看云解析服务资源。在函数配置调用DNS服务的接口解析内网域名时,则函数必须具备读取DNS资源权限的委托。 DNS细粒度最小使用权限:您拥有DNS服务下查询租户Record Set资源列表和查询租户zone列表的权限。 如何调用DNS服务的接口解析内网域名,请参见解析DNS内网域名。 开启异步通知 目标服务为OBS时: OBS Administrator obs:bucket:HeadBucket(获取桶元数据) obs:bucket:CreateBucket(创建桶) obs:object:PutObject(PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段) OBS Administrator:对象存储服务管理员,拥有该服务下的所有权限。 OBS细粒度最小使用权限:您拥有OBS服务下获取桶元数据、创建桶、PUT上传、POST上传、复制对象、追加写对象、初始化上传段任务、上传段、合并段的权限。 如何配置异步通知请参见配置函数的异步调用策略。 目标服务为 SMN 时: SMN Administrator smn:topic:publish(发布消息) smn:topic:list(查询主题列表) SMN Administrator: 消息通知 服务管理员,拥有该服务下的所有权限。 SMN细粒度最小使用权限:您拥有SMN服务下发布消息、查询主题列表的权限。 如何配置异步通知请参见配置函数的异步调用策略。 目标服务为DIS时: DIS Administrator 暂不支持 DIS Administrator:数据接入服务管理员,拥有该服务下的所有权限。 如何配置异步通知请参见配置函数的异步调用策略。
  • 函数定时触发器Cron表达式规则 函数Cron表达式下支持如下几种配置方式。 @every格式 @every NUnit,其中N表示一个正整数,Unit可以为ns, µs, ms, s, m, h,表示每隔N个Unit时间触发一次函数如表1所示。 表1 表达式示例 表达式 含义 @every 30m 每隔30分钟触发一次函数 @every 1.5h 每隔1.5小时触发一次函数 @every 2h30m 每隔2小时30分钟触发一次函数 标准cron表达式 cron表达式格式要求“秒 分 时 日 月 周(可选)”,每个字段间以空格隔开,其中各字段说明如表2所示。 表2 cron表达式字段说明 字段 说明 取值范围 允许的特殊字符 CRON_TZ 可选。不设置则默认使用region所在时区。 - - 秒 必选 0-59 , - * / 分钟 必选 0-59 , - * / 时 必选 0-23 , - * / 日(Day of month) 必选 1-31 , - * ? / 月 必选 1-12或者Jan-Dec(英文不区分大小写)如表3所示。 , - * / 星期几(Day of week) 可选 0-6或者Sun-Sat(0表示星期天,英文不区分大小写),如表4所示。 , - * ? / 表3 月份字段取值说明 月份 数字 英文简写 1月 1 Jan 2月 2 Feb 3月 3 Mar 4月 4 Apr 5月 5 May 6月 6 Jun 7月 7 Jul 8月 8 Aug 9月 9 Sep 10月 10 Oct 11月 11 Nov 12月 12 Dec 表4 星期字段取值说明 星期 数字 英文简写 星期一 1 Mon 星期二 2 Tue 星期三 3 Wed 星期四 4 Thu 星期五 5 Fri 星期六 6 Sat 星期日 0 Sun cron表达式字段特殊字符说明如表5所示。 表5 特殊字符说明 特殊字符 含义 说明 * 表示该字段中的所有值 在“分钟”字段中表示每一分钟都执行。 , 指定多个值(可以不连续) 在“月”字段中指定“Jan,Apr,Jul,Oct”或者“1,4,7,10”,表示1月,4月,7月和10月,在“星期几”字段中指定“Sat,Sun”或者“6,0”表示周六,周日。 - 指定一个范围 在“分钟”字段中使用0-3,表示从0分到3分 ? 指定一个或另一个 仅“日”和“星期几”字段可以指定。例如,如果指定了一个特定的日期,但你不关心该日期对应星期几,那么“星期几”字段就可以使用该特殊字符。 / 表示起步和步幅,n/m表示从n开始,每次增加m 在“分钟”字段1/3表示在满足其它字段情况下,从时间1分(例如00:01:00)开始,每隔3分钟触发一次。 cron表达式配置示例如表6所示。 表6 cron表达式配置示例 配置实例 Cron 表达式(以北京时区为例) 每天12点调度函数 CRON_TZ=Asia/Shanghai 0 0 12 * * * 每天12:30调度函数 CRON_TZ=Asia/Shanghai 0 30 12 * * * 每小时的26分,29分,33分调度函数 CRON_TZ=Asia/Shanghai 0 26,29,33 * * * * 周一到周五的每天12:30调度函数 CRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRI 周一到周五的每天12:00~14:59每5分钟调度函数 CRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRI 一月到四月每天12:00调度函数 CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR * Cron表达式未设置时,默认以region所在时区运行。如果您的任务需要按照特定时区运行,可以通过CRON_TZ指定,例如在北京时间每个月一号的04:00触发函数执行,则可以使用CRON_TZ=Asia/Shanghai 0 0 4 1 * *。不同地域的时区表达式存在差异,请以实际情况为准。 父主题: 配置函数的触发器
  • 支持的依赖库说明 FunctionGraph支持引入标准库及第三方依赖库。 标准库 对于标准库,无论是在线编辑或是线下开发打包上传至FunctionGraph,均可以直接在代码中引入,使用其功能。 FunctionGraph支持的非标准库 FunctionGraph内置一些三方件,如表1、表2所示。像标准库一样,在编写代码时直接引入,使用其功能。 表1 Node.js Runtime集成的三方件 名称 功能 版本号 q 异步方法封装 1.5.1 co 异步流程控制 4.6.0 lodash 常用工具方法库 4.17.10 esdk-obs-nodejs OBS sdk 2.1.5 express 极简web开发框架 4.16.4 fgs-express 在FunctionGraph和API Gateway之上使用现有的Node.js应用程序框架运行无服务器应用程序和REST API 。提供的示例允许您使用Express框架轻松构建无服务器Web应用程序/服务和RESTful API 。 1.0.1 request 简化http调用,支持HTTPS并默认遵循重定向 2.88.0 表2 Python Runtime支持的非标准库 模块 功能 版本号 dateutil 日期/时间处理 2.6.0 requests http库 2.7.0 httplib2 httpclient 0.10.3 numpy 数学计算 pip2.7,numpy==1.16.6 pip3.10,numpy==1.24.2 pip3.9,numpy==1.18.5 pip3.6,numpy==1.18.5 redis redis客户端 2.10.5 obsclient OBS客户端 3.0.3 smnsdk 访问公有云smn服务 1.0.1 其他第三方库(除了上面表格列举的非标准三方库,FunctionGraph没有内置别的非标准三方库) 将依赖的第三方库打包,上传至OBS桶或在函数界面上传,最后可在函数代码中使用其功能。
  • 在线编辑函数代码 要创建函数,首先需要创建函数部署程序包(包含代码和所有依赖项的文件)。 FunctionGraph支持如下三种方式部署程序包: 支持在线编辑代码。用户在编辑函数代码时支持类似工程方式的管理,可以创建文件、文件夹并对其进行编辑。 支持直接上传函数代码。用户在本地开发程序之后打包(程序包大小不超过40MB),必须是ZIP包(Java、Node.js、Python、Go)或者JAR文件(Java),然后上传至FunctionGraph即可运行,无需其它的部署操作。 支持OBS方式上传函数代码。当函数的程序包大小超过40MB时,使用该方式部署程序包。OBS中ZIP包大小限制为300MB。 本章节将介绍FunctionGraph的在线编辑函数代码方式。 表1 在线编辑支持介绍 运行时 在线编辑 说明 Node.js 支持 - Python 支持 使用Python语言在线编辑代码,需要输出中文时,请在编辑器中增加如下代码: # -*- coding:utf-8 -*- import json def handler (event, context): output = 'Hello message: ' + json.dumps(event,ensure_ascii=False) return output Java 不支持 Java是编译型语言,所以不能在线编辑代码,只能上传程序包。 Go 不支持 Go是编译型语言,所以不能在线编辑代码,只能上传程序包。 C# 不支持 C#是编译型语言,所以不能在线编辑代码,只能上传程序包。 PHP 支持 - 定制运行时 支持 - HTTP 支持 - FunctionGraph预装了适用于Node.js、Python、PHP、定制运行时和HTTP的开发工具包,如果自定义代码只需要软件开发工具包库,则可以使用FunctionGraph控制台的内联编辑器。使用控制台可以编辑代码并将代码上传到FunctionGraph,控制台会将代码及相关的配置信息压缩到FunctionGraph服务能够运行的部署程序包中。 在线编辑区域支持类似工程方式的管理,可以创建文件、文件夹并对其进行编辑。 文件:支持创建文件和文件夹功能。其中包括新建文件,新建文件夹、保存、关闭所有文件功能。 编辑:支持在编码框中,对代码进行撤销、恢复、剪切、复制、粘贴、查找、替换操作。 设置:支持设置编码框中代码字体大小、自动格式化和编码框主题颜色。 代码编辑区中如果代码有修改,请修改完成后再次单击“部署”,完成重新部署代码。 当您部署的代码大于20M时,在线编辑器将不展示代码,但您仍可以测试您的函数。 图1 编辑器不展示代码 父主题: 配置函数代码
  • 准备 已经在FunctionGraph控制台创建函数1、函数2和函数3(运行时语言都使用Python 3.9,代码及功能介绍如下所示),如何创建请参见创建空白函数。 函数1功能:函数执行返回result的值为函数调用事件内的input输入值 import json def handler (event, context): input = event.get('input',0) return { "result": input } 函数2功能:函数执行返回result的值为函数调用事件内的input输入值+2的结果值 import json def handler (event, context): input = event.get('input',0) return { "result": input+2 } 函数3功能:函数执行返回result的值为函数调用事件内的input输入值平方的结果值 import json def handler (event, context): input = event.get('input',0) return { "result": input*input } 使用函数流功能前,请先了解组件说明、编排规则和表达式运算符说明。
  • 准备 已经在FunctionGraph控制台创建函数1、函数2、函数3和函数4(运行时语言都使用Python 3.9,代码及功能介绍如下所示),如何创建请参见创建空白函数。 函数1功能:函数执行返回result的值为函数调用事件内的input输入值+2的结果值 import json def handler (event, context): input = event.get('input',0) return { "result": input+2 } 函数2功能:函数执行返回result的值为函数调用事件内的input输入值平方的结果值 import json def handler (event, context): input = event.get('input',0) return { "result": input*input } 函数3和函数4功能:函数执行返回result的值为“success”。 import json def handler (event, context): print(event) return {"result":"success"} 使用函数流功能前,请先了解组件说明、编排规则和表达式运算符说明。