爆款云主机低至25.83元/年
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 云聚517 · 好价翼起拼 NEW 爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
Token服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V4-Flash
  • GLM-5.1
  • Qwen3.5-122B-A10B
  • DeepSeek-V3.2(旗舰版)
  • GLM-5(正式版)
智算一体机
  • 智算一体机
智能体引擎
  • 智能体引擎
智算安全专区
  • 大模型安全评测
  • 大模型安全护栏
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      云服务备份_相关内容
      • 节点重置(1)
        本节介绍了节点重置的用户指南。 节点重置是指将Kubernetes集群中的节点恢复到初始状态。这通常用于节点出现故障时的修复操作。在云容器引擎控制台节点功能中,您可以通过控制台来重置节点。 注意事项 重置节点将对节点操作系统进行重置安装,节点上已运行的工作负载业务将会中断,请在业务低峰期操作。 节点重置后系统盘挂载kubelet、containerd的数据盘将会被清空,重置前请事先备份重要数据。 用户节点如果有自行挂载了数据盘,重置完后会清除挂载信息,请事先备份重要数据,重置完成后请重新执行挂载行为,数据不会丢失。 节点上的工作负载实例的IP会发生变化,但是不影响容器网络通信。 操作过程中,后台会把当前节点设置为不可调度状态。 节点重置会清除用户单独添加的 K8S 标签和污点(通过节点池编辑功能添加的标签、污点不会丢失),可能导致与节点有绑定关系的资源(本地存储,指定调度节点的负载等)无法正常使用。请谨慎操作,避免对运行中的业务造成影响。 重置节点会导致与节点关联的localpv类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。重置节点时使用了本地持久存储卷的Pod会从重置的节点上驱逐,并重新创建Pod,Pod会一直处于pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。节点重置完成后,Pod可能调度到重置好的节点上,此时Pod会一直处于creating状态,因为PVC对应的底层逻辑卷已经不存在了。 重置节点使用的相关配置是节点所在节点池的最新配置。
        来自:
      • 开启云主机保护
        开启云主机保护 接口功能介绍 开启云主机保护 接口约束 无 URI POST /v4/scaling/group/protectenable 路径参数 无 Query参数 无 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 regionID 是 String 资源池ID 81f7728662dd11ec810800155d307d5b groupID 是 Integer 伸缩组ID 542 instanceIDList 是 Array of Integers 实例ID列表 [474] 响应参数 参数 参数类型 说明 示例 下级对象 statusCode Integer 返回码:800表示成功,900表示失败 800 errorCode String 业务细分码,为product.module.code三段式码 Scaling.Group.NotFound 错误码 message String 失败时的错误描述,一般为英文描述 scaling group info not found description String 失败时的错误描述,一般为中文描述 未找到弹性伸缩组信息 returnObj Object 成功时返回的数据,参见表returnObj returnObj 表 returnObj 参数 参数类型 说明 示例 下级对象 instanceIDList Array of Integers 实例ID列表 [474] 请求示例 请求头header 无 请求体body json { "groupID": 542, "regionID": "81f7728662dd11ec810800155d307d5b", "instanceIDList": [ 474 ] }
        来自:
        帮助文档
        弹性伸缩服务 AS
        API参考
        API(公测中)
        伸缩组云主机
        开启云主机保护
      • 关系数据库SQL Server版如何进行扩容
        本文主要介绍了关系数据库SQL Server版扩容类型分类。 关系数据库SQL Server版配置变更能力包含实例规格扩容、扩容磁盘、备份空间扩容、实例类型升级。 变更类型 说明 :: 实例规格扩容 实例规格包含内存和cpu规格扩容。 扩容磁盘 在扩容磁盘时,最小增加量为10 GB,最大不能超过当前实例规格的存储空间限制。 备份空间扩容 在备份空间扩容时,最小增加量为10 GB,最大不能超过当前实例规格的存储空间限制。 实例类型升级 支持单机版到主备版的实例类型升级。
        来自:
        帮助文档
        关系数据库SQL Server版
        常见问题
        性能/空间/内存
        关系数据库SQL Server版如何进行扩容
      • 退订规则说明
        注意事项 退订前的资源确认:执行退订操作前,请确保退订的资源数据已完成备份或迁移,退订成功后的资源将被完全删除,且不可恢复,请谨慎操作。退订可能会影响其他存在的关联业务,请用户做好评估; 退订未生效的续订资源:用户在使用的资源成功完成续订,在续订订单未到生效日期前,用户退订该资源,在使用的资源和未生效的续订资源将被全部退订; 退订具有绑定关系的资源群:用户该资源与其他资源具有绑定关系,若退订该资源,与该资源具有绑定关系的其他资源仍将继续产生费用;退订将解除原资源绑定关系进而可能影响业务使用; 参与活动购买的云产品,如若本退订规则与活动规则冲突,以活动规则为准;活动中说明“不支持退订”的云服务资源不支持退订。 表1 规则说明 退订分类 退订次数 收取手续费 收取已消费金额 返还代金券 返还优惠券 七天无理由全额退订 同一用户(含已注销账号)累计15次。每个账号享有3次。 否 否 是 否 非七天无理由退订 不限次数 是 是 否 否 其他退订 不限次数 否 否 是 否 说明 (1)代金券指以券面金额代替现金用来支付订单费用的一类使用券。 (2)优惠券指折扣券和满减券,即购买某种云产品可以打折或者满足支付一定现金金额后可以抵扣部分订单费用的一类使用券。 (3)若用户使用代金券或优惠券订购资源并仅退订其中部分资源,退订发起页面提示退订完成后不返还该订单已使用的代金券和优惠券,并由用户确认是否依然执行退订。 (4)券类如果存在有效使用期,系统将不返还超出有效期的券类。
        来自:
        帮助文档
        费用中心
        订单管理
        退订管理
        退订规则说明
      • 创建桶
        参数 描述 复制桶配置 可选。单击“选择源桶”后,可以在桶列表中选择一个源桶。返回后页面会自动复制源桶的以下配置信息:区域 / 数据冗余策略 / 存储类别 / 桶策略 / 服务端加密 / 归档数据直读 / 企业项目 / 标签。 选择后您仍可以根据业务情况对复制的配置信息进行部分或全部更改。 区域 桶所属区域。请选择靠近您业务的区域,以降低网络时延,提高访问速度。桶创建成功后,不支持变更区域,请谨慎选择。 桶名称 桶的名称。需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。桶创建成功后,不支持修改名称,创建时,请设置合适的桶名。OBS中桶按照DNS规范进行命名,DNS规范为全球通用规则, 其具体命名规则如下: 需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。用户删除桶后,立即创建同名桶或并行文件系统会创建失败,需要等待30分钟才能创建。 长度范围为3到63个字符,支持小写字母、数字、中划线()、英文句号(.)。 禁止两个英文句号(.)相邻,禁止英文句号(.)和中划线()相邻,禁止以英文句号(.)和中划线()开头或结尾。 禁止使用IP地址。 说明 当用户使用虚拟主机方式通过HTTPS协议访问OBS时,如果桶名称中包含英文句号(.),会导致证书校验失败。所以该场景下,建议桶名称不要使用英文句号(.) 数据冗余存储策略 多AZ存储:数据冗余存储至多个可用区(AZ),可靠性更高。 单AZ存储:数据仅存储在单个可用区(AZ),成本更低。 注意 请根据业务情况提前规划数据冗余存储策略,桶一旦创建成功,数据冗余存储策略就确定了,后续无法更改。 归档存储的桶不支持多AZ功能。 默认存储类别 桶的存储类别。不同的存储类别可以满足客户业务对存储性能、成本的不同诉求。 标准存储:适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景。 低频访问存储:适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景。 归档存储:适用于很少访问(平均一年一次),且对数据获取速率要求不高的业务场景。 桶策略 桶的读写权限控制。 私有:除桶ACL授权外的其他用户无桶的访问权限。 公共读:任何用户都可以对桶内对象进行读操作。 公共读写:任何用户都可以对桶内对象进行读/写/删除操作。 服务端加密 选择“SSEKMS”加密。加密密钥类型您可以选择“默认密钥”,您上传的对象将使用当前区域的默认密钥进行加密,如果您没有默认密钥,系统将会在首次上传对象时自动为您创建,您也可以选择“自定义密钥”,通过单击“创建KMS密钥”进入数据加密服务页面创建自定义密钥,然后通过KMS密钥的下拉框选中您创建的KMS密钥。若桶已开启了默认加密,上传对象可以继承桶的KMS加密特性。 归档数据直读 通过归档数据直读,您可以直接下载存储类别为归档存储的对象, 而无需提前恢复。 企业项目 将桶加入到企业项目中统一管理。请先在企业项目界面完成企业项目的创建,默认为default企业项目。在企业项目界面创建企业项目,创建用户组并将用户加入到该用户组,然后将用户组添加到该企业项目。这时用户组内用户将获得用户组授权的该企业项目下的桶和对象的操作权限。 说明 仅企业帐号能够配置企业项目 标签 可选。标签用于标识OBS中的桶,以此达到对OBS中的桶进行分类的目的。OBS以键值对的形式来描述标签,每个标签有且只有一对键值。
        来自:
        帮助文档
        对象存储 OBS
        快速入门
        创建桶
      • 产品优势
        并行文件服务 HPFS 产品为您提供优质的服务体验,本文带您了解产品优势。 共享访问 支持上千台客户端挂载同一文件系统,实现共享访问。 支持 NFS、HPFSPOSIX 协议类型,通过标准 POSIX 接口访问数据,无缝适配主流应用程序进行数据读写。 支持 MPII/O 并行计算接口,满足多客户端并行计算场景。 弹性扩展 采用可扩展的元数据架构,单个文件系统可支持百亿级别的文件数量,在海量文件场景下,仍然保持稳定持续的高效访问性能。 分钟级别快速扩容,用户可根据实际需要对文件系统进行在线扩容,扩容过程 IO 不中断,保障业务连续性。 安全可信 支持使用 VPC 用户隔离、权限组等安全管理功能进行访问权限控制,保障数据安全可靠。 使用多种 EC 方式、热备盘备份保证数据的可靠性。 支持 HA,故障时自动切换,服务可用性在99.90%及以上。 性能优越 可支持高性能百 GE 以太网、IB、RoCE 网络。 带宽、IOPS 性能随文件系统容量线性提升,最高提供千万 IOPS 和 TBps 吞吐,同时保证亚毫秒级时延,使得数据访问更加高效。
        来自:
        帮助文档
        并行文件服务 HPFS
        产品介绍
        产品优势
      • 实例系列
        系列功能对比 优势对比 单机实例:支持基于单机实例创建只读实例,支持管理和查询错误日志、慢日志,支持对实例进行备份恢复,支持实例的扩容和规格变更。相较于主备实例,单机实例只部署了一个数据库节点,大幅节省用户成本,售价是主备实例的一半。但由于单机实例只有一个数据库节点,当该数据库节点出现故障时,需要利用备份文件对实例进行恢复,恢复时间较长,因此,建议在研发测试环境使用,如果是对数据库可用性要求较高的敏感性业务,不建议使用单机实例。 主备实例:主备实例包含单机实例的所有功能,另外主备实例的备数据库节点仅用于故障转移和恢复场景,不对外提供服务。由于使用备节点在进行数据实时同步时会带来额外性能开销,从性能角度来看,单机实例的性能与主备实例相同,甚至单机实例的性能可能会高于主备实例。 只读实例:基于主实例创建的只读实例,可为您的业务分担读压力,只读实例数据同步于主实例,因此不提供备份恢复能力、数据库账号等功能。建议您在读压力大时订购只读实例。 实例系列功能对比详细情况见下表。 产品功能 单机实例 主备实例 一主两备实例 只读实例 节点数 1 2 3 1 规格配置 vCPU:最高192核 内存:最高1536GB 数据盘:最高64TB vCPU:最高192核 内存:最高1536GB 数据盘:最高64TB vCPU:最高192核 内存:最高1536GB 数据盘:最高64TB vCPU:最高192核 内存:最高1536GB 数据盘:最高64TB 实例规格变更 支持规格扩容、规格缩容和磁盘扩容 支持规格扩容、规格缩容和磁盘扩容 支持规格扩容、规格缩容和磁盘扩容 支持规格扩容、规格缩容和磁盘扩容 安全组 支持 支持 支持 支持 参数设置 支持 支持 支持 支持 主备切换 不支持 支持 支持 不支持 日志管理 支持 支持 支持 支持 只读实例 支持(需另建实例) 支持(需另建实例) 支持(需另建实例) 不支持(本身是只读实例) 数据库审计 支持 支持 支持 支持 白名单管理 支持 支持 支持 支持 数据库管理 支持 支持 支持 不支持 账号管理 支持 支持 支持 不支持 监控与告警 支持 支持 支持 支持 备份与恢复 支持 支持 支持 不支持 注意 不同资源池因IaaS资源能力等原因,加载版本有所差异,详见
        来自:
      • 创建自定义镜像v3
        接口功能介绍 请将云电脑中的敏感数据删除之后再创建自定义镜像,避免数据安全隐患。 请勿在创建镜像过程中对所选云电脑及其相关资源进行其他操作。 目前只支持仅有1个数据盘的非池化云电脑进行创建整机镜像。 创建整机镜像将会根据系统盘和数据盘的容量进行存储包资源扣减。 接口约束 无 URI POST /v3/customImage/create 路径参数 无 Query参数 参数 是否必填 参数类型 说明 示例 下级对象 regionId 是 String 资源池ID。 d8bbd132b53a11e9b0e40242ac110002 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 imageName 是 String 镜像名称。只能由数字、英文字母、中划线、下划线和小数点组成,字符数限制[1,50]。 WindowsServer2019Standardv1.3 description 否 String 描述。字符数限制[0,200]。默认为空字符串。 fooDesc desktopOid 是 String 云电脑ID D0023092201180710 resourcePackOid 是 String 资源包ID rspt4o453t1hs44mr3fqfrj4 type 否 String 镜像类型。默认值为:sys。取值范围:(sys系统镜像;all整机镜像) null
        来自:
        帮助文档
        天翼云电脑(政企版)
        API参考
        API
        2023-10-30
        镜像
        创建自定义镜像v3
      • 删除实例
        本章主要介绍删除实例 DCS管理控制台支持删除DCS缓存实例,且可批量删除DCS缓存实例、一键式删除创建失败的DCS缓存实例。 说明 DCS缓存实例删除后,实例中原有的数据将被删除,且没有备份,请谨慎操作。同时,实例的备份数据也会删除,在删除之前,您可以将实例的备份文件下载,本地永久保存。 如果是集群实例,会将实例的所有节点删除。 前提条件 DCS缓存实例已存在。 DCS缓存实例状态为运行中、故障时才能执行删除操作。 操作步骤 删除缓存实例 1.登录分布式缓存服务管理控制台。 2.在管理控制台左上角单击,选择区域和项目。 3.单击左侧菜单栏的“缓存管理”。 4.勾选“名称”栏下的需要删除的DCS缓存实例左侧的方框,可选一个或多个。 DCS缓存实例状态为创建中、重启中、升级中、规格变更中、清空数据中、备份中、恢复中时不允许执行删除操作。 5.单击信息栏左上侧的“删除”。 6.单击“是”,完成删除缓存实例。 删除DCS缓存实例大约需要1到30分钟。 说明 如果只需要删除单个DCS缓存实例,也可以在“缓存管理”界面,单击需要删除的DCS缓存实例右侧“操作”栏下的“更多 > 删除”。 删除创建失败的缓存实例 1.登录分布式缓存服务管理控制台。 2.在管理控制台左上角单击,选择区域和项目。 3.单击左侧菜单栏的“缓存管理”。 若当前存在创建失败的DCS缓存实例,界面信息栏会显示“创建失败任务”及失败数量信息。 4.单击“创建失败任务”后的图标或者数量。 弹出“创建失败任务”界面。 5.在“创建失败的实例”界面删除创建失败的DCS缓存实例。 单击“全部删除”按钮,一键式删除所有创建失败的DCS缓存实例。 单击需要删除的DCS缓存实例右侧的“删除”,依次删除创建失败的DCS缓存实例。
        来自:
        帮助文档
        分布式缓存服务Redis版
        用户指南
        实例日常操作
        删除实例
      • 服务端加密
        介绍配置服务端加密的具体步骤。 适用场景 媒体存储支持服务端加密,当用户对存储桶配置服务端加密后,XOS将上传到该桶的对象进行加密,再将加密对象持久化保存。当用户通过GetObject请求下载对象时,XOS自动将加密对象解密后返回给用户,并在响应头中返回xamzserversideencryption,用于声明该对象进行了服务器端加密。 注意 本功能仅会对开启服务端加密之后上传的对象进行加密,不会改变已有对象的加密状态。关闭服务端加密,也不会影响已有对象的加密状态。 产品支持XOS完全托管,即密钥完全托管于服务端。 控制台仅支持配置AES256加密算法。 适用区域 本功能目前仅部分资源池支持,具体可参考:资源池与区域节点。 如需使用,可联系客户经理或提交工单申请。 配置桶默认加密 创建桶配置服务端加密 在创建桶的弹窗中,选择服务端加密方式以及对应的加密算法。创建桶的具体操作可参考:新建Bucket。 已创建的存储桶开启服务端加密 1. 登录媒体存储控制台,进入【对象存储Bucket列表】菜单。 2. 选择需要设置服务端加密的存储桶,进入【基础配置】标签页。 3. 在【服务端加密】设置项,点击【编辑】。 4. 在弹窗中选择【XOS完全托管】以及对应的加密算法,点击【确定】完成操作。 关闭桶默认加密 1. 登录媒体存储控制台,进入【对象存储Bucket列表】菜单。 2. 选择需要关闭服务端加密的存储桶,进入【基础配置】标签页。 3. 在【服务端加密】设置项,点击【编辑】。 4. 在弹窗中选择【无】,点击【确定】。
        来自:
        帮助文档
        媒体存储
        控制台指南
        对象存储
        数据安全
        服务端加密
      • 导出API
        信息项 描述 API分组 选择待导出API所在的API分组。 运行环境 选择待导出API所在的环境。 API 默认导出API分组所在环境的所有的API,如果需要导出个别API,单击“自定义导出API”,勾选需要导出的API名称。 API定义范围 l 基础定义:包括API前端请求定义和响应定义,不包括后端服务定义。其中API前端请求定义除了Swagger规范定义项外,还包括API网关的一些Swagger扩展字段。适用于生成Swagger或OpenAPI格式的API文档定义。 l 全量定义:包括API前端请求定义、后端服务定义和响应定义。适用于将API定义备份为Swagger或OpenAPI文件。 l 扩展定义:包括API前端请求定义、后端服务定义和响应定义,还包括API关联的流量控制、访问控制等策略对象的定义。 导出格式 选择JSON、YAML或YML。 自定义版本 为导出的API自定义版本号,如果没有指定版本号,默认使用当前时间。 OpenAPI版本 选择导出Swagger 2.0或OpenAPI 3.0定义的API。
        来自:
        帮助文档
        API网关
        开放API网关
        API管理
        导出API
      • 认证鉴权
        信息的获取 云网平台获取 登录云网门户,在“控制台”>“个人中心”>“ 第三方账号绑定 ”,通过创建或者查看获取ak,sk。 基本签名流程 ctyuneopak/ctyuneopsk基本签名流程 1、待签字符串:使用规范请求和其他信息创建待签字符串; 2、计算密钥:使用HEADER、ctyuneopsk、ctyuneopak来创建Hmac算法的密钥; 3、计算签名:使用第三步的密钥和待签字符串在通过hmacsha256来计算签名。 4、签名应用:将生成的签名信息作为请求消息头添加到HTTP请求中。 创建待签名字符串 待签名字符串的构造规则如下: 待签名字符串 需要进行签名的Header排序后的组合列表+ "n" + 排序的query + "n" + toHex(sha256(原封的body)) 需要进行签名的Header排序后的组合列表(排序的header) header 以 headername:headervalue来一个一个通过n拼接起来,EOP是强制要求ctyuneoprequestid和eopdate这个头作为Header中的一部分,并且必须是待签名Header里的一个。需要进行签名算法的Header需要进行排序(将它们的headername以26个英文字母的顺序来排序),将排序后得到的列表进行遍历组装成待签名的header。 排序的query query以&作为拼接,key和值以连接,排序规则使用26个英文字母的顺序来排序,Query参数全部都需要进行签名。 toHex(sha256(原封的body)) 传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制。 排序的header例子: 假设你需要将ctyuneoprequestid、eopdate、host都要签名,则待签名的header构造出来是: ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n ctyuneoprequestid、eopdate和host的排序就是这个顺序,如果你加入一个ccad的header;同时这个header也要是进行签名,则待签名的header组合: ccda:123n ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n 构造动态密钥 发起请求时,需要构造一个eopdate的时间,这个时间的格式是yyyymmddTHHMMSSZ;言简意赅一些,就是年月日T时分秒Z 1、先是拿你申请来的ctyuneopsk作为密钥,eopdate作为数据,算出ktime 2、拿ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; 3、拿kAk作为密钥,eopdate的年月日值作为数据;算出kdate eopdate yyyymmddTHHMMSSZ(20211221T163614Z)(年月日T时分秒Z) :: Ktime 使用ctyuneopsk作为密钥,eopdate作为数据,算出ktime; Ktime hmacSha256(ctyuneopsk, eopdate) kAk 使用ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; kAk hmacsha256(ktime,ctyuneopak) kdate 使用kAk作为密钥,eopdate的年月日值作为数据;算出kdate; kdate hmacsha256(kAk, eopdate)
        来自:
        帮助文档
        共享带宽 SBW
        API参考
        如何调用API
        认证鉴权
      • 重启实例
        本章节会介绍如何重启实例。 操作场景 您可能需要重启数据库实例,通常是出于维护目的。例如:对于某些运行参数修改,需要重启单个实例使之生效。您可通过控制台对主机和只读实例执行重启操作。 只有实例状态为可用时才能进行重启操作,但正在执行备份或创建只读副本任务的实例不能重启。 注意 如果数据库实例未处于“正常”状态,则无法重启该实例。您的数据库可能会由于几个原因而不可用,例如,正在进行备份或以前请求的修改操作。 重启数据库实例会重新启动数据库引擎服务。重启数据库实例将导致短暂中断,在此期间,数据库实例状态将显示为“重启中”。 重启过程中,实例将不可用。重启后实例会自动释放内存中的缓存,请注意对业务进行预热,避免业务高峰期出现阻塞。 操作步骤 步骤 1 登录管理控制台。 步骤 2 单击管理控制台左上角的,选择区域和项目。 步骤 3 选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。 步骤 4 在“实例管理”页面,选择指定的主实例,或者单击展开只读实例,单击“更多 > 重启实例”。 您也可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“重启实例”。 重启实例时,如果是主备实例,对应的备实例也会被同步重启。 步骤 5 在“重启实例”弹框,单击“是”重启实例。 步骤 6 稍后刷新实例列表,查看重启结果。如果实例状态为“正常”,说明实例重启成功。
        来自:
        帮助文档
        关系数据库PostgreSQL版
        用户指南
        管理数据库实例
        重启实例
      • 实例重启
        分布式缓存服务Redis版管理控制台支持重启运行中的缓存实例。 实例重启须知: 在重启缓存实例过程中,实例会出现短暂不可用。 在重启缓存实例过程中,如果有正在进行的备份操作,可能会重启失败。 重启缓存实例会断开原有客户端连接,建议在应用中配置自动重连。 前提条件 只有当分布式缓存Redis版缓存实例处于“运行中”状态,才能执行此操作。 操作步骤 1. 登录 Redis管理控制台。 2. 在管理控制台左上角选择实例所在的区域。 3. 在实例列表页面选择实例,点击”更多>重启“按钮,进行实例重启。
        来自:
        帮助文档
        分布式缓存服务Redis版
        用户指南
        实例日常操作
        实例重启
      • 删除或退订云电脑v3
        接口功能介绍 当前支持操作单实例、资源包来源的云电脑 接口约束 无 URI POST /v3/desktop/batch/delete 路径参数 无 Query参数 参数 是否必填 参数类型 说明 示例 下级对象 regionId 是 String 资源池ID。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 desktopList 是 Array of Objects 云电脑列表,可设置一个或多个,最多 10 个 desktopList 表 desktopList 参数 是否必填 参数类型 说明 示例 下级对象 desktopOid 是 String 云电脑ID XXXXXXXXXXXXX6925 响应参数 参数 参数类型 说明 示例 下级对象 statusCode Integer 状态码。可能值: 800:请求成功。 900:请求失败。 800 error String 错误码。 ECPC1000 message String 提示信息。 OK. returnObj Object 返回数据结构体。 returnObj 表 returnObj 参数 参数类型 说明 示例 下级对象 errorMessage String 错误信息(仅创建单独付费云电脑有效)。 batchOrderPlacementResults Array of Objects 订单信息(仅创建单独付费云电脑有效)。 batchOrderPlacementResults 表 batchOrderPlacementResults 参数 参数类型 说明 示例 下级对象 submitted Boolean 提交结果。 errorMessage String 错误信息。 orderPlacedEvents Array of Objects 订单信息。 orderPlacedEvents 表 orderPlacedEvents 参数 参数类型 说明 示例 下级对象 newOrderNo String 订单号。 submitted String 提交结果。 totalPrice String 总价格。 newOrderId String 订单id。 errorMessage String 错误信息。
        来自:
        帮助文档
        天翼云电脑(政企版)
        API参考
        API
        2023-10-30
        云电脑
        删除或退订云电脑v3
      • 产品咨询类
        本节介绍了云数据库TaurusDB产品咨询相关问题。 使用TaurusDB要注意些什么 1. 实例的操作系统,对用户都不可见,这意味着,只允许用户使用应用程序访问数据库对应的IP地址和端口。 2. 对象存储服务(Object Storage Service,简称OBS)上的备份文件以及TaurusDB服务使用的弹性云主机(Elastic Cloud Server,简称ECS),都对用户不可见,它们只对TaurusDB服务的后台管理系统可见。 3. 查看实例列表时请确保与实例选择的区域一致。 4. 申请TaurusDB后,您还需要做什么。 申请TaurusDB实例后,您不需要进行数据库的基础运维(比如高可用、安全补丁等),但是您还需要重点关注以下事情: a. TaurusDB实例的CPU、内存等资源是否足够,如果资源不足需及时变更规格。 b. TaurusDB实例的数据存储空间是否足够,如资源不足需及时扩容。(超出时会自动扩容,但超出部分是按需收费,价格比自行扩容贵)。 c. TaurusDB实例是否存在性能问题,是否有大量的慢SQL,SQL语句是否需要优化,是否有多余的索引或者缺失的索引等。 为何使用了TaurusDB后网站登录较慢 推荐您做如下两个处理: 通过TaurusDB服务的管理控制台查看TaurusDB实例的性能情况。 与应用程序有很大关系,使用命令查看当前数据库连接状态,比较本地数据库和TaurusDB的差异。 TaurusDB如何自动进行故障切换 创建TaurusDB实例时,除主节点外,默认创建了一个只读节点。当主节点故障时,系统会自动切换到只读节点,只读节点提升为主节点,原来故障的主节点也会自动恢复为只读节点。
        来自:
        帮助文档
        云数据库TaurusDB
        常见问题
        产品咨询类
      • 恢复出厂设置
        常见问题 • Q:恢复出厂设置需要多长时间? A:通常需要 1~3 分钟,包括恢复和重启过程。 • Q:恢复出厂设置会丢失哪些数据? A:所有用户配置、自定义设置、历史会话记录等都将被清除,恢复到初始安装状态。 • Q:什么情况下需要恢复出厂设置? A:当 XClaw 出现严重问题无法通过自动修复解决,或需要将服务转让给他人使用时。 • Q:恢复出厂设置后可以恢复之前的数据吗? A:不能,恢复出厂设置是不可逆操作,执行前请务必备份重要数据。 • Q:恢复出厂设置后需要做什么? A:系统重启后,您需要重新进行初始配置,包括设置IM通道、配置模型等。
        来自:
        帮助文档
        应用托管
        用户指南
        XClaw(内测功能)
        高级功能
        恢复出厂设置
      • Java调用示例(1)
        1. com.ffcs.ebp.ebpsdk.common.Response plaintext package com.ffcs.ebp.ebpsdk.common; import java.util.Map; public class Response { private int statusCode; private String body; private Map headers; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode statusCode; } public String getBody() { return body; } public void setBody(String body) { this.body body; } public Map getHeaders() { return headers; } public void setHeaders(Map headers) { this.headers headers; } } 2. com.ffcs.ebp.ebpsdk.YunSign plaintext package com.ffcs.ebp.ebpsdk; import com.ffcs.ebp.ebpsdk.common.Response; import org.apache.commons.lang.StringUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.; import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.; public class YunSign { private String url; private String body; private String ak; private String sk; private String uuId; private int temp; private String contentType; private String queryStr; private Map headerMap; private String afterQuery; public YunSign(String url, String ak, String sk, String uuId, String body, int temp, String contentType, String queryStr, Map headerMap) { this.url url; if(body.equals("{}")){ body ""; } this.body body; this.ak ak; this.sk sk; this.uuId uuId; this.temp temp; this.contentType contentType; this.queryStr queryStr; this.headerMap headerMap; } public Response toDo(String method, int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response response null; method method.toUpperCase(); switch (method) { case "POST": response doPost(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "GET": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByGetReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doGet(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "DELETE": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByDeleteReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doDelete(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "PUT": response doPut(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "PATCH": response doPatch(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "HEAD": response doHead(connectTimeout, connectionRequestTimeout, socketTimeout); break; } return response; } private String getSign(Date eopDate) { String calculateContentHash getSHA256(body); //报文原封不动进行sha256摘要 // System.out.println("calculateContentHash:" + calculateContentHash); SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); SimpleDateFormat DATEFORMATTER new SimpleDateFormat("yyyyMMdd"); String singerDate TIMEFORMATTER.format(eopDate); String singerDd DATEFORMATTER.format(eopDate); //header的key按照26字母进行排序, 以&作为连接符连起来 try { String CampmocalHeader String.format("ctyuneoprequestid:%sneopdate:%sn", this.uuId, singerDate); String sigture CampmocalHeader + "n" + this.afterQuery + "n" + calculateContentHash; // System.out.println("sigture:" + sigture); byte[] ktime HmacSHA256(singerDate.getBytes(), sk.getBytes()); // System.out.println("ktime:" + HexUtils.bytes2Hex(ktime)); byte[] kAk HmacSHA256(ak.getBytes(), ktime); // System.out.println("kAk:" + HexUtils.bytes2Hex(kAk)); byte[] kdate HmacSHA256(singerDd.getBytes(), kAk); // System.out.println("kdate:" + HexUtils.bytes2Hex(kdate)); String Signature Base64.getEncoder().encodeToString(HmacSHA256(sigture.getBytes("UTF8"), kdate)); // System.out.println("Signature:" + Signature); String signHeader String.format("%s Headersctyuneoprequestid;eopdate Signature%s", ak, Signature); // System.out.println("signHeader:" + signHeader); return signHeader; } catch (Exception e) { e.printStackTrace(); } return null; } / 在调用SSL之前需要重写验证方法,取消检测SSL 创建ConnectionManager,添加Connection配置信息 @return HttpClient 支持https / private static CloseableHttpClient sslClient() { try { // 在调用SSL之前需要重写验证方法,取消检测SSL X509TrustManager trustManager new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] xcs, String str) { } @Override public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; SSLContext ctx SSLContext.getInstance(SSLConnectionSocketFactory.TLS); ctx.init(null, new TrustManager[]{trustManager}, null); SSLConnectionSocketFactory socketFactory new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); // 创建Registry RequestConfig requestConfig RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARDSTRICT) .setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)) .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build(); Registry socketFactoryRegistry RegistryBuilder. create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", socketFactory).build(); // 创建ConnectionManager,添加Connection配置信息 PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager(socketFactoryRegistry); CloseableHttpClient closeableHttpClient HttpClients.custom().setConnectionManager(connectionManager) .setDefaultRequestConfig(requestConfig).build(); return closeableHttpClient; } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } public Response doGet(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); //创建HttpGet远程连接实例 HttpGet httpGet; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGet new HttpGet(this.url + "?" + this.afterQuery); } else { httpGet new HttpGet(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGet.setHeader("ContentType", this.contentType); httpGet.setHeader("ctyuneoprequestid", this.uuId); httpGet.setHeader("EopAuthorization", getSign(eopDate)); httpGet.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGet.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGet.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpGet.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpGet); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByGetReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response result new Response(); CloseableHttpClient client null; CloseableHttpResponse response null; try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL client sslClient(); } else { client HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpGetWithEntity远程连接实例 HttpGetWithEntity httpGetWithEntity; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGetWithEntity new HttpGetWithEntity(this.url + "?" + this.afterQuery); } else { httpGetWithEntity new HttpGetWithEntity(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为HttpGetWithEntity实例设置配置 httpGetWithEntity.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGetWithEntity.setHeader("ContentType", this.contentType); httpGetWithEntity.setHeader("ctyuneoprequestid", this.uuId); httpGetWithEntity.setHeader("EopAuthorization", getSign(eopDate)); httpGetWithEntity.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGetWithEntity.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGetWithEntity.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); httpGetWithEntity.setEntity(httpEntity); //执行请求操作,并拿到结果(同步阻塞) response client.execute(httpGetWithEntity); //获取结果实体 HttpEntity entity response.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! client) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPost(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpPost远程连接实例 HttpPost httpPost; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPost new HttpPost(this.url + "?" + this.afterQuery); } else { httpPost new HttpPost(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPost.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPost.setHeader("ContentType", this.contentType); httpPost.setHeader("ctyuneoprequestid", this.uuId); httpPost.setHeader("EopAuthorization", getSign(eopDate)); httpPost.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPost.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPost.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPost.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPost); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPut(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPut远程连接实例 HttpPut httpPut; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPut new HttpPut(this.url + "?" + this.afterQuery); } else { httpPut new HttpPut(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPut.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(20321900,01,05); httpPut.setHeader("ContentType", this.contentType); httpPut.setHeader("ctyuneoprequestid", this.uuId); httpPut.setHeader("EopAuthorization", getSign(eopDate)); httpPut.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPut.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPut.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPut.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPut); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPatch(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPatch远程连接实例 HttpPatch httpPatch; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPatch new HttpPatch(this.url + "?" + this.afterQuery); } else { httpPatch new HttpPatch(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPatch.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPatch.setHeader("ContentType", this.contentType); httpPatch.setHeader("ctyuneoprequestid", this.uuId); httpPatch.setHeader("EopAuthorization", getSign(eopDate)); httpPatch.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPatch.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPatch.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPatch.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPatch); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doDelete(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDelete httpDelete; if (StringUtils.isNotEmpty(this.afterQuery)) { httpDelete new HttpDelete(this.url + "?" + this.afterQuery); } else { httpDelete new HttpDelete(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpDelete.setHeader("ContentType", this.contentType); httpDelete.setHeader("ctyuneoprequestid", this.uuId); httpDelete.setHeader("EopAuthorization", getSign(eopDate)); httpDelete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpDelete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpDelete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpDelete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpDelete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByDeleteReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDeleteWithBody delete; if (StringUtils.isNotEmpty(this.afterQuery)) { delete new HttpDeleteWithBody(this.url + "?" + this.afterQuery); } else { delete new HttpDeleteWithBody(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); delete.setHeader("ContentType", this.contentType); delete.setHeader("ctyuneoprequestid", this.uuId); delete.setHeader("EopAuthorization", getSign(eopDate)); delete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { delete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : delete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); delete.setEntity(httpEntity); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 delete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(delete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doHead(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpHead远程连接实例 HttpHead httpHead; if (StringUtils.isNotEmpty(this.afterQuery)) { httpHead new HttpHead(this.url + "?" + this.afterQuery); } else { httpHead new HttpHead(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpHead.setHeader("ContentType", this.contentType); httpHead.setHeader("ctyuneoprequestid", this.uuId); httpHead.setHeader("EopAuthorization", getSign(eopDate)); httpHead.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpHead.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpHead.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpHead实例设置配置 httpHead.setConfig(requestConfig); // 执行head请求得到返回对象 response httpClient.execute(httpHead); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } private String toHex(byte[] data) { StringBuilder sb new StringBuilder(data.length 2); byte[] var2 data; int var3 data.length; for (int var4 0; var4 2) { String encodeStr null; encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + str; } } else { String[] s str.split(""); if (s.length > 2) { String encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } } } } } catch (Exception e) { e.printStackTrace(); } return afterQuery; } } 3. HexUtils.java plaintext package com.ffcs.ebp.ebpsdk; public class HexUtils { private static final char[] HEXES { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; / byte数组 转换成 16进制小写字符串 / public static String bytes2Hex(byte[] bytes) { if (bytes null bytes.length 0) { return null; } StringBuilder hex new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } / 16进制字符串 转换为对应的 byte数组 / public static byte[] hex2Bytes(String hex) { if (hex null hex.length() 0) { return null; } char[] hexChars hex.toCharArray(); byte[] bytes new byte[hexChars.length / 2]; // 如果 hex 中的字符不是偶数个, 则忽略最后一个 for (int i 0; i headerMap new HashMap<>(); // headerMap.put("queryMetricDataInfo", "{"regionId":"cnsz1","dim":"instanceid,98cdcc8a8e544788ab9cc94ccee429c7","filter":"average","from":"1658473040","to":"1658473040","metricName":"netbitRecv","namespace":"AGT.ECS","period":"1"},"platform":"3"}"); // headerMap.put("platform", "3"); // headerMap.put("consoleUrl", " // headerMap.put("UserAgent", "3333433"); // headerMap.put("XForwardedFor", "1231313"); // headerMap.put("regionId", "100054c0416811e9a6690242ac110002"); // headerMap.put("prodInstId","9dcaf0157c604100af79bdb8271527bc"); //请求地址 String url " //query参数(?后面拼接的参数。没有就不填) aaaa&bbbb String queryStr "regionID41f64827xxxxxxxxxffa3a5deb5d15d"; //body参数(没有就不填) String body ""; //APPID String ak "9f82cacd3f8235c66edfs5e899f098e6"; //appkey String sk "MlgzESz430hJgTzA4lkjuJvDMMLTqwBQRicVqV62VM"; String uuId UUID.randomUUID().toString(); //连接超时 int connectTimeout 35000; //连接请求超时 int connectionRequestTimeout 35000; //socket超时 int socketTimeout 60000; YunSign yunSign new YunSign(url, ak, sk, uuId, body, temp, contentType, queryStr, headerMap); Response response yunSign.toDo(method, connectTimeout, connectionRequestTimeout, socketTimeout); System.out.println("应答头部 "); for (Map.Entry entry : response.getHeaders().entrySet()) { System.out.println(entry.getKey().toString() + ":" + entry.getValue().toString()); } System.out.println(); System.out.println("请求结果 "); System.out.println(response.getBody()); } }
        来自:
      • SQL Server数据恢复有哪些限制?
        本文介绍恢复SQL Server数据的限制。 数据恢复的限制 支持将低版本的SQL Server数据库的备份集恢复到高版本SQL Server,不支持从高版本恢复到低版本。举例,同2014版,不能将企业版恢复到标准版。 待恢复目标实例的剩余存储空间大小必须大于备份集的大小,请务必确保剩余空间足够,否则可能恢复失败。 待恢复目标实例必须和源实例在同一个VPC。 请确保源实例没有被注销回收。 请确保待恢复目标实例处于正常运行状态。 数据恢复的耗时取决于数据量,数据量越大则恢复耗时越长。 只支持恢复用户自定义数据库,不支持恢复系统数据库。 按时间点恢复时,时间点不支持任意选择,时间点只能在数据备份和日志备份的范围内,系统会自动提供可选时间点范围。
        来自:
        帮助文档
        关系数据库SQL Server版
        常见问题
        备份/恢复
        SQL Server数据恢复有哪些限制?
      • 产品功能
        媒体存储为客户提供丰富的数据管理、数据处理、数据安全的产品能力。 块存储 产品能力 功能说明 接入方式 支持iSCSI接入方式。 块空间管理 支持通过控制台管理块设备资源,包括创建、扩容、删除等操作。 鉴权管理 可通过控制台管理文件资源访问权限,接入使用资源时进行鉴权。 文件存储 产品能力 功能说明 接入方式 提供NFS、CIFS两种类型接口,支持NFSV4.0、SMB2、SMB3协议。 文件空间管理 支持通过控制台管理文件资源,包括创建、扩容、删除等操作。 鉴权管理 可通过控制台管理文件资源访问权限,接入使用资源时进行鉴权。 对象存储 产品能力 功能说明 对象管理 支持文件的上传/分片上传/追加上传、下载、删除、复制、前缀搜索、移动功能、追加上传支持整个对象内容MD5计算、可自定义元数据。 对象标签 通过对象(Object)标签功能,对Object进行分类管理,比如列举指定标签的Object、对指定标签的Object配置统一的生命周期。 跨域资源共享 通过桶上配置跨域规则,允许或禁止某些网站的跨域请求。 生命周期 对象存储支持按照过期天数等灵活的策略配置生命周期管理机制。 镜像回源 通过镜像回源功能,当请求者向存储桶(Bucket)请求不存在的文件时,从回源规则设置的源站获取目标文件。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 桶清单 通过桶清单功能,定时生成桶内指定文件(Object)的数量、大小、存储类型、加密状态的清单信息,并保存到指定Bucket。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 桶标签 通过存储桶(Bucket)的标签功能, 对 Bucket 进行分类管理,比如列举带有指定标签的Bucket。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 文件解压缩 通过压缩包解压规则,当上传满足条件的压缩包文件时,服务将自动解压该压缩包后,将文件保存到Bucket中。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 访问权限 支持基于资源的访问权限策略,包括Bucket ACL、Object ACL、 Bucket Policy。 防盗链 可通过是否允许空Referer或黑白名单设置,校验访问账号内资源操作的合法性。 主子账号 可基于子账号进行资源访问与管理授权。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 STS角色管理 支持STS临时凭证,可对其他用户颁发临时凭证,无需透露owner的AKSK。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 合规保留 媒体存储以“不可删除、不可篡改”方式保存和使用数据。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 版本控制 针对Object的覆盖和删除操作将会以版本的形式保存下来,可将 Object 恢复至指定的历史版本。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 服务端加密 媒体存储可对收到的文件进行加密,再保存加密后的文件,用户下载文件时,服务自动将加密文件解密后返回给用户。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 存储桶复制 支持跨不同存储区域或同一存储区域的Bucket 自动、异步(近实时)复制对象(Object)。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 数据迁移 支持多种数据迁移能力,可以满足客户多种数据迁移场景,包括存储桶迁移、跨账号迁移、跨云数据迁移。 事件通知 当资源发生变动时,用户可及时接收通知消息。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 日志存储 通过日志存储功能,将操作日志按照固定的命名规则,以5分钟为单位写入指定的Bucket。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 告警管理 支持告警规则管理,包括添加告警规则,管理告警规则,查看告警消息等。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 自定义域名 通过自定义域名绑定功能,可以通过已绑定的自定义域名访问存储桶内的文件。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 操作日志 支持查询指定时间内在控制台操作的相关日志。 实时日志查询 支持查询通过API或SDK操作对象存储的相关日志。目前实时日志查询为内测功能,如需使用,可联系客户经理或提交工单申请。 用量统计 统计并支持查询存储空间、流量与请求次数用量信息。 图片处理 提供的产品自带图片处理功能,包括基础图片转换、水印功能、原图保护、视频截帧、数据处理持久化保存等功能。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 视频截帧 对象存储内置提供视频截帧功能,可截取出H264视频文件中的指定位置内容的对应图片。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 工具指南 提供图形化客户端工具以及网络测速工具。 API接口 提供REST形式的访问接口,可直接调用相应接口完成操作。 SDK 对媒体存储提供的REST API进行的封装,可直接调用SDK提供的接口函数进行使用。
        来自:
        帮助文档
        媒体存储
        产品介绍
        产品功能
      • 应急方案的目标和组织
        本页介绍天翼云TeleDB数据库应急方案的目标和组织。 目标 服务连续性: 通过人员、资源等的及时调配和安排,确保TeleDB服务的连续性和服务质量。 降低风险: 应急方案必须采取各种措施,尽快解决发生的问题,将由故障产生的影响降到最低。 减少损失: 对于可能产生的影响,提出技术和管理方面的改进建议,尽量将各种损失减少到最低。 应急保障小组 为保障节点及重大活动顺利开展,应提前成立应急保障小组,随时待命: 1. 项目经理:负责整个项目协调和管理工作。 2. 网络工程师:负责网络巡检和相关问题处理。 3. 数据库工程师:负责TeleDB数据库巡检和相关问题处理。 4. 操作系统工程师:负责操作系统巡检和相关问题处理。 同时安排后端相关专家人员,随时待命,有问题可随时介入。 相关人员A/B角配置 1. 应急小组成员,都需要按AB角色配置,互相补位,当工程师A某种原因无法及时提供服务时,由项目经理,在区域范围内安排合适的备份工程师B进行相关的服务; 2. 如果区域人员无法满足要求,由项目经理向技术支持中心经理申请专家技术支持。 3. 专家参与事件不能按时完成情况,则由项目经理申请更高级别技术支持。 下文是TeleDB服务出现故障时的常见应急处理方案,更多故障处理参数故障处理手册。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品
        应急预案
        应急方案的目标和组织
      • 快速清理已删除节点上的CCE组件
        本节主要介绍快速清理已删除节点上的CCE组件。 使用场景 若集群中包含包周期节点或纳管节点,删除对应集群和节点不会删除对应的ECS,此时请按照界面提示清理节点上CCE组件。若未按照提示清理节点组件,后续需要清理ECS时,可按照如下操作进行清理。 注意 卸载将会删除弹性云主机上的CCE系统用户paas以及docker相关资源,执行清理操作前,若有关键数据需要保留,请提前备份。 操作步骤 步骤 1 登录CCE控制台,在左侧导航栏中选择“集群管理 > 节点管理”,在右侧的节点列表中找到要执行操作的纳管节点,在节点的“操作”区域下单击“更多 > 移除”。 步骤 2 在弹出的“移除纳管节点”对话框中输入"REMOVE"确认移除节点,单击“确认”。 步骤 3 认真阅读弹出的“提示”页面内容,按照步骤清理CCE相关资源。
        来自:
        帮助文档
        云容器引擎
        最佳实践
        集群
        快速清理已删除节点上的CCE组件
      • 暂停实例
        如果您暂时不需要使用按需或包周期的关系数据库MySQL版实例,可以暂停该实例。实例暂停后计算资源将被冻结,不再产生资源费用,可以有效为您节省成本。本文为您介绍如何暂停实例、恢复实例,及按需计费实例欠费暂停的处理方法。 注意 从2024年4月14日起部分资源池下线该功能,详情请参见【下线】2024年4月14日起关系数据库MySQL版下线部分资源池暂停实例功能。目前,仅II类型资源池的西南1资源池支持该功能,I类型资源池不支持该功能,具体支持情况以控制台页面展示为准。更多资源池信息,请参见功能概览。 前提条件 实例为主实例,并且实例下面没有只读实例。如果有只读实例,请先退订只读实例,具体操作,请参考退订。 实例没有开启数据库代理。如果有数据库代理,请先关闭代理服务,具体操作,请参考关闭MySQL数据库代理服务。 实例状态为运行中 。 影响 实例暂停期间所有功能均会失效,包括:连接实例、备份、恢复、变更配置等。 实例暂停时,会进行一次全量备份,暂停期间所有备份数据超过保留天数后仍会过期。 实例暂停后,原有内外网连接地址将会保留,当再次启动实例时,仍可使用。 已暂停实例的有效全备可用于恢复到新实例。 已暂停的实例(不论是否到期)如果超过7天仍未重启,将会自动进入回收站,在回收站如果超过7天未处理,将会被注销。
        来自:
        帮助文档
        关系数据库MySQL版
        用户指南
        实例管理
        暂停实例
      • 事前预防措施
        提升员工安全意识 禁止随便点击邮件中的不明附件或快捷方式,网站链接等。 禁止从来历不明的网站下载的一些文档。 重要文件或信息(如密码口令等)需要加密,防止泄露。 重要文件定期备份 用户自行对重要文档数据与数据库文件做备份。 使用备份产品对主机、硬盘、文件目录或数据库进行备份。 定期系统安全巡检 对可疑文件/进程或应用进行清理,如后缀名异常文件、来源不明的应用等。 系统/软件即时更新补丁 及时修复系统漏洞,定期更新。 上线前进行主机安全加固 关闭不必要的端口,减少暴露面。 关闭不必要的网络访问,减少暴露面。 系统安全配置检查:核查系统配置,如设置密码策略、设置用户锁定策略、禁用Guest账户、限制匿名用户连接等。 不设置弱密码 设置复杂口令: 长度为8~26个字符;包含大小写字母、数字及符号3种。 不能包含与账号名相关的信息。 不能使用连续3个及以上键位排序字符,如123,Qwe。 不能使用常用的具有特殊含义的字符串等。
        来自:
        帮助文档
        服务器安全卫士(原生版)
        最佳实践
        云上勒索病毒防护实践
        防护措施
        事前预防措施
      • 手动扩容磁盘
        本章节会介绍如何扩容磁盘。 操作场景 随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,需要为关系型数据库实例进行扩容。 磁盘空间瞬时使用率达到97%,实例将显示“磁盘空间满”,此时数据库不可进行写入操作。您需要扩容至磁盘空间使用率小于85%才可使实例处于可用状态,使数据库恢复正常的写入操作。 建议您设置“磁盘使用率”指标的告警规则,及时了解磁盘使用情况,起到预警作用。 磁盘扩容期间,服务不中断。关系型数据库服务只支持扩容磁盘存储空间大小,不支持变更存储类型。 说明 关系型数据库实例支持无限次扩容。 磁盘扩容期间,实例状态为“扩容中”备份业务不受影响。 如果是主备实例,针对主实例扩容时,会同时对其备实例进行扩容。 扩容过程中,该实例不可重启和删除。 磁盘容量变更只允许扩容,不能缩容。 主实例扩容 步骤 1 登录管理控制台。 步骤 2 单击管理控制台左上角的,选择区域和项目。 步骤 3 选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。 步骤 4 在“实例管理”页面,选择目标实例,单击“操作”列的“更多 > 磁盘扩容”,进入“磁盘扩容”页面。 您还可以通过如下途径进行扩容: 单击目标实例名称,进入“基本信息”页面。在“存储/备份空间”模块的“存储空间”处,单击“磁盘扩容”,进入“磁盘扩容”页面。 步骤5 在“磁盘扩容”页面,选择空间大小,单击“立即申请”。 每次扩容最小容量为10GB,实例所选容量大小必须为10的整数倍,最大磁盘容量为4000GB。 步骤6 规格确认。 重新选择:单击“上一步”,回到上个页面,修改新增大小。 确认无误:单击“提交申请”,提交扩容。 确认无误:按需实例单击“提交”,提交扩容。 步骤7 查看扩容结果。 在实例管理页面,可看到实例状态为“扩容中”,稍后单击实例名称,在“基本信息”页面,查看磁盘大小,检查扩容是否成功。此过程需要3~5分钟。
        来自:
        帮助文档
        关系数据库MySQL版
        用户指南
        实例管理
        手动扩容磁盘
      • 支持监控的关键操作说明
        关键操作名称 说明 实例操作 对实例进行的操作,例如实例重启,停止等。 节点操作 对实例单个节点进行的操作,如节点恢复、停止等。 白名单 实例白名单相关操作,如删除、新增、修改。 备份操作 创建备份,修改备份策略等操作。 实例参数操作 修改实例参数的操作。 实例远程操作 杀空闲连接和VACUUM表操作。 审计日志 开关、修改审计日志设置的操作。 实例用户操作 创建用户、删除用户等操作。 数据库操作 创建数据库、删除数据库等操作。 实例标签 新增实例标签、删除标签等操作。 参数模板操作 创建、修改参数模板等操作。
        来自:
        帮助文档
        关系数据库PostgreSQL版
        用户指南
        安全监控
        操作日志
        支持监控的关键操作说明
      • 工作负载类
        排查项三:带云硬盘卷的Deployment的副本数大于1 问题描述: 创建Pod失败,并报“添加存储失败”的事件,事件信息如下。 MultiAttach error for volume "pvc62a7a7d99dc842a283660f5ef9db5b60" Volume is already used by pod(s) testttt7b774658cblc98h 问题定位: 查看Deployment的副本数是否大于1。 Deployment中使用EVS存储卷时,副本数只能为1。若用户在后台指定Deployment的实例数为2以上,此时CCE并不会限制Deployment的创建。但若这些实例Pod被调度到不同的节点,则会有部分Pod因为其要使用的EVS无法被挂载到节点,导致Pod无法启动成功。 解决方案: 使用EVS的Deployment的副本数指定为1,或使用其他类型存储卷。 排查项四:EVS磁盘文件系统损坏 问题描述: 创建Pod失败,出现类似信息,磁盘文件系统损坏。 MountVolume.MountDevice failed for volume "pvc08178474c58c4820a82814437d46ba6f" : rpc error: code Internal desc [09060defafd011ec9664fa163eef47d0] /dev/sda has file system, but it is detected to be damaged 解决方案: 在EVS中对磁盘进行备份,然后执行如下命令修复文件系统。 fsck y {盘符} 七、工作负载异常:一直处于创建中 问题描述 节点变更之后,节点上的工作负载一直处于创建中。 解决方法 步骤 1 登录CCE节点(弹性云服务器)并删除cpumanagerstate文件。 删除命令示例如下: rm rf /mnt/paas/kubernetes/kubelet/cpumanagerstate 步骤 2 重启节点或重启kubelet,重启kubelet的方法如下: systemctl restart kubelet 此时重新拉起或创建工作负载,已可成功执行。 解决方式链接:CCE节点变更规格后,为什么无法重新拉起或创建工作负载? 八、工作负载异常:结束中,解决Terminating状态的Pod删不掉的问题
        来自:
      • 申请发票
        本文主要介绍了申请发票的常见问题。 购买按需付费的产品什么时候能开发票? 按需付费次月出账后可申请开票。 开票时提示超出单张限额? 普票单张不能超过十万,自行开票不超过十万即可,专票是可以超过十万的。 企业实名认证的账号是否可以开具其它企业抬头的普通发票? 不可以。实名认证为企业的客户,创建企业抬头的发票模板时, 发票抬头必须和实名认证名称保持一致,否则只能通过重新实名认证进行修改。 可开具的发票条目有哪些? 云主机服务费、数据服务费、云业务服务费、服务费、技术服务费、云备份服务费、CDN服务费、IDC服务费、云加速服务费、云存储服务费、信息服务费、广告发布费、广告费、云资源技术服务费、天翼云资源技术服务、查询费、云资源服务费、域名服务费。 现金充值后,能否开具发票? 不能,发票开具额度只与已完成的订单金额有关。 开具发票注意事项有哪些? 增值税发票仅面向中国大陆客户,港澳台及海外企业客户无法开具此类发票。 实名认证为个人或企业的客户,均可以创建增值税普通发票模板,实名认证为企业的客户还可创建增值税专用发票模板。 实名认证为企业的客户,创建企业抬头的发票模板时,发票抬头必须和实名认证名称保持一致,否则只能通过重新实名认证进行修改。创建个人抬头的发票模板时,发票抬头可以手动设置,支持修改。 实名认证为个人的客户,创建发票模板时,发票抬头可以手动设置,支持修改。 代金券消费不纳入可开票金额。 月产生的按需产品账单在下个月3日后才可以索取发票。 账号每个月可进行5次发票申请操作(含退票),超过则无法操作。 企业账号类型是政府、军队、事业单位、社团团体、其他,发票不允许开增值税专用发票。
        来自:
        帮助文档
        费用中心
        常见问题
        发票管理
        申请发票
      • 认证鉴权
        信息的获取 云网平台获取 登录云网门户,在“控制台”>“个人中心”>“ 第三方账号绑定 ”,通过创建或者查看获取ak,sk。 基本签名流程 ctyuneopak/ctyuneopsk基本签名流程 1、待签字符串:使用规范请求和其他信息创建待签字符串; 2、计算密钥:使用HEADER、ctyuneopsk、ctyuneopak来创建Hmac算法的密钥; 3、计算签名:使用第三步的密钥和待签字符串在通过hmacsha256来计算签名。 4、签名应用:将生成的签名信息作为请求消息头添加到HTTP请求中。 创建待签名字符串 待签名字符串的构造规则如下: 待签名字符串 需要进行签名的Header排序后的组合列表+ "n" + 排序的query + "n" + toHex(sha256(原封的body)) 需要进行签名的Header排序后的组合列表(排序的header) header 以 headername:headervalue来一个一个通过n拼接起来,EOP是强制要求ctyuneoprequestid和eopdate这个头作为Header中的一部分,并且必须是待签名Header里的一个。需要进行签名算法的Header需要进行排序(将它们的headername以26个英文字母的顺序来排序),将排序后得到的列表进行遍历组装成待签名的header。 排序的query query以&作为拼接,key和值以连接,排序规则使用26个英文字母的顺序来排序,Query参数全部都需要进行签名。 toHex(sha256(原封的body)) 传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制。 排序的header例子: 假设你需要将ctyuneoprequestid、eopdate、host都要签名,则待签名的header构造出来是: ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n ctyuneoprequestid、eopdate和host的排序就是这个顺序,如果你加入一个ccad的header;同时这个header也要是进行签名,则待签名的header组合: ccda:123n ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n 构造动态密钥 发起请求时,需要构造一个eopdate的时间,这个时间的格式是yyyymmddTHHMMSSZ;言简意赅一些,就是年月日T时分秒Z 1、先是拿你申请来的ctyuneopsk作为密钥,eopdate作为数据,算出ktime 2、拿ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; 3、拿kAk作为密钥,eopdate的年月日值作为数据;算出kdate eopdate yyyymmddTHHMMSSZ(20211221T163614Z)(年月日T时分秒Z) :: Ktime 使用ctyuneopsk作为密钥,eopdate作为数据,算出ktime; Ktime hmacSha256(ctyuneopsk, eopdate) kAk 使用ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; kAk hmacsha256(ktime,ctyuneopak) kdate 使用kAk作为密钥,eopdate的年月日值作为数据;算出kdate; kdate hmacsha256(kAk, eopdate)
        来自:
        帮助文档
        VPC终端节点
        API参考
        如何调用API
        认证鉴权
      • 删除消息
        介绍分布式消息服务Kafka删除消息功能操作内容。 场景描述 在以下场景中,可以考虑删除Kafka中的消息: 错误消息:当Kafka中的消息存在错误或异常时,需要将这些消息删除。这可能是由于消息格式错误、消息内容不完整或者其他数据质量问题导致的。删除错误消息可以保持数据的一致性和准确性。 保留策略变更:Kafka中可以设置消息的保留时间或者大小,即消息在主题中的保留期限。当需要更改消息的保留策略时,可能需要删除旧的消息以应用新的策略。例如,如果要缩短消息的保留时间,则需要删除超过新保留期限的旧消息。 清理测试数据:在测试环境中,经常需要清理旧的测试数据,以确保环境的可用空间和性能。当测试数据不再需要时,可以删除相应的消息来释放资源。 故障恢复:当Kafka发生故障或者数据丢失时,可能需要删除一些消息以进行数据恢复。在这种情况下,需要根据故障的范围和影响选择删除相应的消息,以恢复数据的完整性。 需要注意的是,在删除消息之前,需要确保删除的消息不再需要或者已经备份。删除消息是不可逆的操作,一旦删除就无法恢复。因此,在执行删除操作之前,建议先进行备份或者确认消息不再需要。 操作步骤 (1)登录管理控制台。 (2)进入Kafka管理控制台。 (3)在实例列表页在操作列,目标实例行点击“管理”。 (4)点击“Topic管理”后进入主题管理页面。 (5)在Topic所在行,点击其右侧“更多”,在下拉框中单击“消息删除”,并选择确认。
        来自:
        帮助文档
        分布式消息服务Kafka
        用户指南
        Topic管理
        删除消息
      • Java调用示例
        1. com.ffcs.ebp.ebpsdk.common.Response plaintext package com.ffcs.ebp.ebpsdk.common; import java.util.Map; public class Response { private int statusCode; private String body; private Map headers; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode statusCode; } public String getBody() { return body; } public void setBody(String body) { this.body body; } public Map getHeaders() { return headers; } public void setHeaders(Map headers) { this.headers headers; } } 2. com.ffcs.ebp.ebpsdk.YunSign plaintext package com.ffcs.ebp.ebpsdk; import com.ffcs.ebp.ebpsdk.common.Response; import org.apache.commons.lang.StringUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.; import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.; public class YunSign { private String url; private String body; private String ak; private String sk; private String uuId; private int temp; private String contentType; private String queryStr; private Map headerMap; private String afterQuery; public YunSign(String url, String ak, String sk, String uuId, String body, int temp, String contentType, String queryStr, Map headerMap) { this.url url; if(body.equals("{}")){ body ""; } this.body body; this.ak ak; this.sk sk; this.uuId uuId; this.temp temp; this.contentType contentType; this.queryStr queryStr; this.headerMap headerMap; } public Response toDo(String method, int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response response null; method method.toUpperCase(); switch (method) { case "POST": response doPost(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "GET": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByGetReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doGet(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "DELETE": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByDeleteReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doDelete(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "PUT": response doPut(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "PATCH": response doPatch(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "HEAD": response doHead(connectTimeout, connectionRequestTimeout, socketTimeout); break; } return response; } private String getSign(Date eopDate) { String calculateContentHash getSHA256(body); //报文原封不动进行sha256摘要 // System.out.println("calculateContentHash:" + calculateContentHash); SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); SimpleDateFormat DATEFORMATTER new SimpleDateFormat("yyyyMMdd"); String singerDate TIMEFORMATTER.format(eopDate); String singerDd DATEFORMATTER.format(eopDate); //header的key按照26字母进行排序, 以&作为连接符连起来 try { String CampmocalHeader String.format("ctyuneoprequestid:%sneopdate:%sn", this.uuId, singerDate); String sigture CampmocalHeader + "n" + this.afterQuery + "n" + calculateContentHash; // System.out.println("sigture:" + sigture); byte[] ktime HmacSHA256(singerDate.getBytes(), sk.getBytes()); // System.out.println("ktime:" + HexUtils.bytes2Hex(ktime)); byte[] kAk HmacSHA256(ak.getBytes(), ktime); // System.out.println("kAk:" + HexUtils.bytes2Hex(kAk)); byte[] kdate HmacSHA256(singerDd.getBytes(), kAk); // System.out.println("kdate:" + HexUtils.bytes2Hex(kdate)); String Signature Base64.getEncoder().encodeToString(HmacSHA256(sigture.getBytes("UTF8"), kdate)); // System.out.println("Signature:" + Signature); String signHeader String.format("%s Headersctyuneoprequestid;eopdate Signature%s", ak, Signature); // System.out.println("signHeader:" + signHeader); return signHeader; } catch (Exception e) { e.printStackTrace(); } return null; } / 在调用SSL之前需要重写验证方法,取消检测SSL 创建ConnectionManager,添加Connection配置信息 @return HttpClient 支持https / private static CloseableHttpClient sslClient() { try { // 在调用SSL之前需要重写验证方法,取消检测SSL X509TrustManager trustManager new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] xcs, String str) { } @Override public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; SSLContext ctx SSLContext.getInstance(SSLConnectionSocketFactory.TLS); ctx.init(null, new TrustManager[]{trustManager}, null); SSLConnectionSocketFactory socketFactory new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); // 创建Registry RequestConfig requestConfig RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARDSTRICT) .setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)) .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build(); Registry socketFactoryRegistry RegistryBuilder. create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", socketFactory).build(); // 创建ConnectionManager,添加Connection配置信息 PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager(socketFactoryRegistry); CloseableHttpClient closeableHttpClient HttpClients.custom().setConnectionManager(connectionManager) .setDefaultRequestConfig(requestConfig).build(); return closeableHttpClient; } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } public Response doGet(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); //创建HttpGet远程连接实例 HttpGet httpGet; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGet new HttpGet(this.url + "?" + this.afterQuery); } else { httpGet new HttpGet(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGet.setHeader("ContentType", this.contentType); httpGet.setHeader("ctyuneoprequestid", this.uuId); httpGet.setHeader("EopAuthorization", getSign(eopDate)); httpGet.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGet.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGet.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpGet.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpGet); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByGetReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response result new Response(); CloseableHttpClient client null; CloseableHttpResponse response null; try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL client sslClient(); } else { client HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpGetWithEntity远程连接实例 HttpGetWithEntity httpGetWithEntity; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGetWithEntity new HttpGetWithEntity(this.url + "?" + this.afterQuery); } else { httpGetWithEntity new HttpGetWithEntity(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为HttpGetWithEntity实例设置配置 httpGetWithEntity.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGetWithEntity.setHeader("ContentType", this.contentType); httpGetWithEntity.setHeader("ctyuneoprequestid", this.uuId); httpGetWithEntity.setHeader("EopAuthorization", getSign(eopDate)); httpGetWithEntity.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGetWithEntity.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGetWithEntity.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); httpGetWithEntity.setEntity(httpEntity); //执行请求操作,并拿到结果(同步阻塞) response client.execute(httpGetWithEntity); //获取结果实体 HttpEntity entity response.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! client) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPost(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpPost远程连接实例 HttpPost httpPost; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPost new HttpPost(this.url + "?" + this.afterQuery); } else { httpPost new HttpPost(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPost.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPost.setHeader("ContentType", this.contentType); httpPost.setHeader("ctyuneoprequestid", this.uuId); httpPost.setHeader("EopAuthorization", getSign(eopDate)); httpPost.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPost.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPost.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPost.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPost); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPut(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPut远程连接实例 HttpPut httpPut; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPut new HttpPut(this.url + "?" + this.afterQuery); } else { httpPut new HttpPut(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPut.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(20321900,01,05); httpPut.setHeader("ContentType", this.contentType); httpPut.setHeader("ctyuneoprequestid", this.uuId); httpPut.setHeader("EopAuthorization", getSign(eopDate)); httpPut.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPut.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPut.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPut.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPut); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPatch(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPatch远程连接实例 HttpPatch httpPatch; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPatch new HttpPatch(this.url + "?" + this.afterQuery); } else { httpPatch new HttpPatch(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPatch.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPatch.setHeader("ContentType", this.contentType); httpPatch.setHeader("ctyuneoprequestid", this.uuId); httpPatch.setHeader("EopAuthorization", getSign(eopDate)); httpPatch.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPatch.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPatch.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPatch.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPatch); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doDelete(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDelete httpDelete; if (StringUtils.isNotEmpty(this.afterQuery)) { httpDelete new HttpDelete(this.url + "?" + this.afterQuery); } else { httpDelete new HttpDelete(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpDelete.setHeader("ContentType", this.contentType); httpDelete.setHeader("ctyuneoprequestid", this.uuId); httpDelete.setHeader("EopAuthorization", getSign(eopDate)); httpDelete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpDelete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpDelete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpDelete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpDelete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByDeleteReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDeleteWithBody delete; if (StringUtils.isNotEmpty(this.afterQuery)) { delete new HttpDeleteWithBody(this.url + "?" + this.afterQuery); } else { delete new HttpDeleteWithBody(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); delete.setHeader("ContentType", this.contentType); delete.setHeader("ctyuneoprequestid", this.uuId); delete.setHeader("EopAuthorization", getSign(eopDate)); delete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { delete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : delete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); delete.setEntity(httpEntity); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 delete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(delete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doHead(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpHead远程连接实例 HttpHead httpHead; if (StringUtils.isNotEmpty(this.afterQuery)) { httpHead new HttpHead(this.url + "?" + this.afterQuery); } else { httpHead new HttpHead(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpHead.setHeader("ContentType", this.contentType); httpHead.setHeader("ctyuneoprequestid", this.uuId); httpHead.setHeader("EopAuthorization", getSign(eopDate)); httpHead.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpHead.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpHead.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpHead实例设置配置 httpHead.setConfig(requestConfig); // 执行head请求得到返回对象 response httpClient.execute(httpHead); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } private String toHex(byte[] data) { StringBuilder sb new StringBuilder(data.length 2); byte[] var2 data; int var3 data.length; for (int var4 0; var4 2) { String encodeStr null; encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + str; } } else { String[] s str.split(""); if (s.length > 2) { String encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } } } } } catch (Exception e) { e.printStackTrace(); } return afterQuery; } } 3. HexUtils.java plaintext package com.ffcs.ebp.ebpsdk; public class HexUtils { private static final char[] HEXES { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; / byte数组 转换成 16进制小写字符串 / public static String bytes2Hex(byte[] bytes) { if (bytes null bytes.length 0) { return null; } StringBuilder hex new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } / 16进制字符串 转换为对应的 byte数组 / public static byte[] hex2Bytes(String hex) { if (hex null hex.length() 0) { return null; } char[] hexChars hex.toCharArray(); byte[] bytes new byte[hexChars.length / 2]; // 如果 hex 中的字符不是偶数个, 则忽略最后一个 for (int i 0; i headerMap new HashMap<>(); // headerMap.put("queryMetricDataInfo", "{"regionId":"cnsz1","dim":"instanceid,98cdcc8a8e544788ab9cc94ccee429c7","filter":"average","from":"1658473040","to":"1658473040","metricName":"netbitRecv","namespace":"AGT.ECS","period":"1"},"platform":"3"}"); // headerMap.put("platform", "3"); // headerMap.put("consoleUrl", " // headerMap.put("UserAgent", "3333433"); // headerMap.put("XForwardedFor", "1231313"); // headerMap.put("regionId", "100054c0416811e9a6690242ac110002"); // headerMap.put("prodInstId","9dcaf0157c604100af79bdb8271527bc"); //请求地址 String url " //query参数(?后面拼接的参数。没有就不填) aaaa&bbbb String queryStr "regionID41f64827xxxxxxxxxffa3a5deb5d15d"; //body参数(没有就不填) String body ""; //APPID String ak "9f82cacd3f8235c66edfs5e899f098e6"; //appkey String sk "MlgzESz430hJgTzA4lkjuJvDMMLTqwBQRicVqV62VM"; String uuId UUID.randomUUID().toString(); //连接超时 int connectTimeout 35000; //连接请求超时 int connectionRequestTimeout 35000; //socket超时 int socketTimeout 60000; YunSign yunSign new YunSign(url, ak, sk, uuId, body, temp, contentType, queryStr, headerMap); Response response yunSign.toDo(method, connectTimeout, connectionRequestTimeout, socketTimeout); System.out.println("应答头部 "); for (Map.Entry entry : response.getHeaders().entrySet()) { System.out.println(entry.getKey().toString() + ":" + entry.getValue().toString()); } System.out.println(); System.out.println("请求结果 "); System.out.println(response.getBody()); } }
        来自:
        帮助文档
        对象存储 ZOS
        API参考
        API(OpenAPI)
        如何调用API
        Java调用示例
      • 异常处理(1)
        类型 示例 处理建议 鉴权异常 AccessKey 错误、Secret 错误 检查密钥配置和权限 资源异常 云电脑不在线、桌面不属于当前用户 检查资源状态和绑定关系 会话异常 session 不存在、会话过期 重新创建会话 参数异常 坐标缺失、路径为空、消息过长 校验请求参数 执行异常 点击无响应、截图失败、文件读取失败 结合截图和日志排查
        来自:
      • 1
      • ...
      • 83
      • 84
      • 85
      • 86
      • 87
      • ...
      • 676
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      云聚517 · 好价翼起拼

      爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      聚力AI赋能 天翼云大模型专项

      大模型特惠专区·Token Plan 轻享包低至9.9元起

      青云志云端助力计划

      一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云

      企业出海解决方案

      助力您的业务扬帆出海,通达全球!

      天翼云信创专区

      “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      产品推荐

      GPU云主机

      弹性伸缩服务 AS

      天翼云CTyunOS系统

      公共算力服务

      科研助手

      一站式智算服务平台

      智算一体机

      人脸检测

      人脸活体检测

      推荐文档

      mstsc 远程登录报错-要求的函数不受支持

      权限管理

      代金券查询与使用

      产品定义

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 息壤智算平台
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号