云服务器内容精选

  • FunctionGraph权限 默认情况下,新建的 IAM 用户没有任何权限,您需要将其加入用户组,并给用户组授予策略,才能使得用户组中的用户获得策略定义的权限,这一过程称为授权。授权后,用户就可以基于策略对云服务进行操作。 FunctionGraph资源通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在各区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问FunctionGraph时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。 如表1所示,包括了FunctionGraph的所有系统权限。 表1 系统权限说明 系统角色/策略名称 描述 类别 依赖关系 FunctionGraph Administrator 函数工作流 (FunctionGraph)管理员,具有管理函数、工作流、触发器以及调用函数的权限(该权限后期会下线,建议您不使用) 系统角色 Tenant Guest FunctionGraph Invoker 函数工作流(FunctionGraph)调用者,具有查询函数、工作流、触发器以及调用函数的权限 系统角色 无 FunctionGraph FullAccess 函数工作流服务所有权限 系统策略 无 FunctionGraph ReadOnlyAccess 函数工作流服务只读权限 系统策略 无 FunctionGraph CommonOperations 函数工作流(FunctionGraph)调用者,具有查询函数和触发器,以及调用函数的权限 系统策略 无 当添加了FunctionGraph FullAccess权限的子账号在创建触发器或使用其他功能时仍没有操作权限,是因为该服务或功能不支持细粒度鉴权,因此需要您单独添加对应服务或功能的Admin权限。具体详情如下: CTS 、APIG、DIS当前不支持细粒度鉴权,需要添加对应admin权限。 SMN 目前部分局点已支持细粒度鉴权,如您遇到无法细粒度鉴权情况,则需要添加对应admin权限。 IoTDA是新增加的触发器,FullAccess中缺少对应权限。您在创建该触发器时会提示需要创建委托并添加相应权限,创建委托需要您先添加iam: agencies:list,iam:agencies:createAgency 权限; TMS、DNS、BSS、 CES 、EG、DMS是新增加功能,FullAccess中缺少对应权限,需单独添加; 更多触发器及相关功能需要的权限,请参见表2所示。 表2 触发器及相关功能的权限 触发器/服务功能 权限 APIG apig:groups:get apig:groups:list apig:apis:create apig:apis:delete apig:apis:update apig:apis:publish apig:apis:list apig:apis:get apig:apis:offline apig:apps:list apig:envs:list APIG专享版 apig:instances:get apig:instances:create apig:instances:update apig:instances:list apig:sharedInstance:operate CTS cts:notification:create cts:notification:delete cts:notification:update cts:operation:list cts:tracker:list cts:trace:list DDS dds:instance:get dds:instance:list DIS dis:streams:list IoTDA iotda:routingrules:create iotda:routingrules:delete iotda:routingrules:queryList iotda:routingrules:query iotda:routingactions:create iotda:routingactions:delete iotda:routingactions:query iotda:routingactions:queryList iotda:subscriptions:queryList iotda:rules:modifyStatus iotda:apps:queryList LTS lts:groups:create lts:groups:get lts:groups:list lts:groups:put lts:logstreams:delete lts:logstreams:list lts:topics:get lts:subscriptions:create lts:subscriptions:delete lts:subscriptions:put lts:structConfig:create lts:structConfig:get OBS obs:bucket:GetBucketLocation obs:bucket:GetBucketNotification obs:bucket:PutBucketNotification obs:bucket:ListBucket SMN smn:topic:list smn:topic:update TMS tms:predefineTags:list tms:tagValues:list DNS dns:recordset:create, dns:recordset:list, dns:recordset:update, dns:zone:create, dns:zone:delete, dns:zone:get, dns:zone:list BSS bss:bill:view bss:renewal:view CES ces:alarms:get ces:alarms:list ces:alarms:create DMS dms:instance:get EG eg:subscriptions:get eg:subscriptions:list eg:sources:list eg:sources:get eg:agency:create eg:subscriptions:create eg:subscriptions:delete eg:subscriptions:operate 表3列出了FunctionGraph常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表3 常用操作与系统权限之间的关系 操作 FunctionGraph Invoker FunctionGraph Administrator FunctionGraph ReadOnlyAccess FunctionGraph CommonOperations FunctionGraph FullAccess 创建函数 × √ × × √ 查询函数 √ √ √ √ √ 修改函数 × √ × × √ 删除函数 × √ × × √ 调用函数 √ √ × √ √ 查看函数日志 √ √ √ √ √ 查看函数指标数据 √ √ √ √ √
  • 企业项目授权后仍报权限不足的说明 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM和企业管理的区别。 FunctionGraph当前仅函数资源接口支持企业项目方式授权,除函数资源外的部分接口仅支持IAM项目方式授权,因此针对仅支持IAM项目方式授权时需注意: 授权时选择“IAM项目视图”。 图1 IAM项目视图 选择授权范围时,建议根据最小化授权原则,选择“指定区域项目资源”,具体请根据实际业务情况选择授权范围。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 网络限制 根据对网络的不同设置,函数有以下网络访问能力,您可按需设置。 网络配置 说明 允许函数访问公网 当前函数默认的公网NAT访问带宽在多个租户间共享,带宽小,仅适合小量调用的测试业务场景使用;如果对带宽、性能、可靠性有高要求的生产业务场景,需开启函数访问VPC,在VPC内添加公网NAT网关并绑定EIP,分配独占的外网访问带宽。 允许函数访问VPC内资源 开启“允许函数访问VPC内资源”时,函数将禁用默认网卡并使用VPC绑定的网卡,是否允许公网访问由配置的VPC决定,开关“允许函数访问公网”将不生效。 仅允许指定的VPC调用函数 开启“仅允许指定的VPC调用函数”时,将仅允许通过指定的VPC调用函数,并禁止通过公网调用函数。
  • 停止共享 资源所有者如果不再需要某个共享时,可以随时将其删除,删除共享不会删除共享的资源。共享删除后,共享资源指定的使用者将无法继续使用该共享中的资源,详情请参见删除共享。 资源所有者可以随时更新资源共享实例,支持更新资源共享实例的名称、描述、标签、共享的资源、共享权限以及共享使用者,详情请参见更新共享。 资源使用者如果不再需要访问共享给您的资源,可以随时退出共享。退出共享后,将失去对共享资源的访问权限。 只有当共享资源的指定使用者是华为云账号而不是组织内共享时,才可以退出此共享。如果共享资源的指定使用者是组织,而资源使用者的账号由组织管理,则无法退出此共享,详情请参见退出共享。
  • 共享函数资源简介 基于 资源访问管理 (Resource Access Manager,简称 RAM )服务,函数工作流服务可以实现跨账号共享函数资源,资源所有者将资源同时共享给多个其他账号使用,资源使用者接受共享邀请后就可以访问和使用共享的函数资源,就像拥有它们一样。资源所有者可以依据最小权限原则和不同的使用诉求,选择不同的共享权限,资源使用者只能对资源进行权限内的访问,保证共享资源在满足资源使用者业务诉求的同时,提升资源管理的安全性。关于RAM服务的更多信息请参见什么是资源访问管理。 当您的账号由华为云组织管理时,您还可以利用此优势更轻松地共享资源。如果您的账号在组织中,则您可以与单个账号共享,也可以与组织或OU中的所有账号共享,而不必枚举每个账号,具体请参见启用与组织共享资源。
  • 使用限制 单账号跟踪的事件可以通过 云审计 控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到 对象存储服务 (OBS)或 云日志 服务(LTS),才可在OBS桶或LTS日志组里面查看历史事件信息。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 创建EG触发器 返回函数工作流控制台,进入“函数流”页面。 在“函数流”流程列表页面,选择需要创建触发器的流程,单击“编辑”,进入编辑页面。 单击“开始”节点,在右侧弹出的属性页面添加触发器,触发器类型选择“EG触发器”。 创建成功后“workflow_test”事件通道接收到来自事件源“workflow_test_1”的事件时,会触发此函数流执行。 图5 EG触发器 填写触发器配置信息。如表4所示,带*参数为必填项。 表4 定时触发器配置信息 配置项 说明 *提供方 EG事件源提供方,支持华为云服务事件源和自定义事件源。 *事件通道 事件通道负责接收来自事件源的事件来出发函数流执行。 *事件源 事件源是事件的来源,负责将华为云服务、自定义应用等应用程序生产的事件发布到事件网格。 事件类型 可以指定事件类型进行过滤,满足事件类型才会触发函数流执行。 单击“创建”,完成定时触发器创建。
  • 创建定时触发器 登录FunctionGraph控制台,进入“函数流”页面。 在“函数流”流程列表页面,选择需要创建触发器的流程,单击“编辑”,进入编辑页面。 单击“开始”节点,在右侧弹出的属性页面添加触发器,触发器类型选择“定时触发器”。 图1 定时触发器 填写触发器配置信息。如表1所示,带*参数为必填项。 表1 定时触发器配置信息 配置项 说明 *触发规则 定时触发器的触发规则,当前只支持Cron表达式 *Cron表达式 用于表示任务调度的表达式,能够表示特定周期进行的特定的时间、日期等。具体请参见函数定时触发器Cron表达式规则。 附加信息 附加信息为json格式,输入必须包含input,在input内输入需要的json体。input的内容会作为流程的输入参数。 单击“创建”,完成定时触发器创建。
  • 云日志服务(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。 表1 调用结果 调用结果 说明 执行成功 函数执行成功打印的日志。 执行失败 函数执行失败打印的日志,包函调用超时、内存超限、磁盘超限、代码异常四种情况。 若想查看调用超时的日志信息,请将“日志类型”切换为调用超时,另外3种执行失败下的日志类型查看方法相同。 表2 原因分析 原因分析 说明 初始化失败 函数初始化失败打印的日志。 加载失败 runtime加载用户函数文件失败打印的日志 系统错误 内部错误。 调用超时 函数调用时间超过配置的“执行超时时间”打印的日志。 内存超限 函数内存大小超过配置的“内存”大小打印的日志。 磁盘超限 磁盘超出限制大小打印的日志。 代码异常 代码出现异常情况打印的日志。 支持的时间条件:最近1小时、最近1天、最近3天及自定义。 您可以单击“到LTS进行 日志分析 等更多操作”,前往LTS控制台管理函数日志。 用户普通实例的初始化阶段的日志大小限制为(10MB),超过大小限制的日志进行滚动更新,为您保留最新的日志。
  • 在代码中导入sklearn并使用 # 导入 sklearn 相关内容 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier def handler (event, context): iris=datasets.load_iris() iris_X=iris.data iris_y=iris.target X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3) knn=KNeighborsClassifier() knn.fit(X_train,y_train) print(knn.predict(X_test)) return y_test
  • 在代码中导入gym并使用 # 导入 gym 依赖 import gym env = gym.make('CartPole-v0') env.reset() def handler(event,context): for _ in range(10): env.render() observation, reward, done, info, _ = env.step(env.action_space.sample()) # take a random action temp = env.step(env.action_space.sample()) # take a random action print('observation:{}, reward:{}, done:{}, info:{}'.format(observation, reward, done, info)) env.close()
  • 监控指标说明 告警监控指标如表1所示。 表1 函数告警监控指标说明表 指标名称 显示名 描述 单位 上限值 下限值 建议阈值 值类型 所属维度 count 调用次数 该指标用于统计函数调用次数 次 - 0 - int package-functionname failcount 错误次数 该指标用于统计函数调用错误次数 次 - 0 - int package-functionname rejectcount 被拒绝次数 该指标用于统计函数调用被拒绝次数 次 - 0 - int package-functionname duration 平均运行时间 该指标用于统计函数调用平均运行时间 毫秒 - 0 - float package-functionname maxDuration 最大运行时间 该指标用于统计函数调用最大运行时间 毫秒 - 0 - float package-functionname minDuration 最小运行时间 该指标用于统计函数调用最小运行时间 毫秒 - 0 - float package-functionname concurrency 并发数 该指标用于统计函数同时调用处理的最大并发请求个数 个 - 0 - int package-functionname payPerUseInstance 弹性实例数 该指标用于统计函数排除预留实例后实际使用的实例数 个 - 0 - int package-functionname failRate 调用错误率 该指标用于统计函数调用错误率 % - 0 - float package-functionname functionErrorCount 函数错误次数 该指标用于统计函数调用函数错误次数 次 - 0 - float package-functionname memoryUsed 函数执行内存使用 该指标用于统计函数执行内存使用量 MB - 0 - float package-functionname duration_p500 函数执行时间p50 该指标用于统计函数执行时间的p50 毫秒 - 0 - float package-functionname duration_p800 函数执行时间p80 该指标用于统计函数执行时间的p80 毫秒 - 0 - float package-functionname duration_p950 函数执行时间p95 该指标用于统计函数执行时间的p95 毫秒 - 0 - float package-functionname duration_p990 函数执行时间p990 该指标用于统计函数执行时间的p990 毫秒 - 0 - float package-functionname duration_p999 函数执行时间p999 该指标用于统计函数执行时间的p999 毫秒 - 0 - float package-functionname instances 实例数 该指标用于统计函数调用实例的个数 个 - 0 - int package-functionname systemErrorCount 系统错误次数 该指标用于统计函数调用系统错误次数 次 - 0 - int package-functionname reservedinstancenum 预留实例数 该指标用于统计函数运行的预留实例数 个 - 0 - int package-functionname functionCost 资源使用量 该指标用于统计函数执行资源使用量,即函数执行内存使用 * 函数执行时间 MB - 0 - float package-functionname 表2 函数流告警监控指标说明表 指标名称 显示名 描述 单位 上限值 下限值 建议阈值 值类型 所属维度 ExecutionsStarted 工作流实例启动个数 该指标用于统计用户工作流实例开始运行的实例个数 个 - 0 - int ProjectId ExecutionsAborted 工作流实例执行被中断个数 该指标用于统计用户工作流实例被终止运行的个数 个 - 0 - int ProjectId ExecutionsTimedOut 工作流实例执行超时个数 该指标用于统计用户工作流实例超时运行的个数 个 - 0 - int ProjectId ExecutionsSucceeded 工作流实例执行成功个数 该指标用于统计用户工作流实例成功运行完成的实例个数 个 - 0 - int ProjectId ExecutionsFailed 工作流实例执行失败个数 该指标用于统计用户工作流实例运行失败的实例个数 个 - 0 - int ProjectId
  • 创建委托 如下示例表示:为FuntionGraph赋予Tenant Administrator权限,仅在授权区域生效。 按照如下参数设置委托,创建委托的具体步骤请参见如何创建委托。 登录 统一身份认证 服务(IAM)控制台。 在统一身份认证服务(IAM)的左侧导航窗格中,选择“委托”页签,单击右上方的“+创建委托”。 图1 创建委托 开始配置委托。 图2 填写基本信息 委托名称:serverless-trust。 委托类型:选择“云服务”。 云服务:选择“函数工作流 FunctionGraph”。 持续时间:选择“永久”。 描述:填写描述信息。 单击“下一步”,进入委托选择页面,在右方搜索框中搜索需要添加的权限并勾选。此处以添加Tenant Administrator权限为例。 图3 选择策略 表2 委托权限示例 权限名称 使用描述/场景 Tenant Administrator 全部云服务管理员(除IAM管理权限),拥有该权限的用户可以对企业拥有的所有云资源执行任意操作。 单击“下一步”,选择权限的作用范围。 图4 根据业务需要选择对应的权限
  • 应用场景 若您在FunctionGraph服务中使用如下场景,请先创建委托。创建委托时授予的权限类型请您根据实际业务需要进行调整,比如前期您在开发阶段授予Admin权限,后期在生产环境中建议您调整为细粒度最小使用权限,保证业务所需权限的同时,也降低权限过大的风险。具体对应授权项参见表1 常见授权项选择进行选择。 表1 常见授权项选择 场景 Admin权限 细粒度最小使用权限 说明 使用 自定义镜像 SWR Admin 暂不支持 SWR Admin: 容器镜像服务 (SWR)管理员,拥有该服务下的所有权限。 如何创建自定义镜像,请参见使用容器镜像部署函数。 挂载SFS文件系统 SFS Administrator 暂不支持 SFS Administrator:弹性文件服务(SFS)管理员,拥有该服务下的所有权限。 如何挂载SFS文件系统,请参见添加SFS容量型文件系统。 挂载sfs turbo文件系统 SFS Administrator sfsturbo:shares:getShare(查询单个文件系统详细信息) SFS Administrator:弹性文件服务(SFS)管理员,拥有该服务下的所有权限。 sfsturbo:shares:getShare:您拥有SFS服务下查询单个文件系统信息的权限。 如何挂载挂载sfs turbo文件系统,请参见添加sfs turbo文件系统。 挂载E CS 共享目录 Tenant Guest及VPC Administrator ecs:cloudServers:get(查询云服务器详情) Tenant Guest:全部云服务只读权限(除IAM权限) VPC Administrator:网络管理员 ecs:cloudServers:get:您拥有ECS服务下查询云服务器信息的权限。 如何挂载ECS共享目录,请参见添加ECS共享目录。 使用 APM 调用链 APM Administrator 暂不支持 APM Administrator: 应用性能管理 服务管理员。 该功能无需配置委托,只需您账号拥有APM服务相关权限以及函数“设置”修改权限即可配置和查询。 如何开通APM调用链,请参见调用链管理。 使用DIS触发器 DIS Administrator 暂不支持 数据接入服务 (DIS)管理员,拥有该服务下的所有权限。 如何创建DIS触发器,请参见使用DIS触发器。 配置跨域VPC访问 VPC Administrator vpc:ports:delete(删除端口) vpc:ports:get(查询端口) vpc:ports:create(创建端口) vpc:vpcs:get(查询VPC) vpc:subnets:get(查询子网) 拥有VPC Administrator权限的用户可以对VPC内所有资源执行任意操作。在函数配置跨VPC访问时,则函数必须配置具备VPC管理权限的委托。 VPC细粒度最小使用权限:您拥有VPC服务下删除端口、查询端口、创建端口、查询VPC、查询子网的权限。 如何配置跨域VPC访问,请参见配置网络。 读取云解析服务(DNS)的资源 DNS ReadOnlyAccess dns:recordset:get(查询租户Record Set资源列表) dns:zone:get(查询租户zone) DNS ReadOnlyAccess:云解析服务只读权限,拥有该权限的用户仅能查看云解析服务资源。在函数配置调用DNS服务的接口解析内网 域名 时,则函数必须具备读取DNS资源权限的委托。 DNS细粒度最小使用权限:您拥有DNS服务下查询租户Record Set资源列表和查询租户zone的权限。 如何调用DNS服务的接口解析内网域名,请参见解析DNS内网域名。 创建OBS桶和OBS触发器 OBS Administrator obs:bucket:GetBucketLocation(获取桶区域位置) obs:bucket:ListAllMyBuckets(获取桶列表) obs:bucket:GetBucketNotification(获取桶的 消息通知 配置) obs:bucket:PutBucketNotification(设置桶的消息通知配置) OBS Administrator:对象存储服务管理员。 OBS细粒度最小使用权限:你拥有OBS服务下获取桶区域位置、获取桶列表、获取桶的消息通知配置、设置桶的消息通知配置的权限。 如何创建OBS触发器,请参见使用OBS触发器。