云服务器内容精选

  • 语法 RAISE有以下五种语法格式: 图1 raise_format::= 图2 raise_condition::= 图3 raise_sqlstate::= 图4 raise_option::= 图5 raise::= 参数说明: level选项用于指定错误级别,有DEBUG, LOG ,INFO,NOTICE,WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由log_min_messages和client_min_messages这两个配置参数控制。 format:格式字符串,指定要报告的错误消息文本。格式字符串后可跟表达式,用于向消息文本中插入。在格式字符串中,%由format后面跟着的参数的值替换,%%用于打印出%。例如: --v_job_id 将替换字符串中的 %: RAISE NOTICE 'Calling cs_create_job(%)',v_job_id; option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。 MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。 DETAIL,说明错误的详细信息。 HINT,用于打印出提示信息。 ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。 condition_name:错误码对应的条件名。 sqlstate:错误码。 如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION (P0001)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。 当由SQLSTATE指定了错误码,则不局限于已定义的错误码,可以选择任意包含五个数字或者大写的ASCII字母的错误码,而不是00000。建议避免使用以三个0结尾的错误码,因为这种错误码是类别码,会被整个种类捕获。 图5所示的语法不接任何参数。这种形式仅用于一个BEGIN块中的EXCEPTION语句,它使得错误重新被处理。
  • 语法 RAISE有以下五种语法格式: 图1 raise_format::= 图2 raise_condition::= 图3 raise_sqlstate::= 图4 raise_option::= 图5 raise::= 参数说明: level选项用于指定错误级别,有DEBUG,LOG,INFO,NOTICE,WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由log_min_messages和client_min_messages这两个配置参数控制。 format:格式字符串,指定要报告的错误消息文本。格式字符串后可跟表达式,用于向消息文本中插入。在格式字符串中,%由format后面跟着的参数的值替换,%%用于打印出%。例如: --v_job_id 将替换字符串中的 %: RAISE NOTICE 'Calling cs_create_job(%)',v_job_id; option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。 MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。 DETAIL,说明错误的详细信息。 HINT,用于打印出提示信息。 ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。 condition_name:错误码对应的条件名。 sqlstate:错误码。 如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION (P0001)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。 当由SQLSTATE指定了错误码,则不局限于已定义的错误码,可以选择任意包含五个数字或者大写的ASCII字母的错误码,而不是00000。建议避免使用以三个0结尾的错误码,因为这种错误码是类别码,会被整个种类捕获。 图5所示的语法不接任何参数。这种形式仅用于一个BEGIN块中的EXCEPTION语句,它使得错误重新被处理。
  • 操作场景 Hive支持对表的某一列或者多列进行加密;在创建Hive表时,可以指定要加密的列和加密算法。当使用insert语句向表中插入数据时,即可实现将对应列加密。列加密只支持存储在HDFS上的TextFile和SequenceFile文件格式的表。Hive列加密不支持视图以及Hive over HBase场景。 Hive列加密机制目前支持的加密算法有两种,在建表时指定: AES(对应加密类名称为:org.apache.hadoop.hive.serde2.AESRewriter) SMS 4(对应加密类名称为:org.apache.hadoop.hive.serde2.SMS4Rewriter) 将原始数据从普通Hive表导入到Hive列加密表后,在不影响其他业务情况下,建议删除普通Hive表上原始数据,因为保留一张未加密的表存在安全风险。
  • 操作场景 HDFS Colocation(同分布)是HDFS提供的数据分布控制功能,利用HDFS Colocation接口,可以将存在关联关系或者可能进行关联操作的数据存放在相同的存储节点上。Hive支持HDFS的Colocation功能,即在创建Hive表时,设置表文件分布的locator信息,当使用insert语句向该表中插入数据时会将该表的数据文件存放在相同的存储节点上(不支持其他数据导入方式),从而使后续的多表关联的数据计算更加方便和高效。表格式只支持TextFile和RCFile。 本章节适用于 MRS 3.x及后续版本。
  • 在“已删除对象”列表彻底删除对象 对象所属桶已启用多版本控制时,在“对象”列表删除对象,对象会迁移至“已删除对象”列表中,需要彻底删除避免产生计费。 如果待彻底删除的对象为保留策略在保留期内的WORM对象,请参考彻底删除保留策略在保留期内的WORM对象处理。 确认对象所属桶是否启用多版本控制。 在OBS控制台桶列表单击待操作的桶,进入“对象”页面。 在左侧导航栏单击“概览”,进入“概览”页面。 在“基础配置”区域查看“多版本控制”状态。 图3 查看多版本控制的状态 如果状态为已启用,此时请继续下一步。 如果状态为暂停或未启用,此时仍然无法删除对象,请提交工单寻求更多帮助。 彻底删除对象。 单击“已删除对象”页签,进入已删除对象列表。 在待删除对象的操作列单击“彻底删除”。 单击“确定”。 图4 彻底删除对象
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题根因。 如果处理完某个可能原因仍未解决问题,请继续排查其他可能原因。 表1 排查思路 可能原因 处理措施 本地网络故障 检查本地与OBS之间的网络是否正常,如果存在网络故障,解决网络故障,确保网络正常。 无删除对象的权限 请参考检查是否有删除对象的权限。 对象所属桶已启用多版本控制 请参考在“已删除对象”列表彻底删除对象。 “已删除对象”页签中WORM对象的保留策略在保留期内 请参考彻底删除保留策略在保留期内的WORM对象。 其他原因 请参考提交工单。
  • 删除桶内碎片 桶中不完整的数据称之为碎片。OBS采用分块上传的模式上传数据,在下列情况下(但不仅限于此)通常会导致数据上传失败而产生碎片。 网络条件较差,与OBS的服务器之间的连接经常断开。 上传过程中,人为中断上传任务。 设备故障。 突然断电等特殊情况。 以下步骤以控制台手动删除碎片为例。通过其他方式删除碎片的方法,请参见如何处理碎片? 在OBS控制台桶列表单击待操作的桶,进入“对象”页面。 单击上方的“碎片”页签,进入碎片列表。 选中所有碎片,单击列表上方的“删除”。 图4 删除所有碎片 删除所有碎片后请再次尝试删除桶,如果仍然无法删除,请继续下面的操作。
  • 彻底删除桶内已删除对象 对于已经开启或曾经开启过多版本控制功能的桶,可能存在已删除对象,需要确保已删除对象已经被彻底删除。关于已删除对象的介绍,请参见多版本控制功能启用时的对象删除机制。 在OBS控制台桶列表单击待操作的桶,进入“对象”页面。 单击上方的“已删除对象”页签,进入已删除对象列表。 批量勾选所有已删除对象,单击列表上方的“彻底删除”。 图3 删除所有已删除对象 彻底删除所有已删除对象后请再次尝试删除桶,如果仍然无法删除,请继续下面的操作。
  • 检查是否有删除桶的权限 默认情况下,只有桶拥有者具备删除桶的权限。桶拥有者也可以给其他人授予删除桶(DeleteBucket)的权限。 确认自己是否是桶拥有者。 在OBS控制台桶列表单击待操作的桶,进入“对象”页面。 在左侧导航栏单击“概览”,进入“概览”页面。 在“基本信息”区域查看“账号ID”。该账号ID为桶拥有者。 图5 查看桶拥有者 鼠标指向控制台右上角自己的用户名,在下拉菜单中单击“我的凭证”,查看自己的“账号ID”。 图6 查看自己的账号ID 如果两个账号ID相同,且自己属于账号而非 IAM 用户,则说明自己是桶拥有者。此时仍无法删除桶,请单击下方提交工单链接寻求更多帮助。 如果两个账号ID相同但自己属于IAM用户,或账号ID不同,则说明自己不是桶拥有者。此时请继续下一步。 联系桶拥有者,确认是否已授予删除桶的权限。 如果未授予删除桶的权限,请联系桶拥有者授权。 如果已授予删除桶的权限,仍然无法删除桶,请单击下方提交工单链接寻求更多帮助。
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题根因。 如果处理完某个可能原因仍未解决问题,请继续排查其他可能原因。 图1 删除桶失败排查思路 表1 排查思路 可能原因 处理措施 本地网络故障 检查本地与OBS之间的网络是否正常,如果存在网络故障,解决网络故障,确保网络正常。 桶内对象未全部删除 请参考删除桶内对象。 桶内已删除对象未彻底删除 请参考彻底删除桶内已删除对象。 桶内碎片未全部删除 请参考删除桶内碎片。 无删除桶的权限 请参考检查是否有删除桶的权限。
  • 为什么通过控制台设置匿名用户桶ACL后,旧配置中的delivered属性会被覆盖为false? OBS控制台目前不支持设置匿名用户的桶ACL权限继承关系(即不支持配置delivered属性),如需配置请使用OBS SDK或API操作。 如果您通过SDK或API配置了匿名用户的delivered属性后,又在控制台修改了匿名用户的ACL配置,即便不是修改delivered属性,匿名用户的delivered属性也会被覆盖为false。控制台修改匿名用户ACL配置的操作有两处,任何一处的操作都会触发delivered属性被覆盖为false: 修改“公共权限”配置 单击“用户权限”列表中,“匿名用户”所在行右侧的“编辑”,修改配置并保存。 图1 修改匿名用户ACL配置 父主题: 权限相关
  • 请求示例 创建一个云服务器存储库,存储库容量为100G,按需计费,且同时绑定资源和添加标签。 POST https://{endpoint}/v3/f841e01fd2b14e7fa41b6ae7aa6b0594/vaults { "vault" : { "backup_policy_id" : "6dd81d7d-a4cb-443e-b8ed-1af0bd3a261b", "billing" : { "cloud_type" : "public", "consistent_level" : "crash_consistent", "object_type" : "server", "protect_type" : "backup", "size" : 100, "charging_mode" : "post_paid", "is_auto_renew" : false, "is_auto_pay" : false, "console_url" : "https://console.demo.com/cbr/?agencyId=97fcd896b7914cb98f553a087232e243®ion=testregion/cbr/manager/csbs/vaultList" }, "description" : "vault_description", "name" : "vault_name", "resources" : [ { "extra_info" : { "exclude_volumes" : [ "43a320a5-3efd-4568-b1aa-8dd9183cc64b" ] }, "id" : "23a320a5-3efd-4568-b1aa-8dd9183cc64c", "type" : "OS::Nova::Server" } ], "tags" : [ { "key" : "key01", "value" : "value01" } ], "enterprise_project_id" : "0" } } 创建一个云硬盘备份存储库,存储库容量为40G,按需计费。 POST https://{endpoint}/v3/f841e01fd2b14e7fa41b6ae7aa6b0594/vaults { "vault" : { "billing" : { "consistent_level" : "crash_consistent", "object_type" : "disk", "protect_type" : "backup", "size" : 40, "charging_mode" : "post_paid", "is_auto_renew" : false, "is_auto_pay" : false }, "name" : "test", "resources" : [ ] } }
  • 响应示例 状态码: 200 OK { "vault" : { "provider_id" : "0daac4c5-6707-4851-97ba-169e36266b66", "description" : "vault_description", "tags" : [ { "value" : "value01", "key" : "key01" } ], "enterprise_project_id" : 0, "auto_bind" : false, "id" : "ad7627ae-5b0b-492e-b6bd-cd809b745197", "user_id" : "38d65be2ecd840d19046e239e841a734", "name" : "vault_name", "billing" : { "status" : "available", "used" : 0, "protect_type" : "backup", "object_type" : "server", "allocated" : 40, "spec_code" : "vault.backup.server.normal", "size" : 100, "cloud_type" : "public", "consistent_level" : "crash_consistent", "charging_mode" : "post_paid" }, "created_at" : "2019-05-23T12:51:10.071+00:00", "project_id" : "fc347bc64ccd4589ae52e4f44b7433c7", "resources" : [ { "name" : "ecs-b977-0002", "backup_size" : 0, "protect_status" : "available", "backup_count" : 0, "extra_info" : { "exclude_volumes" : [ "1855eb9a-2b5e-4938-a9f0-aea08b6f9243", "5a51e8b3-2f65-4045-896f-f8ffae14b064" ] }, "type" : "OS::Nova::Server", "id" : "23a320a5-3efd-4568-b1aa-8dd9183cc64c", "size" : 40 } ] } }
  • OBS控制台功能依赖的权限 表3 OBS控制台依赖服务的角色或策略 控制台功能 依赖服务 需配置角色/策略 获取已有 域名 列表(在配置自定义域名和加速域名时,获取在华为云已有的域名列表) 域名注册服务 Domains 需要增加Domains:domains:getDetails权限后才能访问已有的域名列表。 设置镜像回源规则 对象存储服务 OBS 需要增加Tenant Administrator权限后才能设置镜像回源规则 镜像回源需使用IAM委托功能,创建云服务委托,委托OBS获取源站数据。委托需要给OBS服务授予obs:object:PutObject权限。 如果桶开启了SSE-KMS服务端加密功能,对OBS的云服务委托中还需要配置kms:cmk:get、kms:cmk:list、kms:cmk:create、kms:dek:create、kms:dek:crypto、kms:dek:crypto权限。 获取镜像回源规则 对象存储服务 OBS 需要增加Tenant Administrator权限后才能获取镜像回源规则 删除镜像回源规则 对象存储服务 OBS 需要增加Tenant Administrator权限后才能删除镜像回源规则 设置DIS通知策略 对象存储服务 OBS 需要增加Tenant Administrator权限后才能设置DIS通知策略 使用DIS 消息通知 需要创建对OBS云服务的委托,委托赋予的权限需为 数据接入服务 DIS的DIS Administrator或DIS User权限 获取DIS通知策略 对象存储服务 OBS 需要增加Tenant Administrator权限后才能获取DIS通知策略 删除DIS通知策略 对象存储服务 OBS 需要增加Tenant Administrator权限后才能删除DIS通知策略 设置在线解压策略 对象存储服务 OBS 需要增加Tenant Administrator权限后才能设置在线解压策略 获取在线解压策略 对象存储服务 OBS 需要增加Tenant Administrator权限后才能获取在线解压策略 删除在线解压策略 对象存储服务 OBS 需要增加Tenant Administrator权限后才能删除在线解压策略 服务端加密 密钥管理服务 KMS 当桶或者桶内对象开启了SSE-KMS服务端加密功能,需要为请求者配置kms:cmk:get、kms:cmk:list、kms:cmk:create、kms:dek:create、kms:dek:crypto、kms:dek:crypto权限,才能上传下载对象。 data+创建工作流 数据工坊 DWR 需要增加dwr:workflow:createWorkflow权限后才能创建工作流 data+查询工作流详情 数据工坊 DWR 需要增加dwr:workflow:getWorkflowDetailInfo权限后才能查询工作流详情 data+删除工作流 数据工坊 DWR 需要增加dwr:workflow:deleteWorkflow权限后才能删除工作流 data+更新工作流 数据工坊 DWR 需要增加dwr:workflow:updateWorkflow权限后才能更新工作流 data+查询工作流列表 数据工坊 DWR 需要增加dwr:workflow:listWorkflows权限后才能查询工作流列表 data+API异步启动工作流 数据工坊 DWR 需要增加dwr:workflow:executeAsync权限后才能API异步启动工作流 data+查询工作流实例列表 数据工坊 DWR 需要增加Tenant Administrator权限后才能查询工作流实例列表 data+查询工作流实例 数据工坊 DWR 需要增加dwr:workflow:getWorkflowExecutionInfo权限后才能查询工作流实例 data+恢复失败状态的工作流实例 数据工坊 DWR 需要增加dwr:workflow:executeRestoration权限后才能恢复失败状态的工作流实例 data+开通授权 数据工坊 DWR 需要增加dwr:workflow:createAssumeRole权限后才能开通授权 data+查询授权 数据工坊 DWR 需要增加dwr:workflow:getAuthorizationStatus权限后才能查询授权 data+查询华为云算子模板详情 数据工坊 DWR 需要增加dwr:workflow:getSystemActionTemplate权限后才能查询华为云算子模板详情 data+查询华为云算子模板列表 数据工坊 DWR 需要增加dwr:workflow:listSystemActionTemplates权限后才能查询华为云算子模板列表 data+配置桶触发器 数据工坊 DWR 需要增加Tenant Administrator权限后才能配置桶触发器 data+查询桶触发器 数据工坊 DWR 需要增加Tenant Administrator权限后才能查询桶触发器 data+删除桶触发器 数据工坊 DWR 需要增加Tenant Administrator权限后才能删除桶触发器
  • OBS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略和角色,才能使得用户组中的用户获得策略定义的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 OBS部署时不区分物理区域,为全局级服务。授权时,在全局级服务中设置权限,访问OBS时,不需要切换区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对OBS服务,管理员能够控制IAM用户仅能对某一个桶资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,OBS支持的API授权项请参见权限和授权项说明。 由于缓存的存在,对用户、用户组以及企业项目授予OBS相关的角色和策略后,大概需要等待10~15分钟权限才能生效。 表1为OBS的所有系统权限。 表1 OBS系统权限 系统角色/策略名称 描述 类别 依赖关系 Tenant Administrator 拥有该权限的用户拥有除IAM外,其他所有服务的所有执行权限。 系统角色 无 Tenant Guest 拥有该权限的用户拥有除IAM外,其他所有服务的只读权限。 系统角色 无 OBS Administrator 拥有该权限的用户为OBS管理员,可以对账号下的所有OBS资源执行任意操作。 系统策略 无 OBS Buckets Viewer 拥有该权限的用户可以执行列举桶、获取桶基本信息、获取桶元数据的操作。 系统角色 无 OBS ReadOnlyAccess 拥有该权限的用户可以执行列举桶、获取桶基本信息、获取桶元数据、列举对象(不包含多版本)的操作。 说明: 拥有该权限的用户如果在控制台上列举对象失败,可能是因为桶中存在多版本对象。此时需要额外授予该用户列举多版本对象的权限(obs:bucket:ListBucketVersions),才能在控制台正常看到对象列表。 系统策略 无 OBS OperateAccess 拥有该权限的用户可以执行OBS ReadOnlyAccess的所有操作,在此基础上还可以执行上传对象、下载对象、删除对象、获取对象ACL等对象基本操作。 说明: 拥有该权限的用户如果在控制台上列举对象失败,可能是因为桶中存在多版本对象。此时需要额外授予该用户列举多版本对象的权限(obs:bucket:ListBucketVersions),才能在控制台正常看到对象列表。 系统策略 无