云主机开年特惠28.8元/年,0元秒杀等你来抢!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 天翼云新春焕新季 NEW 云主机开年特惠28.8元/年,0元秒杀等你来抢!
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
  • MCP市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
模型推理服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V3.1
  • DeepSeek-R1-0528
  • DeepSeek-V3-0324
  • Qwen3-235B-A22B
  • Qwen3-32B
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

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

定价

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

合作伙伴

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

开发者

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

支持与服务

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

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      内容审核_相关内容
      • 统一身份认证与权限管理
        本文介绍VPC终端节点统一身份认证与权限管理相关配置 1.统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 1.1 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 1.2 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等,更多信息,请参见“2.1.2 创建自定义策略“。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。VPC终端节点相关的系统策略包含如下: vpcep admin:VPC终端节点服务的管理者权限,包含VPC终端节点所有控制权限(不含订单类权限); vpcep viewer: VPC终端节点服务的观察者权限,包含VPC终端节点服务的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见“2.1.2 创建自定义策略“。
        来自:
        帮助文档
        VPC终端节点
        用户指南
        统一身份认证与权限管理
      • 统一身份认证介绍
        本文将为您介绍VPN连接统一身份认证与权限管理。 基本介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限,具体介绍说明详见:产品定义。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素左作用(Effect)、权限集(Action)等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 1、系统策略 :预置的系统策略,您只能使用不能修改。VPN连接相关的系统策略包含如下: vpn admin:VPN连接服务的管理者权限,包含VPN连接产品的所有控制权限; vpn viewer:VPN连接服务的观察者权限,包含VPN连接产品的列表页与详情页面权限; 2、自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,具体配置说明详见:创建自定义策略。
        来自:
        帮助文档
        VPN连接
        用户指南
        统一身份认证与权限管理
        统一身份认证介绍
      • 安全责任共担模型
        本节介绍了云容器引擎安全责任共担模型。 在云容器引擎 CCE 中,安全合规遵循责任共担原则。具体而言,云容器引擎 CCE 承担着集群控制面组件(涵盖 Kubernetes 控制平面组件与 etcd)及集群服务相关天翼云基础设施的默认安全保障责任。本文将详细阐述天翼云云容器引擎 CCE 的安全责任共担模型。 天翼云负责 在管控面侧,天翼云凭借完善的平台安全能力,负责保障管控面侧基础设施(涵盖计算、存储、网络等各类云服务资源)的安全。针对集群节点操作系统或 K8s 组件层面出现的安全漏洞,天翼云会及时发布相关公告,并提供对应的漏洞补丁或版本更新支持。天翼云还会围绕企业云原生应用生命周期中安全防护的典型场景,提供必要的安全防护功能及最佳实践指导。 客户负责 客户方安全管理与运维人员需承担部署于云上的业务应用安全防护责任,以及云上资源的安全配置与更新工作,具体包括以下内容: 依据天翼云发布的公告,采用其提供的补丁或版本升级方式,及时对操作系统、集群侧系统组件、运行时等存在的漏洞进行修复和版本更新 遵循安全原则对 CCE 集群、节点池及网络等进行参数配置,防止因参数或权限设置不当而给攻击者留下可乘之机 根据实际使用需求,按照权限最小化原则,完成账号、角色的授权,做好凭据管理,部署实施相关安全策略,并保障应用自身参数配置的安全性 负责应用制品的供应链安全 保障应用敏感数据及应用运行时的安全 CCE采用双层的权限体系,即IAM+RBAC。当删除 IAM 用户或 IAM 角色时,并不会同步移除该用户或角色所拥有的集群 KubeConfig 中的 RBAC 权限。因此,在删除离职员工或非受信人员的 IAM 用户或 IAM 角色前,需先吊销其 KubeConfig 权限。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        安全合规
        安全责任共担模型
      • 弹性伸缩
        方式二:为已有应用开启HPA 登录容器云服务引擎CCSE管理控制台。 在控制台左侧导航栏中,单击集群。 在集群列表页面中,单击目标集群名称。 在集群管理页左侧导航栏中,选择工作负载 > 无状态。 在应用列表页面中,选择目标应用,点击更多按钮。 设置伸缩的条件和配置。 Resource规则,支持CPU和内存,支持百分比和平均值等计值方式。 Pod规则,支持Pod指标对象,支持平均值的计值方式,支持指定指标。 Object规则,支持Service指标对象,支持阈值的计值方式,支持指定指标。 单击确认,Deployment的HPA设置完毕。 通过kubectl命令创建HPA应用 您也可通过YAML来手动创建HPA,并将其绑定到要伸缩的Deployment对象上,通过kubectl命令实现容器自动伸缩配置。 下面针对一个Nginx应用进行举例。创建并复制以下内容到nginx.yml中。Deployment的编排模板如下。 apiVersion: apps/v1 kind: Deployment metadata: name:nginx labels: app:nginx spec: replicas:2 selector: matchLabels: app:nginx template: metadata: labels: app:nginx spec: containers: name: nginx image:nginx:1.7.9 replace it with your exactlyimagesname:tags ports: containerPort:80 resources: requests: 必须设置,不然HPA无法运行。 cpu:500m 执行以下命令,创建Nginx应用。 kubectlcreatef nginx.yml 创建HPA。 apiVersion:autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name:nginxhpa spec: scaleTargetRef: apiVersion:apps/v1 kind:Deployment name:nginx minReplicas:1 maxReplicas:10 metrics: type:Resource resource: name:cpu target: type:Utilization averageUtilization:50 执行以下命令,创建Nginx HPA。 kubectlcreatef nginxpha.yml 创建好HPA后,再次执行kubectl describe hpa 命令。可以看到以下信息,则表示HPA已经正常运行。 Normal SuccessfulRescale 30s horizontalpodautoscaler New size: 1; reason: All metrics below target 此时当Nginx的Pod的利用率超过本例中设置的50%利用率时,则会进行水平扩容,低于50%的时候会进行缩容。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        弹性伸缩
      • 使用SNAT访问公网
        操作步骤 1. 登录天翼云控制台,选择“网络>NAT网关”, 2. 进入NAT网关控制台,点击右上角“创建NAT网关” 3. 选择付费方式,填写名称,选择可用区,VPC选择环境准备中的创建的VPC,选择规格,点击“下一步”。 4. 确认规格,选择我已阅读并同意相关协议,单击“确认下单”,完成NAT网关的创建。 步骤三:配置路由(仅部分资源池需要) 步骤说明 部分资源池在购买NAT网关后,自动加载路由到VPC中,不需要此步操作。 部分资源池需要在默认路由中添加路由指向NAT网关,具体功能以控制台为准。 操作步骤 1. 添加默认路由指向NAT网关。单击“虚拟私有云”,进入虚拟私有云控制台,选择环境中创建的VPC,点击名称打开VPC详情页,在子网页签点击子网名称,进入子网详情页。 2. 在子网详情页单击“路由管理”页签,点击已绑定的“默认路由表”进入路由规则页面。 3. 在路由规则页面单击“创建”,在弹出页面,选择 IP类型:IPv4 目的地址:0.0.0.0/0 下一跳类型:NAT网关 NAT网关:选择刚创建的NAT网关 4. 点击确定,完成默认路由指向NAT网关。 注意 在同一个子网内云主机同时绑定公网IP和SNAT规则时,部分资源池平台生成的指向IPv4网关的路由为系统路由,由于指向NAT网关的路由优先级高于指向IPv4网关的系统路由,默认会通过SNAT访问公网,云主机绑定的EIP无法访问公网;而部分资源池平台生成的指向IPv4网关的路由为自定义路由,默认会通过EIP访问公网。因此,不建议同一个子网内的云主机同时绑定公网IP和NAT网关。 具体内容参见弹性IP如何通过弹性公网IP或NAT网关访问公网。 步骤四 :配置SNAT规则
        来自:
        帮助文档
        NAT网关
        快速入门
        公网NAT网关
        使用SNAT访问公网
      • 统一身份认证与权限管理
        本文介绍内网DNS统一身份认证与权限管理 1.统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 1.1 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 1.2 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等,更多信息,请参见“2.1 通过IAM用户控制资源访问“。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。内网DNS相关的系统策略包含如下: idns admin:内网DNS服务的管理者权限,包含内网DNS所有控制权限(不含订单类权限); idns viewer: 内网DNS服务的观察者权限,包含内网DNS服务的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见“2.1 通过IAM用户控制资源访问“。
        来自:
        帮助文档
        内网DNS
        用户指南
        统一身份认证与权限管理
      • 节点扩容
        本页介绍天翼云TeleDB数据库节点扩容。 操作场景 随着业务的增长,数据库在运行性能及存储上逐渐会达到瓶颈。此时,需要通过增加节点来提升集群的性能及存储能力。该任务用于指导对协调节点(CN)和数据节点(DN)进行扩容。协调节点和数据节点都是按组添加。每组数量与创建实例时选择的实例系列相关联。机器规格和原实例规格保持一致。用户可自定义新增节点所在服务器。 注意事项 主备节点所在服务器不能为同一台服务器。 增加节点前请检查所有表都已设置主键或设置表级别参数REPLICA IDENTITY为FULL,否则数据无法完成迁移导致新增节点失败。 扩容数据节点后请手动使用数据重平衡功能。 操作步骤 1. 以用户名和密码登录TeleDBDCP数据库管理平台。 2. 在左侧导航树中,选择实例管理 > 实例列表 ,右侧页面可查看实例列表。 3. 在实例列表页面,单击目标实例所在行的更多 > 扩容 ,出现节点扩容对话框。 4. 进入节点扩容 对话框,根据以下内容填写基本信息,单击确定完成扩容。 扩容节点类型:可根据实际情况填写协调节点或数据节点。 节点名称:默认不可更改。 VIP:可选参数,可根据实际需求选择vip。 说明 只有协调节点才支持配置该参数。 安装端口:必选参数,可根据实际需求填写,确保端口未被占用。 内部端口:必选参数,可根据实际需求填写,确保端口未被占用。 节点组信息:如果期望新加的节点归属于已存在的节点组,则该参数必填。 说明 只有扩容数据节点才支持配置该参数。 主节点节点信息:可选参数,可根据实际需求选择主节点ip。 备节点节点信息:可选参数,可根据实际需求选择备节点ip。 5. 弹出提示 对话框。可单击立即前往 ,在任务管理页面查看执行详情。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品
        管理平台使用手册
        控制台操作指南
        维护管理实例
        节点扩容
      • 集群管理
        本章节主要介绍操作类问题中的集群管理问题。 无法成功创建数据仓库集群时怎么处理? 请检查用户账户余额是否少于100元,是否已经没有配额创建新的数据仓库集群,以及是否存在网络问题。 如账户余额、配额、网络均未发现问题,请联系客户经理,请客户经理联系后台服务人员为您排查原因并解决问题。 如何清理与回收存储空间? DWS 数据仓库中保存的数据在删除后,可能没有释放占用的磁盘空间形成脏数据,导致磁盘浪费、创建及恢复快照性能下降等问题,如何清理? 清理与回收存储空间对系统的影响如下: 删除无用的脏数据,释放存储空间。 数据库将进行大量读写操作,可能影响正常使用,建议选择空闲时间执行。 数据库的存储空间越大,即数据可能越多,清理的时间越长。 清理与回收存储空间操作步骤如下: 1.连接数据库。具体操作步骤请参见《数据仓库服务用户指南》中“连接集群”章节。 2.执行以下命令,清理与回收存储空间。 VACUUM FULL; 默认清理当前用户在数据库中,拥有权限的每一个表。没有权限的表则直接跳过回收操作。 当系统显示以下内容时,表示清理完成: VACUUM VACUUM FULL回收所有过期的行空间,但是它需要对每个正在处理的表进行独占锁定,并且可能需要很长时间才能完成大型分布式数据库表。一般建议对指定表执行VACUUM FULL,若需要对整个数据库执行VACUUM FULL,建议在数据库维护期间操作。 使用FULL参数会导致统计信息丢失,如果需要收集统计信息,请在语句命令中加上analyze关键字。例如,执行 VACUUM FULL ANALYZE; 命令。VACUUM的语法请参见《数据仓库服务数据库开发指南》中的相关章节。
        来自:
        帮助文档
        数据仓库服务
        常见问题
        操作类
        集群管理
      • 搭建LNMP环境
        安装PHP 1. 下载PHP相关软件包,于主机命令行依次执行以下命令。 rpm Uvh pm Uvh 2. 安装软件,执行以下命令。 yum y install php70wtidy php70wcommon php70wdevel php70wpdo php70wmysql php70wgd php70wldap php70wmbstring php70wmcrypt php70wfpm 3. 设置PHP开机自行启动,依次执行以下命令。 systemctl start mysqld systemctl enable mysqld 用户可通过以下命令查看PHP的安装版本。 php v 修改配置及访问测试 修改ngixn配置文件,添加PHP服务信息。 1. 输入以下命令打开nginx配置文件。 vim /etc/nginx/nginx.conf 从nginx.conf可以看出,配置文件定向至/etc/nginx/conf.d/.conf。 2. 按“ESC”后输入“:q”保持并退出文件。 3. 输入以下命令打开配置文件“default.conf”。 vim /etc/nginx/conf.d/default.conf 4. 按i键编辑文档,在server段内,添加下列配置信息。 server { listen 80; servername localhost; accesslog /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } location ~ .php$ { root html; fastcgipass 127.0.0.1:9000; fastcgiindex index.php; fastcgiparam SCRIPTFILENAME /usr/share/nginx/html$fastcgiscriptname; include fastcgiparams; } } 5. 按“Esc”退出编辑模式,输入“:wq”保存文件后退出。 6. 执行以下命令重新载入配置文件。 service nginx reload 7. 执行以下命令创建访问测试文件。 vim /usr/share/nginx/html/php/info.php 8. 按i键编辑文本,输入以下内容。 9. 按“Esc”退出编辑模式,输入“:wq”保存文件后退出。 10. 本地电脑打开浏览器输入访问地址:
        来自:
        帮助文档
        轻量型云主机
        最佳实践
        搭建LNMP环境
      • 在天翼云使用vLLM运行DeepSeek的最佳实践-32B等版本
        步骤二:云主机开通 创建弹性云主机弹性云主机快速入门 天翼云 创建配备GPU驱动的GPU云主机(Linux)GPU云主机用户指南创建GPU云主机 天翼云 步骤三:手动部署DeepSeek 建议使用天翼云提供的DeepSeek镜像,减少安装过程中可能遇到的问题。如您必须通过vLLM部署模型,请参考如下步骤: 1. 安装依赖包 plaintext 安装pip curl o getpip.py python getpip.py 修改pip镜像源,以清华源为例 pip config set global.indexurl 安装依赖包 pip install modelscope1.22.3 pip install openai1.61.0 pip install tqdm4.67.1 pip install transformers4.48.2 pip install vllm0.7.1 pip install jinja23.1.0 2. 下载模型 为了方便,我们以较小的DeepSeekR1DistillQwen1.5B为例(3.5G左右),将以下内容保存为 modeldownload.py 文件,参数 cachedir 为模型的下载路径,您可以按需修改,需确保存储空间足够存放模型。 plaintext from modelscope import snapshotdownload modeldir snapshotdownload('deepseekai/DeepSeekR1DistillQwen1.5B', cachedir'/root/modelpath', revision'master') 运行该文件,启动模型下载。 plaintext python modeldownload.py 3. 运行模型 完成下载后,即可使用 vLLM 运行模型。 plaintext vllm serve /root/modelpath/deepseekai/DeepSeekR1DistillQwen1.5B servedmodelname DeepSeekR1DistillQwen1.5B maxmodellen2048 apikey mytoken port8000 注意 其中 apikey 参数用于模型 api 调用时认证动作,可按需修改值。 4. 使用WebUI访问模型 基于我们已经安装、配置好的 OpenWebUI页面,可以直接访问模型。 管理员设置中,配置OpenAI API访问地址,密钥就是上文中的 apikey。 ![1739275580172[1].png]( 选择对应的模型,直接进行问答体验。 ![1739275700080[1].png](
        来自:
        帮助文档
        弹性云主机 ECS
        最佳实践
        AIGC实践
        在天翼云使用vLLM运行DeepSeek的最佳实践-32B等版本
      • 权限管理概述
        本节为您介绍权限管理的概念。 在协同使用资源的场景下,如果您需要根据实际的职责权限情况配置用户使用权限,可使用 统一身份认证(Identity and Access Management,简称IAM)服务,创建多个IAM用户并为其授予不同的权限,实现不同IAM子用户可以分权管理不同的资源,从而提高管理效率,降低信息泄露风险。通过IAM可实现精细化权限管理、安全访问、批量管理用户权限、委托其他帐号管理资源等功能。您可以创建并为IAM用户或用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 IAM是天翼云提供的免费基础服务,您只需为购买资源进行付费。关于IAM的详细介绍,请参见IAM产品介绍。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略:预置的系统策略,您只能使用不能修改。镜像服务相关的系统策略包含如下: Admin:镜像服务的管理者权限,包含镜像服务所有控制权限(不含订单类权限)。 Viewer:镜像服务的观察者权限,包含镜像服务的列表页与详情页面权限。 自定义策略:您按需自行创建和维护的权限策略。
        来自:
        帮助文档
        镜像服务 IMS
        用户指南
        权限管理
        权限管理概述
      • 容器水平伸缩(HPA)
        自定义度量指标 Pod度量是从某一方面的指标描述Pod, 取多个pod的平均值, 它与资源度量指标非常相像,但仅支持平均值类型,示意如下: plaintext type: Pods pods: metric: name: packetspersecond target: type: AverageValue averageValue: 1k Object度量用于描述在相同命名空间除Pod以外的其他Kubernetes对象,如Service,配置示意如下: plaintext type: Object object: metric: name: requestspersecond describedObject: apiVersion: v1 kind: Service name: mainroute target: type: Value value: 2k 通过控制台创建HPA 创建负载同时创建HPA 1. 登录云容器引擎管理控制台。 2. 在控制台左侧导航栏,单击集群。 3. 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。 4. 在集群管理页左侧导航栏,选择工作负载 > 无状态。 5. 在无状态页面选择指标伸缩。 6. 填写伸缩规则跟伸缩范围等信息,然后单击下一步。 为已有应用开启HPA 1. 登录云容器引擎管理控制台。 2. 在控制台左侧导航栏,单击集群。 3. 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。 4. 在集群管理页左侧导航栏,选择工作负载 > 无状态。 5. 在无状态列表页面选择对应应用的操作栏中的更多—>水平伸缩。 6. 在创建对话框中,设置伸缩的配置。 7. 单击确定。 通过kubectl命令创建HPA 您也可通过编排模板来手动创建HPA,并将其绑定到要伸缩的Deployment对象上,通过kubectl命令实现容器自动伸缩配置。 下面针对一个Nginx应用进行举例。 1、创建并复制以下内容到nginx.yml中。Deployment的编排模板如下。 plaintext apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: name: nginx image: nginx:1.7.9 replace it with your exactly ports: containerPort: 80 resources: requests:
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        弹性伸缩
        工作负载弹性伸缩
        容器水平伸缩(HPA)
      • 统一身份认证(IAM)
        本文介绍 IAM功能的基本用途、应用场景,以及本产品的权限定义。 功能介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他账号管理资源等。 使用前您需了解常用的基本概念,包括:帐号、IAM用户、用户组、身份凭证、授权、权限、项目、委托、身份凭证等,详细请查看:术语解释。 IAM应用场景 IAM策略主要面向对同租户帐号下,对不同IAM用户授权的场景: 您可以为不同操作人员或应用程序创建不同IAM用户,并授予IAM用户刚好能完成工作所需的权限,比如文件系统的查看权限,进行最小粒度授权管理。 新创建的IAM用户可以使用自己的用户名和密码登录云服务平台,实现多用户协同操作时无需分享帐号的密码的安全要求。 使用流程 请查看:入门说明。 权限策略 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素"Action""Effect"等信息。通过给子用户赋予预置的系统权限策略或者自定义的权限策略进行子用户权限管理。 系统策略 :预置的系统策略,您只能使用不能修改,具体说明请查看系统策略。海量文件服务预置的系统策略包含如下: 策略名称 策略描述 作用范围 海量文件服务OceanFS管理者权限(admin) 管理者权限,包含海量文件服务所有控制权限(不包含订单类权限)。 资源池 海量文件服务OceanFS观察者权限(viewer) 观察者权限,包含海量文件服务的列表页、详情页等查看权限,无操作管理权限。 资源池 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见创建自定义策略。
        来自:
        帮助文档
        海量文件服务 OceanFS
        用户指南
        访问控制
        统一身份认证(IAM)
      • 计费项
        本节主要介绍GeminiDB Influx接口的计费项。 计费说明 GeminiDB Influx的计费项由实例规格费用、存储空间费用、备份空间费用和公网流量费用组成。具体内容如表1所示。 说明 标 的计费项为必选计费项。 标 的计费项为必选计费项。 表1 GeminiDB Influx实例计费项 计费项 计费项说明 适用的计费模式 计费公式 实例规格 计费因子:vCPU和内存,不同规格的实例类型提供不同的计算和存储能力。 包年/包月、按需计费 实例规格单价 购买时长 实例规格单价请参见云数据库GeminiDB产品价格的“数据库计算实例价格”。 存储空间 计费因子:存储空间,按统一标准进行计费。 包年/包月、按需计费 存储空间单价 存储容量 购买时长 请参见云数据库GeminiDB产品价格的“数据库存储空间价格”。 备份空间 计费因子:备份空间,按统一标准进行计费。 按需计费 备份空间单价 备份收费容量 购买时长 请参见云数据库GeminiDB产品价格的“数据库备份空间价格”。 说明 计费时长:备份超过免费空间大小的使用时长。 冷存储空间 计费因子:冷存储空间,按统一标准进行计费。 包年/包月、按需计费 冷存储 空间单价 存储容量 购买时长 公网流量 如有互联网访问需求,您需要购买弹性公网IP。 计费因子:带宽费、流量费和IP保有费。 包年/包月计费模式支持按带宽计费方式,收取带宽费。 按需计费模式支持按带宽计费、按流量计费和加入共享带宽三种计费方式,分别收取带宽费+IP保有费、流量费+IP保有费、带宽费+IP保有费。 包年/包月、按需计费 带宽费支持使用带宽加油包抵扣,流量费支持使用共享流量包抵扣。 按固定带宽值采用阶梯计费 0Mbit/s~5Mbit/s(含):均为一个统一的单价 大于5Mbit/s:按每Mbit/s计费 公网带宽单价,请参见[](
        来自:
        帮助文档
        云数据库GeminiDB
        GeminiDB Influx接口
        计费说明
        计费项
      • 权限管理
        本文介绍了如何使用统一身份认证(Identity and Access Management,简称IAM)服务对访问专属云(存储独享型)资源进行精细的权限管理。 统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等,更多信息,请参见“步骤二:创建自定义策略”。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。专属云(存储独享型)DSS相关的系统策略包含如下: ctdss admin:专属云(存储独享型)服务的管理者权限,包含专属云(存储独享型)所有控制权限(不含订单类权限); ctdss viewer:专属云(存储独享型)服务的观察者权限,包含专属云(存储独享型)的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见“步骤二:创建自定义策略”。
        来自:
        帮助文档
        专属云(存储独享型)
        用户指南
        权限管理
      • 实例运行快照
        本页介绍天翼云TeleDB数据库实例运行快照。 操作步骤 1. 以用户名和密码登录分布式数据库TeleDB控制台,在左侧导航树单击实例监控 ,进入实例监控页面。 2. 在实例监控页面,在当前实例下拉框选择目标实例,选择实例运行快照 页签。 3. 快照设置 1. 单击快照设置 ,弹出实例运行快照策略设置 对话框。 2. 在实例运行快照策略设置 对话框中,打开运行快照开启状态,输入快照开启时间和快照间隔时间,单击确定 完成设置。 4. 手动快照 单击手动快照可立即执行快照。 5. 查询快照列表 可通过设置起始时间和结束时间,单击查询 筛选已产生的快照列表。 6. 查看快照详情 单击对应快照记录的详情,可查看该快照的详细信息。 具体内容包括: 数据库状态:节点名称、IP、端口、角色、日志同步状态、运行状态。 数据库核心配置:synchronouscommit、maxpoolsize、autovaccum、maxconnection、workmem、walkeepsegments、vacuumdelta、sharedbuffers的参数值。 数据库连接分析:包括CN和DN的连接情况,如avgconn、avgconnactive、avgconnidle、avgconnlock等。 DataNode节点请求量统计:统计DN节点的增删改查请求量。 数据库检查点:节点的检查点情况,如checkpointstimed、checkpointsreq等。 存储情况分节点统计:节点的存储情况,如totalsize、totaltups。 慢查询TOP 50:慢查询的TOP 50情况。 错误日志情况:包括错误信息、级别。 buffer命中率分析:包括平均、最大和最小情况。 锁分析:最多展示等待时间最长50条。 节点CPU/内存利用率概况:节点CPU/内存利用率情况。 死锁详情:最多展示最近的50条。 回滚详情:最多展示最近的50条。 二阶段残留事务详情:二阶段残留事务详细信息。 7. 快照对比 1. 单击对应快照记录的快照对比,弹出快照对比对话框。 2. 在快照对比对话框,选择要对比的快照,单击确定可查看快照对比信息。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V3.0.0版本产品文档
        管理平台使用手册
        实例监控
        实例运行快照
      • 实例运行快照
        本页介绍天翼云TeleDB数据库实例运行快照。 操作步骤 1. 切换至TeleDB控制台,在左侧导航树单击实例监控 ,选择实例运行快照 页签。 2. 快照设置 1. 单击快照设置 ,弹出实例运行快照策略设置 对话框。 2. 在实例运行快照策略设置 对话框中,打开运行快照开启状态,输入快照开启时间和快照间隔时间,单击确定 完成设置。 3. 手动快照 单击手动快照可立即执行快照。 4. 查询快照列表 可通过设置起始时间和结束时间,单击查询 筛选已产生的快照列表。 5. 查看快照详情 单击对应快照记录的详情,可查看该快照的详细信息。 具体内容包括: 数据库状态:节点名称、IP、端口、角色、日志同步状态、运行状态。 数据库核心配置:synchronouscommit、maxpoolsize、autovaccum、maxconnection、workmem、walkeepsegments、vacuumdelta、sharedbuffers的参数值。 数据库连接分析:包括CN和DN的连接情况,如avgconn、avgconnactive、avgconnidle、avgconnlock等。 DataNode节点请求量统计:统计DN节点的增删改查请求量。 数据库检查点:节点的检查点情况,如checkpointstimed、checkpointsreq等。 存储情况分节点统计:节点的存储情况,如totalsize、totaltups。 慢查询TOP 50:慢查询的TOP 50情况。 错误日志情况:包括错误信息、级别。 buffer命中率分析:包括平均、最大和最小情况。 锁分析(最多展示等待时间最长50条)。 节点CPU/内存利用率概况。 死锁详情(最多展示最近的50条)。 回滚详情(最多展示最近的50条)。 二阶段残留事务详情。 6. 快照对比 1. 单击对应快照记录的快照对比,弹出快照对比对话框。 2. 在快照对比对话框,选择要对比的快照,单击确定可查看快照独臂信息。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V5.1.0版本产品文档
        管理平台使用手册
        控制台操作指南
        实例监控
        实例运行快照
      • 配置FTP/SFTP源端参数
        本章节主要介绍配置FTP/SFTP源端参数。 作业中源连接为配置FTP/SFTP连接时,源端作业参数如下表所示。 高级属性里的参数为可选参数,默认隐藏,单击界面上的“显示高级属性”后显示。 表 FTP/SFTP作为源端时的作业参数 参数类型 参数名 说明 取值样例 基本参数 源目录或文件 待迁移数据的目录或单个文件路径。文件路径支持输入多个文件(最多50个),默认以“l"分隔,也可以自定义文件分隔符。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据。 /ftp/a.csvl/ftp/b.txt 基本参数 文件格式 指CDM以哪种格式解析数据,可选择以下格式: CSV格式:以CSV格式解析源文件,用于迁移文件到数据表的场景。 二进制格式:选择“二进制格式”时不解析文件内容直接传输,不要求文件格式必须为二进制。适用于文件到文件的原样复制。 JSON格式:以JSON格式解析源文件,一般都是用于迁移文件到数据表的场景。 CSV格式 基本参数 JSON类型 当“文件格式”选择为“JSON格式”时,才有该参数。JSON文件中存储的JSON对象的类型,可以选择“JSON对象”或“JSON数组”。 JSON对象 基本参数 记录节点 当“文件格式”选择为“JSON格式”并且“JSON类型”为“JSON对象”时,才有该参数。对该JSON节点下的数据进行解析,如果该节点对应的数据为JSON数组,那么系统会以同一模式从该数组中提取数据。多层嵌套的JSON节点以字符“.”分割。 data.list 高级属性 换行符 文件中的换行符,默认自动识别“n”、“r”或“rn”。当“文件格式”选择为“CSV格式”时,才有该参数。 n 高级属性 字段分隔符 文件中的字段分隔符,使用Tab键作为分隔符请输入“t”。当“文件格式”选择为“CSV格式”时,才有该参数。 , 高级属性 使用包围符 选择“是”时,包围符内的字段分隔符会被视为字符串值的一部分,目前CDM默认的包围符为:"。 否 高级属性 使用正则表达式分隔字段 选择是否使用正则表达式分隔字段,当选择“是”时,“字段分隔符”参数无效。当“文件格式”选择为“CSV格式”时,才有该参数。 是 高级属性 正则表达式 分隔字段的正则表达式。 ^(d.d) (w ) [(.)] ([w.] ) (w.). 高级属性 首行为标题行 “文件格式”选择“CSV格式”时才有该参数。在迁移CSV文件到表时,CDM默认是全部写入,如果该参数选择“是”,CDM会将CSV文件的第一行数据作为标题行,不写入目的端的表。 是 高级属性 编码类型 文件编码类型,例如:“UTF8”或“GBK”。只有文本文件可以设置编码类型,当“文件格式”选择为“二进制格式”时,该参数值无效。 UTF8 高级属性 压缩格式 当“文件格式”为“CSV格式”或“JSON格式”时该参数才显示。选择对应压缩格式的源文件: 无:表示传输所有格式的文件。 GZIP:表示只传输GZIP格式的文件。 ZIP:表示只传输ZIP格式的文件。 TAR.GZ:表示只传输TAR.GZ格式的文件。 无 高级属性 压缩文件后缀 压缩格式非无时,显示该参数。 该参数需要解压缩的文件后缀名。当一批文件中以该值为后缀时,才会执行解压缩操作,否则则保持原样传输。当输入或为空时,所有文件都会被解压。 高级属性 源文件处理方式 作业执行成功后对源端文件的处理方式: 不处理。 重命名:作业执行成功后将源文件重命名,添加用户名和时间戳的后缀。 删除:作业执行成功后将源文件删除。 不处理 高级属性 启动作业标识文件 选择是否开启作业标识文件的功能。当源端路径下存在启动作业的标识文件时才启动作业,否则会挂起等待一段时间,等待时长在下方“等待时间”中配置。 是 高级属性 标识文件名 选择开启作业标识文件的功能时,需要指定启动作业的标识文件名。指定文件后,只有在源端路径下存在该文件的情况下才会运行任务。该文件本身不会被迁移。 ok.txt 高级属性 等待时间 选择开启作业标识文件的功能时,如果源路径下不存在启动作业的标识文件,作业挂机等待的时长,当超时后任务会失败。 等待时间设置为0时,当源端路径下不存在标识文件,任务会立即失败。 单位:秒。 10 高级属性 文件分隔符 “源目录或文件”参数中如果输入的是多个文件路径,CDM使用这里配置的文件分隔符来区分各个文件,默认为 。 高级属性 过滤类型 满足过滤条件的路径或文件会被传输,该参数有“无”、“通配符”和“正则表达式”三种选择。 无 高级属性 目录过滤器 “过滤类型”选择“通配符”时,用通配符过滤目录,符合过滤器规则的目录,允许进行迁移。支持配置多个路径,中间使用“,”分隔。 input,out 高级属性 文件过滤器 “过滤类型”选择“通配符”时,用通配符过滤目录下的文件,符合过滤器规则的文件,允许进行迁移。支持配置多个文件,中间使用“,”分隔。 .csv 高级属性 时间过滤 选择“是”时,可以根据文件的修改时间,选择性的传输文件。 是 高级属性 起始时间 “过滤类型”选择“时间过滤器”时,可以指定一个时间值,当文件的修改时间大于该时间才会被传输,输入的时间格式需为“yyyyMMdd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyyMMdd HH:mm:ss,90,DAY))}表示:只迁移最近90天内的文件。 20190701 00:00:00 高级属性 终止时间 “过滤类型”选择“时间过滤器”时,可以指定一个时间值,当文件的修改时间小于该时间才会被传输,输入的时间格式需为“yyyyMMdd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyyMMdd HH:mm:ss))} 表示:只迁移修改时间为当前时间以前的文件。 20190730 00:00:00 高级属性 加密方式 如果源端数据是被加密过的,则CDM支持解密后再导出。这里选择是否对源端数据解密,以及选择解密算法: 无:不解密,直接导出。 AES256GCM:使用长度为256byte的AES对称加密算法,目前加密算法只支持AES256GCM(NoPadding)。该参数在目的端为加密,在源端为解密。 AES256GCM 高级属性 忽略不存在原路径/文件 如果将其设为是,那么作业在源路径不存在的情况下也能成功执行。 否 高级属性 数据加密密钥 “加密方式”选择“AES256GCM”时显示该参数,密钥由长度64的十六进制数组成,且必须与加密时配置的“数据加密密钥”一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 DD0AE00DFECD78BF051BCFDA25BD4E320DB0A7AC75A1F3FC3D3C56A457DCDC1B 高级属性 初始化向量 “加密方式”选择“AES256GCM”时显示该参数,初始化向量由长度32的十六进制数组成,且必须与加密时配置的“初始化向量”一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 5C91687BA886EDCD12ACBC3FF19A3C3F 高级属性 MD5文件名后缀 “文件格式”选择“二进制格式”时,该参数才显示。 校验CDM抽取的文件,是否与源文件一致。 .md5
        来自:
        帮助文档
        数据治理中心 DataArts Studio
        用户指南
        数据集成
        管理作业
        配置作业源端参数
        配置FTP/SFTP源端参数
      • 查看参数模板信息
        参数名 参数解释 取值范围 默认值 timeout 客户端空闲N秒(timeout参数的取值)后将关闭连接。当N0时,表示禁用该功能。Proxy集群实例不支持该参数。 0~7200,单位:秒。 0 appendfsync 操作系统的fsync函数刷新缓冲区数据到磁盘,有些操作系统会真正刷新磁盘上的数据,其他一些操作系统只会尝试尽快完成。Redis支持三种不同的调用fsync的方式: no:不调用fsync,由操作系统决定何时刷新数据到磁盘,性能最高。 always:每次写AOF文件都调用fsync,性能最差,但数据最安全。 everysec:每秒调用一次fsync。兼具数据安全和性能。单机实例不支持该参数。 l nol alwaysl everysec no appendonly 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。有2个取值供选择:yes:开启。no:关闭。单机实例不支持该参数。 l yesl no yes clientoutputbufferlimitslavesoftseconds slave客户端outputbuffer超过clientoutputbufferslavesoftlimit设置的大小,并且持续时间超过此值(单位为秒),服务端会主动断开连接。单机实例不支持该参数。 0~60 60 clientoutputbufferslavehardlimit 对slave客户端outputbuffer的硬限制(单位为字节),如果slave客户端outputbuffer大于此值,服务端会主动断开连接。单机实例不支持该参数。 取值范围与实例的类型及规格有关 默认值与实例的类型及规格有关 clientoutputbufferslavesoftlimit 对slave客户端outputbuffer的软限制(单位为字节),如果outputbuffer大于此值并且持续时间超过clientoutputbufferlimitslavesoftseconds设置的时长,服务端会主动断开连接。单机实例不支持该参数。 取值范围与实例的类型及规格有关 默认值与实例的类型及规格有关 maxmemorypolicy 在达到内存上限(maxmemory)时DCS将如何选择要删除的内容。有8个取值供选择: volatilelru:根据LRU算法删除设置了过期时间的键值。 allkeyslru:根据LRU算法删除任一键值。 volatilerandom:删除设置了过期时间的随机键值。 allkeysrandom:删除一个随机键值。 volatilettl:删除即将过期的键值,即TTL值最小的键值。 noeviction:不删除任何键值,只是返回一个写错误。 volatilelfu:根据LFU算法删除设置了过期时间的键值。 allkeyslfu:根据LFU算法删除任一键值。 取值范围与实例的版本有关 默认值与实例的版本及类型有关 luatimelimit Lua脚本的最长执行时间,单位为毫秒。读写分离实例不支持设置该参数。 100~5,000 5,000 masterreadonly 设置实例为只读状态。设置只读后,所有写入命令将返回失败。Proxy集群、读写分离实例不支持该参数。 l yesl no no maxclients 最大同时连接的客户端个数。Proxy集群、读写分离实例不支持该参数。 取值范围与实例的类型及规格有关 默认值与实例的类型及规格有关 protomaxbulklen Redis协议中的最大的请求大小,单位为字节。读写分离实例不支持设置该参数。 1,048,576~536,870,912 536,870,912 replbacklogsize 用于增量同步的复制积压缓冲区大小(单位为字节)。这是一个用来在从节点断开连接时,存放从节点数据的缓冲区,当从节点重新连接时,如果丢失的数据少于缓冲区的大小,可以用缓冲区中的数据开始增量同步。单机实例不支持该参数。 16,384~1,073,741,824 1,048,576 replbacklogttl 从节点断开后,主节点释放复制积压缓冲区内存的秒数。值为0时表示永不释放复制积压缓冲区内存。单机实例不支持该参数。 0~604,800 3,600 repltimeout 主从同步超时时间,单位为秒。单机实例不支持该参数。 30~3,600 60 hashmaxziplistentries 当hash表中只有少量记录时,使用有利于节约内存的数据结构来对hashes进行编码。 1~10000 512 hashmaxziplistvalue 当hash表中最大的取值不超过预设阈值时,使用有利于节约内存的数据结构来对hashes进行编码。 1~10000 64 setmaxintsetentries 当一个集合仅包含字符串且字符串为在64位有符号整数范围内的十进制整数时,使用有利于节约内存的数据结构对集合进行编码。 1~10000 512 zsetmaxziplistentries 当有序集合中只有少量记录时,使用有利于节约内存的数据结构对有序序列进行编码。 1~10000 128 zsetmaxziplistvalue 当有序集合中的最大取值不超过预设阈值时,使用有利于节约内存的数据结构对有序集合进行编码。 1~10000 64 latencymonitorthreshold 延时监控的采样时间阈值(最小值),单位为毫秒。阈值设置为0:不做监控,也不采样;阈值设置为大于0:将记录执行耗时大于阈值的操作。可以通过LATENCY等命令获取统计数据和配置、执行采样监控。Proxy集群实例不支持该参数。 0~86400000,单位:毫秒。 0 notifykeyspaceevents notifykeyspaceevents选项的参数为空字符串时,功能关闭。另一方面,当参数不是空字符串时,功能开启。 notifykeyspaceevents的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知: K:键空间通知,所有通知以keyspace@为前缀。 E:键事件通知,所有通知以keyevent@为前缀。 g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知。 $ :字符串命令的通知。 l:列表命令的通知。 s:集合命令的通知。 h:哈希命令的通知。 z:有序集合命令的通知。 x:过期事件:每当有过期键被删除时发送。 e:驱逐(evict)事件:每当有键因为maxmemory政策而被删除时发送。 A:参数glshzxe的别名。输入的参数中至少有一个K或者E,A不能与g$lshzxe同时出现,不能出现相同字母。举个例子,如果只想订阅键空间中和列表相关的通知,那么参数就应该设为Kl。将参数设为字符串"AKE"表示发送所有类型的通知。Proxy集群实例不支持该参数。 请参考该参数的描述。 Ex slowloglogslowerthan Redis慢查询会记录超过指定执行时间的命令。slowloglogslowerthan用于配置记录到慢查询的命令执行时间阈值,单位为微秒。 0~1,000,000 10,000 slowlogmaxlen 慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 0~1,000 128 multidb 开启或关闭多DB特性。要求先清除已有数据。清除数据之前请先手动备份生成备份文件。若要恢复已清除的数据请通过数据迁移页面的备份导入功能进行数据恢复。有2个取值供选择:yes:开启。no:关闭。仅Redis 4.0及以上版本的Proxy集群实例支持该参数。 l yesl no no
        来自:
        帮助文档
        分布式缓存服务Redis版
        用户指南
        参数模板
        查看参数模板信息
      • 修改实例配置参数
        参数名 参数解释 取值范围 默认值 timeout 客户端空闲N秒(timeout参数的取值)后将关闭连接。当N0时,表示禁用该功能。Proxy集群实例不支持该参数。 0~7200,单位:秒。 0 appendfsync 操作系统的fsync函数刷新缓冲区数据到磁盘,有些操作系统会真正刷新磁盘上的数据,其他一些操作系统只会尝试尽快完成。 Redis支持三种不同的调用 fsync的方式: no:不调用fsync,由操作系统决定何时刷新数据到磁盘,性能最高。 always:每次写AOF文件都调用fsync,性能最差,但数据最安全。 everysec:每秒调用一次fsync。兼具数据安全和性能。单机实例不支持该参数。 l nol alwaysl everysec no appendonly 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。有2个取值供选择:yes:开启。no:关闭。单机实例不支持该参数。 l yesl no yes clientoutputbufferlimitslavesoftseconds slave客户端outputbuffer超过clientoutputbufferslavesoftlimit设置的大小,并且持续时间超过此值(单位为秒),服务端会主动断开连接。单机实例不支持该参数。 0~60 60 clientoutputbufferslavehardlimit 对slave客户端outputbuffer的硬限制(单位为字节),如果slave客户端outputbuffer大于此值,服务端会主动断开连接。单机实例不支持该参数。 取值范围与实例的类型及规格有关 默认值与实例的类型及规格有关 clientoutputbufferslavesoftlimit 对slave客户端outputbuffer的软限制(单位为字节),如果outputbuffer大于此值并且持续时间超过clientoutputbufferlimitslavesoftseconds设置的时长,服务端会主动断开连接。单机实例不支持该参数。 取值范围与实例的类型及规格有关 默认值与实例的类型及规格有关 maxmemorypolicy 在达到内存上限(maxmemory)时DCS将如何选择要删除的内容。 有8个取值供选择: volatilelru:根据LRU算法删除设置了过期时间的键值。 allkeyslru:根据LRU算法删除任一键值。 volatilerandom:删除设置了过期时间的随机键值。 allkeysrandom:删除一个随机键值。 volatilettl:删除即将过期的键值,即TTL值最小的键值。 noeviction:不删除任何键值,只是返回一个写错误。 volatilelfu:根据LFU算法删除设置了过期时间的键值。 allkeyslfu:根据LFU算法删除任一键值。 取值范围与实例的版本有关 默认值与实例的版本及类型有关 luatimelimit Lua脚本的最长执行时间,单位为毫秒。读写分离实例不支持设置该参数。 100~5,000 5,000 masterreadonly 设置实例为只读状态。设置只读后,所有写入命令将返回失败。Proxy集群、读写分离实例不支持该参数。 l yesl no no maxclients 最大同时连接的客户端个数。Proxy集群、读写分离实例不支持该参数。 取值范围与实例的类型及规格有关 默认值与实例的类型及规格有关 protomaxbulklen Redis协议中的最大的请求大小,单位为字节。读写分离实例不支持设置该参数。 1,048,576~536,870,912 536,870,912 replbacklogsize 用于增量同步的复制积压缓冲区大小(单位为字节)。这是一个用来在从节点断开连接时,存放从节点数据的缓冲区,当从节点重新连接时,如果丢失的数据少于缓冲区的大小,可以用缓冲区中的数据开始增量同步。单机实例不支持该参数。 16,384~1,073,741,824 1,048,576 replbacklogttl 从节点断开后,主节点释放复制积压缓冲区内存的秒数。值为0时表示永不释放复制积压缓冲区内存。单机实例不支持该参数。 0~604,800 3,600 repltimeout 主从同步超时时间,单位为秒。单机实例不支持该参数。 30~3,600 60 hashmaxziplistentries 当hash表中只有少量记录时,使用有利于节约内存的数据结构来对hashes进行编码。 1~10000 512 hashmaxziplistvalue 当hash表中最大的取值不超过预设阈值时,使用有利于节约内存的数据结构来对hashes进行编码。 1~10000 64 setmaxintsetentries 当一个集合仅包含字符串且字符串为在64位有符号整数范围内的十进制整数时,使用有利于节约内存的数据结构对集合进行编码。 1~10000 512 zsetmaxziplistentries 当有序集合中只有少量记录时,使用有利于节约内存的数据结构对有序序列进行编码。 1~10000 128 zsetmaxziplistvalue 当有序集合中的最大取值不超过预设阈值时,使用有利于节约内存的数据结构对有序集合进行编码。 1~10000 64 latencymonitorthreshold 延时监控的采样时间阈值(最小值),单位为毫秒。阈值设置为0:不做监控,也不采样;阈值设置为大于0:将记录执行耗时大于阈值的操作。可以通过LATENCY等命令获取统计数据和配置、执行采样监控。Proxy集群实例不支持该参数。 0~86400000,单位:毫秒。 0 notifykeyspaceevents notifykeyspaceevents选项的参数为空字符串时,功能关闭。另一方面,当参数不是空字符串时,功能开启。 notifykeyspaceevents的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知: K:键空间通知,所有通知以keyspace@为前缀。 E:键事件通知,所有通知以keyevent@为前缀。 g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知。 $ :字符串命令的通知。 l:列表命令的通知。 s:集合命令的通知。 h:哈希命令的通知。 z:有序集合命令的通知。 x:过期事件:每当有过期键被删除时发送。 e:驱逐(evict)事件:每当有键因为maxmemory政策而被删除时发送。 A:参数glshzxe的别名。输入的参数中至少有一个K或者E,A不能与g$lshzxe同时出现,不能出现相同字母。举个例子,如果只想订阅键空间中和列表相关的通知,那么参数就应该设为Kl。将参数设为字符串"AKE"表示发送所有类型的通知。 Proxy集群实例不支持该参数。 请参考该参数的描述。 Ex slowloglogslowerthan Redis慢查询会记录超过指定执行时间的命令。slowloglogslowerthan用于配置记录到慢查询的命令执行时间阈值,单位为微秒。 0~1,000,000 10,000 slowlogmaxlen 慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 0~1,000 128 multidb 开启或关闭多DB特性。要求先清除已有数据。清除数据之前请先手动备份生成备份文件。若要恢复已清除的数据请通过数据迁移页面的备份导入功能进行数据恢复。有2个取值供选择:yes:开启。no:关闭。仅Redis 4.0及以上版本的Proxy集群实例支持该参数。 l yesl no no
        来自:
        帮助文档
        分布式缓存服务Redis版
        用户指南
        实例配置管理
        修改实例配置参数
      • 统一身份认证与权限管理
        统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他账号管理资源等。 使用前您需了解常用的基本概念,包括:帐号、IAM用户、用户组、身份凭证、授权、权限、项目、委托、身份凭证等,详细请查看:术语解释。 IAM应用场景 IAM策略主要面向对同租户帐号下,对不同IAM用户授权的场景: 您可以为不同操作人员或应用程序创建不同IAM用户,并授予IAM用户刚好能完成工作所需的权限,比如文件系统的查看权限,进行最小粒度授权管理。 新创建的IAM用户可以使用自己的用户名和密码登录云服务平台,实现多用户协同操作时无需分享帐号的密码的安全要求。 场景实例说明请查看:入门说明。 操作步骤 关于IAM功能的操作步骤请参见快速入门统一身份认证(一类节点)。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素"Action""Effect"等更多信息。 系统策略 :预置的系统策略,您只能使用不能修改,具体说明请查看系统策略。 弹性文件服务预置的系统策略包含如下: sfs admin:弹性文件服务的管理者权限,包含弹性文件服务所有控制权限(不包含订单类权限)。 sfs viewer:弹性文件服务的观察者权限,包含弹性文件服务的列表页与详情页页面权限。 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见创建自定义策略。
        来自:
        帮助文档
        弹性文件服务 SFS
        用户指南
        高级管理
        统一身份认证与权限管理
      • 权限管理概述
        本节为您介绍权限管理的概念。 在协同使用资源的场景下,如果您需要根据实际的职责权限情况配置用户使用权限,可使用 统一身份认证(Identity and Access Management,简称IAM)服务,创建多个IAM用户并为其授予不同的权限,实现不同IAM子用户可以分权管理不同的资源,从而提高管理效率,降低信息泄露风险。通过IAM可实现精细化权限管理、安全访问、批量管理用户权限、委托其他帐号管理资源等功能。您可以创建并为IAM用户或用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 IAM是天翼云提供的免费基础服务,您只需为购买资源进行付费。关于IAM的详细介绍,请参见IAM产品介绍。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略:预置的系统策略,您只能使用不能修改。云助手相关的系统策略包含如下: Admin:云助手的管理者权限,包含云助手所有控制权限(不含订单类权限)。 Viewer:云助手的观察者权限,包含云助手的列表页与详情页面权限。 自定义策略:您按需自行创建和维护的权限策略。
        来自:
        帮助文档
        弹性云主机 ECS
        用户指南
        运维
        云助手
        权限管理概述
      • 安装Cloudbase-Init
        本文档为制作Windows系统私有镜像指导手册的步骤3,安装CloudbaseInit。 操作场景 CloudbaseInit是用于Windows操作系统在创建弹性云主机过程执行信息初始化的工具,主要支持以下关键能力: Windows云主机的主机名、用户名、密码等信息的初始化; Windows云主机用户数据的注入以及自动化配置。 操作步骤 下载最新稳定版CloudbaseInit: 64 位Windows操作系统请通过此链接下载:CloudbaseInitSetup最新稳定版64位系统版本。 32 位Windows操作系统请通过此链接下载:CloudbaseInitSetup最新稳定版32位版本系统。 安装CloudbaseInit 下方截图步骤,请按截图配置操作,其它界面默认即可。 Username: Administrator; 勾选Run CloudbaseInit service as LocalSystem。 配置CloudbaseInit。 1. 打开PowerShell,将以下内容直接复制粘贴并执行。 $content @' [DEFAULT] usernameAdministrator groupsAdministrators injectuserpasswordtrue bsdtarpathC:Program FilesCloudbase SolutionsCloudbaseInitbinbsdtar.exe mtoolspathC:Program FilesCloudbase SolutionsCloudbaseInitbin verbosetrue debugtrue logdirC:Program FilesCloudbase SolutionsCloudbaseInitlog logfilecloudbaseinit.log defaultloglevelscomtypesINFO,sudsINFO,iso8601WARN,requestsWARN loggingserialportsettingsCOM1,115200,N,8 localscriptspathC:Program FilesCloudbase SolutionsCloudbaseInitLocalScripts allowreboottrue metadataservicescloudbaseinit.metadata.services.configdrive.ConfigDriveService,cloudbaseinit.metadata.services.httpservice.HttpService pluginscloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin netbioshostnamecompatibilityfalse activatewindowstrue firstlogonbehaviourno '@ $content OutFile Encoding ASCII FilePath 'C:Program FilesCloudbase SolutionsCloudbaseInitconfcloudbaseinit.conf' 2. 添加自定义脚本,确保 configdrive CD 设备能自动卸载。 $content @'
        来自:
        帮助文档
        镜像服务 IMS
        用户指南
        私有镜像
        创建私有镜像
        制作Windows系统盘镜像文件
        安装Cloudbase-Init
      • 认证与访问控制
        本节主要介绍分布式缓存服务Redis版认证与访问控制方式 分布式缓存服务Redis版支持CTIAM身份认证和多种访问控制,多维度保障您数据的安全。 身份认证 CTIAM 统一身份认证(Identity and Access Management, 简称:CTIAM)是提供用户进行权限管理的基础服务,可以帮助您安全的控制天翼云服务和资源的访问及操作权限,包括:用户身份认证、权限分配、访问控制等功能。具体介绍请参考统一身份认证产品介绍。 您可以创建IAM用户,并为其设置关分布式缓存服务Redis版实例权限,该用户就可以通过用户名和密码访问授权的实例资源。具体请参见统一身份认证快速入门创建IAM用户。 访问控制 权限控制 购买分布式缓存服务Redis版实例之后,您可以使用CTIAM为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,通过CTIAM进行精细的权限管理。 VPC和子网 虚拟私有云(Virtual Private Cloud,VPC)为分布式缓存服务Redis版构建隔离、私密的虚拟网络环境,提升数据库的安全性,并简化用户的网络部署。您可以完全掌控自己的专有网络,VPC丰富的功能帮助您灵活管理云上网络,包括创建子网、设置安全组和网络ACL、管理路由表、申请弹性公网IP和带宽等。通过子网与其他网络隔离,独享网络资源,提高网络安全性。具体内容请参见虚拟私有云用户指南创建虚拟私有云和子网 。 安全组 安全组是一个逻辑上的分组,可以为同一个虚拟私有云内具有相同安全保护需求并相互信任的Redis实例提供相同的访问策略。您可以通过为数据库实例设置安全组,开通需访问Redis实例的IP地址和端口,来保证保障其运行环境的安全性和稳定性。具体请参见修改实例安全组
        来自:
        帮助文档
        分布式缓存服务Redis版
        产品介绍
        安全
        认证与访问控制
      • 管理JMeter测试计划
        调试测试计划 新增或修改测试计划后,可通过调试快速发现语法或配置错误,确保该模型在任务中可用。 1、登录性能测试控制台,在左侧导航栏中选择“JMeter测试工程”。单击待调试测试计划所在工程后的。 2、在“测试计划列表”页签中,单击待调试的测试计划操作栏中的。 3、在弹出的对话框中,选择“资源组类型”后单击“启动调试”。 4、在“调试日志”页签,查看调试的操作日志。 调试日志 5、调试完成后,在“结果”页签,查看测试计划调试的具体内容。 如果调试结果报错,可根据错误日志信息,修改jmx文件后重新导入。导入方法请参见管理测试计划中的修改测试计划部分。 启动测试计划 测试计划指通过在不同压测点执行一系列测试,持续对系统发起压力测试,通过测试获取并分析系统运行的性能数据。 您可以在一个测试工程中添加多个测试计划。 前提条件 确保资源组状态为“运行中”。 确保资源组的调试节点上的32001和32003端口在安全组被开启。 确保资源组的执行节点和被压测的应用之间网络互通。 操作步骤 1、登录性能测试控制台,在左侧导航栏中选择“JMeter测试工程”,单击待操作工程后的。 2、创建测试计划,具体操作请参见创建测试计划。 3、创建完成后,单击任务操作栏的。 4、在“启动测试任务”对话框中,选择对应的资源组。 5、单击“启动”,启动测试任务。然后可以单击“查看报告”来查看实时性能报告。 说明 压测时长建议至少300s,并发数请根据被压测应用的实际情况填写。通过多次调整压测数据进行反复测试,得到应用所能承受的最大值,进行持续优化和验证。 管理测试计划 测试计划创建成功后,您可以对测试计划进行管理。
        来自:
        帮助文档
        性能测试PTS
        用户指南
        JMeter测试工程管理
        管理JMeter测试计划
      • 认证与访问控制
        本文介绍了认证与访问控制相关说明。 RDSPostgreSQL支持CTIAM身份认证与多种访问控制,多维度保障您云数据库的安全。 身份认证 CTIAM 统一身份认证(Identity and Access Management, 简称:CTIAM),是提供用户进行权限管理的基础服务,可以帮助您安全的控制天翼云服务和资源的访问及操作权限,包括:用户身份认证、权限分配、访问控制等功能。 您可以创建IAM用户,并为其设置RDSPostgreSQL实例权限,该用户就可以通过用户名和密码访问授权的实例资源。 访问控制 权限控制 购买RDSPostgreSQL实例之后,您可以使用CTIAM为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,通过CTIAM进行精细的权限管理。 VPC和子网 虚拟私有云(Virtual Private Cloud,VPC)为RDSPostgreSQL构建隔离、私密的虚拟网络环境,提升数据库的安全性,并简化用户的网络部署。您可以完全掌控自己的专有网络,VPC丰富的功能帮助您灵活管理云上网络,包括创建子网、设置安全组和网络ACL、管理路由表、申请弹性公网IP和带宽等。 通过子网与其他网络隔离,独享网络资源,提高网络安全性。 具体内容请参见虚拟私有云用户指南创建虚拟私有云和子网。 白名单管理 白名单管理中,用户可对实例设置可访问的IP地址或IP段,控制数据库的安全访问,来保证保障其访问来源的安全性。 具体请参见关系数据库PostgreSQL版用户安全数据安全白名单管理。 安全组 安全组是一个逻辑上的分组,可以为同一个虚拟私有云内具有相同安全保护需求并相互信任的数据库实例提供相同的访问策略。您可以通过为数据库实例设置安全组,开通需访问数据库的IP地址和端口,来保证保障其运行环境的安全性和稳定性。 具体请参见关系数据库PostgreSQL版快速入门步骤二:设置安全组规则。
        来自:
        帮助文档
        关系数据库PostgreSQL版
        产品介绍
        安全
        认证与访问控制
      • 实例运行快照监控
        本页介绍天翼云TeleDB数据库实例运行快照。 操作步骤 1. 以用户名和密码登录分布式数据库TeleDB控制台,在左侧导航树单击实例监控 ,选择实例运行快照 页签。 2. 快照设置 1. 单击快照设置 ,弹出实例运行快照策略设置 对话框。 2. 在实例运行快照策略设置 对话框中,打开运行快照开启状态,输入快照开启时间和快照间隔时间,单击确定 完成设置。 3. 手动快照 单击手动快照可立即执行快照。 4. 查询快照列表 可通过设置起始时间和结束时间,单击查询筛选已产生的快照列表。 5. 查看快照详情 单击对应快照记录的详情,可查看该快照的详细信息。 具体内容包括: 数据库状态:节点名称、IP、端口、角色、日志同步状态、运行状态。 数据库核心配置:synchronouscommit、maxpoolsize、autovaccum、maxconnection、workmem、walkeepsegments、vacuumdelta、sharedbuffers的参数值。 数据库连接分析:包括CN和DN的连接情况,如avgconn、avgconnactive、avgconnidle、avgconnlock等。 DataNode节点请求量统计:统计DN节点的增删改查请求量。 数据库检查点:节点的检查点情况,如checkpointstimed、checkpointsreq等。 存储情况分节点统计:节点的存储情况,如totalsize、totaltups。 慢查询TOP 50:慢查询的TOP 50情况。 错误日志情况:包括错误信息、级别。 buffer命中率分析:包括平均、最大和最小情况。 锁分析:最多展示等待时间最长50条。 节点CPU/内存利用率概况:节点CPU/内存利用率统计。 死锁详情:最多展示最近的50条。 回滚详情:最多展示最近的50条。 二阶段残留事务详情:二阶段残留事务详细信息。 6. 快照对比 1. 单击对应快照记录的快照对比,弹出快照对比 对话框。 2. 在快照对比对话框,选择要对比的快照,单击确定 可查看快照对比信息。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V5.0.0版本产品文档
        管理平台使用手册
        实例监控
        实例运行快照监控
      • 创建无状态负载(Deployment)
        操作场景 在运行中始终不保存任何数据或状态的工作负载称为“无状态负载 Deployment”,例如nginx。您可以通过控制台或kubectl命令行创建无状态负载。 前提条件 在创建容器工作负载前,您需要存在一个可用集群。若没有可用集群 ,请参照集群管理>购买混合集群中内容进行创建。 若工作负载需要被外网访问,请确保集群中至少有一个节点已绑定弹性IP,或已购买负载均衡实例。 创建多个工作负载时,请确保容器使用的端口不冲突 ,否则部署会失败。 通过控制台创建 云容器引擎提供了多种创建工作负载的方式,您可以通过如下方式进行创建: 基于“我的镜像”创建工作负载,用户首先需要将镜像上传至容器镜像服务。 基于“共享镜像”创建工作负载,即其它租户通过“容器镜像服务”共享给您的镜像。 您希望通过YAML方式创建工作负载,您可在“创建无状态工作负载”高级设置页面单击界面右侧的“YAML创建”,通过yaml的方式创建工作负载。YAML编写完成后,可单击“创建”,直接创建工作负载。 说明: YAML文件是和界面保持同步的,您也可以通过界面和YAML互动完成工作负载的创建。例如: 界面中填写工作负载名称后,YAML文件会自动关联该名称。 界面中添加完镜像后,YAML中也会自动关联该镜像。 控制台界面右侧的“YAML创建”不支持多个YAML混合,请分别创建,否则创建时将会报错。 步骤 1 登录CCE控制台,在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”,单击“创建无状态工作负载”。参照下表设置工作负载基本信息,其中带“”标志的参数为必填参数。 工作负载基本信息 参数 参数说明 工作负载名称 新建工作负载的名称,命名必须唯一。 请输入4到63个字符的字符串,可以包含小写英文字母、数字和中划线(),并以小写英文字母开头,小写英文字母或数字结尾。 集群名称 新建工作负载所在的集群。 命名空间 在单集群中,不同命名空间中的数据彼此隔离。使应用可以共享同个集群的服务,也能够互不干扰。若您不设置命名空间,系统会默认使用default命名空间。 实例数量 工作负载的实例数量。工作负载可以有一个或多个实例,用户可以设置具体实例个数,默认为2,可自定义设置为1。 每个工作负载实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性,当某个实例故障时,工作负载还能正常运行。若使用单实例,节点异常或实例异常会导致服务异常。 时区同步 单击开启后,容器将和节点使用相同时区。 须知:时区同步功能开启后,在“数据存储 > 本地磁盘”中,将会自动添加HostPath类型的磁盘,请勿修改删除该磁盘。 工作负载描述 工作负载描述信息。 步骤 2 单击“下一步:容器设置”,添加容器。 1. 单击“添加容器”,选择需要部署的镜像。 − 我的镜像:展示了您创建的所有镜像仓库。 − 第三方镜像:CCE支持拉取第三方镜像仓库(即镜像仓库之外的镜像仓库)的镜像创建工作负载。使用第三方镜像时,请确保工作负载运行的节点可访问公网。第三方镜像的具体使用方法请参见如何使用第三方镜像。 若您的镜像仓库不需要认证,密钥认证请选择“否”,并输入“镜像名称”,单击“确定”。 若您的镜像仓库都必须经过认证(帐号密码)才能访问,您需要先创建密钥再使用第三方镜像,具体操作请参见如何使用第三方镜像。 − 共享镜像:其它租户通过“容器镜像服务”共享给您的镜像将在此处展示,您可以基于共享镜像创建工作负载。 2. 配置镜像基本信息。 工作负载是Kubernetes对一组Pod的抽象模型,用于描述业务的运行载体,一个Pod可以封装1个或多个容器,您可以单击右上方的“添加容器”,添加多个容器镜像并分别进行设置。 镜像参数说明 参数 说明 镜像名称 导入的镜像,您可单击“更换镜像”进行更换。 镜像版本 选择需要部署的镜像版本。 容器名称 容器的名称,可修改。 特权容器 特权容器是指容器里面的程序具有一定的特权。 若选中,容器将获得超级权限,例如可以操作宿主机上面的网络设备、修改内核参数等。 容器规格 CPU 配额: 申请:容器需要使用的最小CPU值,默认0.25Core。 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。 内存配额: 申请:容器需要使用的内存最小值,默认512MiB。 限制:允许容器使用的内存最大值。如果超过,容器会被终止。 申请和限制的具体请参见设置容器规格。 GPU 配额:当集群中包含GPU节点时,才能设置GPU,无GPU节点不显示此选项。 容器需要使用的GPU百分比。勾选“使用”并设置百分比,例如设置为10%,表示该容器需使用GPU资源的10%。若不勾选“使用”,或设置为0,则无法使用GPU资源。 GPU 显卡:工作负载实例将被调度到GPU显卡类型为指定显卡的节点上。 若勾选“不限制”,容器将会随机使用节点中的任一显卡。您也可以勾选某个显卡,容器将使用特定显卡。 3. 生命周期:用于设置容器启动和运行时需要执行的命令。 − 启动命令:设置容器启动时执行的命令,具体请参见设置容器启动命令。 − 启动后处理:设置容器成功运行后执行的命令,详细配置方法请参见设置容器生命周期。 − 停止前处理:设置容器结束前执行的命令,通常用于删除日志/临时文件等,详细配置方法请参见设置容器生命周期。 4. 健康检查:CCE提供了存活与业务两种探针,用于判断容器和用户业务是否正常运行。详细配置方法请参见设置容器健康检查。 − 工作负载存活探针:检查容器是否正常,不正常则重启实例。 − 工作负载业务探针:检查用户业务是否就绪,不就绪则不转发流量到当前实例。 5. 环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数。 在“环境变量”页签,单击“添加环境变量”,当前支持三种类型: − 手动添加:输入变量名称、变量/变量引用。 − 密钥导入:输入变量名称,选择导入的密钥名称和数据。您需要提前创建密钥,具体请参见配置中心>创建密钥。 − 配置项导入:输入变量名称,选择导入的配置项名称和数据。您需要提前创建配置项,具体请参见配置中心>创建配置项。 说明: 对于已设置的环境变量,单击环境变量后的“编辑”,可对该环境变量进行编辑。单击环境变量后的“删除”,可删除该环境变量。 6. 数据存储:给容器挂载数据存储,支持本地磁盘和云存储,适用于需持久化存储、高磁盘IO等场景。具体请参见存储管理。 7. 安全设置:对容器权限进行设置,保护系统和其他容器不受其影响。 请输入用户ID,容器将以当前用户权限运行。 8. 容器日志:设置容器日志采集策略、配置日志目录。用于收集容器日志便于统一管理和分析。详细配置请参见采集容器标准输出日志、采集容器内路径日志。 步骤 3 单击“下一步:工作负载访问设置”,单击“添加服务”,设置工作负载访问方式。 若工作负载需要和其它服务互访,或需要被公网访问,您需要添加服务,设置工作负载访问方式。 工作负载访问的方式决定了这个工作负载的网络属性,不同访问方式的工作负载可以提供不同网络能力,具体请参见网络管理>网络概述。 步骤 4 单击“下一步:高级设置”,配置更多高级策略。 升级策略:您可以指定无状态工作负载的升级方式,包括逐步“滚动升级”和整体“替换升级”。 − 滚动升级:将逐步用新版本的实例替换旧版本的实例,升级的过程中,业务流量会同时负载均衡分布到新老的实例上,因此业务不会中断。 最大无效实例数:每次滚动升级允许的最大无效实例数,如果等于实例数有断服风险(最小存活实例数 实例数 最大无效实例数)。 − 替换升级:将先把您工作负载的老版本实例删除,再安装指定的新版本,升级过程中业务会中断。 缩容策略:为工作负载删除提供一个时间窗,预留给生命周期中PreStop阶段执行命令。若超过此时间窗,进程仍未停止,该工作负载将被强制删除。 − 缩容时间窗 (s):请输入时间,该时间为工作负载停止前命令的执行时间窗(09999秒),默认30秒。 − 缩容优先级:可根据业务需要选择“优先减少新实例”或“优先减少老实例”。 迁移策略:当工作负载实例所在的节点不可用时,系统将实例重新调度到其它可用节点的时间窗。 − 迁移时间窗 (s):请输入时间,默认为300秒。 调度策略:您可以根据需要自由组合静态的全局调度策略或动态的运行时调度策略来实现自己的需求。具体请参见亲和反亲和性调度>调度策略概述。 Pod高级设置 − Pod标签:内置app标签在工作负载创建时指定,主要用于设置亲和性与反亲和性调度,暂不支持修改。您可以单击下方的“添加标签”增加标签。 说明: 客户端DNS配置:CCE集群内置DNS插件CoreDNS,为集群内的工作负载提供域名解析服务。详细使用方法请参见Kubernetes集群内置DNS配置说明。 − DNS策略: 追加域名解析配置:选择该配置后,将保留默认配置,以下“IP地址”和“搜索域”配置可能不生效。 替换域名解析配置:选择该配置后,将仅使用以下“IP地址”和“搜索域”配置进行域名解析。 继承Pod所在节点域名解析配置:将继承Pod所在节点的域名解析配置。 − IP地址:您可对自定义的域名配置域名服务器,值为一个或一组DNS IP地址,如“1.2.3.4”。 − 搜索域:定义域名的搜索域列表,当访问的域名不能被DNS解析时,会把该域名与搜索域列表中的域依次进行组合,并重新向DNS发起请求,直到域名被正确解析或者尝试完搜索域列表为止。 − 超时时间(s):查询超时时间,请自定义。 − ndots:表示域名中必须出现的“.”的个数,如果域名中的“.”的个数不小于ndots,则该域名为一个FQDN,操作系统会直接查询;如果域名中的“.”的个数小于ndots,操作系统会在搜索域中进行查询。 自定义指标监控:是指监控系统提供的一种指标收集机制,该机制允许工作负载在部署时自定义需要上报的指标名称以及获取这些指标数据的接入点信息,在应用运行时由监控系统按固定的频率访问接入点进行指标的收集。 性能管理配置:性能管理服务可协助您快速进行工作负载的问题定位与性能瓶颈分析。 步骤 5 配置完成后,单击“创建”,在创建成功页面单击“返回工作负载列表”,查看工作负载状态。 在工作负载列表中,当工作负载状态为“运行中”时,表示工作负载创建成功。工作负载状态不会实时更新,请刷新页面查看。 步骤 6 在“无状态负载 Deployment”页面的工作负载列表中,复制“外部访问地址”,可在浏览器中访问工作负载。 说明: 当工作负载访问方式设为“节点访问(NodePort)”并绑定弹性IP或设为“负载均衡 ( LoadBalancer )”时,才可以获取外部访问地址,可以访问外网。 工作负载列表页在超过500条以上时,将采用Kubernetes的分页机制进行分页。Kubernetes的分页机制:仅支持回到第一页和查看下一页,不支持查看上一页,且在分页显示的情况下,资源总数显示的是批量查询出的数目而不是真实总数。 通过kubectl命令行创建 本节以nginx工作负载为例,说明kubectl命令创建工作负载的方法。 前提条件 请参见通过kubectl操作CCE集群配置kubectl命令,使弹性云主机连接集群。 操作步骤 步骤 1 登录已配置好kubectl命令的弹性云主机。 步骤 2 创建一个名为nginxdeployment.yaml的描述文件。其中,nginxdeployment.yaml为自定义名称,您可以随意命名。 vi nginxdeployment.yaml 描述文件内容如下。此处仅为示例,deployment的详细说明请参见kubernetes官方文档。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx spec: containers: image: nginx imagePullPolicy: Always name: nginx imagePullSecrets: name: defaultsecret 以上yaml字段解释如下表。 deployment字段详解 字段名称 字段说明 必选/可选 apiVersion 表示API的版本号。 说明 集群版本为1.9之前的无状态应用apiVersion格式为extensions/v1beta1,1.9之后的集群兼容extensions/v1beta1和apps/v1两种格式Version,请根据集群版本输入。 必选 kind 创建的对象类别。 必选 metadata 资源对象的元数据定义。 必选 name deployment的名称。 必选 Spec 用户对deployment的详细描述的主体部分都在spec中给出。 必选 replicas 实例数量。 必选 selector 定义Deployment可管理的容器实例。 必选 strategy 升级类型。当前支持两种升级方式,默认为滚动升级。 RollingUpdate:滚动升级。 ReplaceUpdate:替换升级。 可选 template 描述创建的容器实例详细信息。 必选 metadata 元数据。 必选 labels metadata.labels定义容器标签。 可选 spec: containers image(必选):容器镜像名称。 imagePullPolicy(可选):获取镜像的策略,可选值包括Always(每次都尝试重新下载镜像)、Never(仅使用本地镜像)、IfNotPresent(如果本地有该镜像,则使用本地镜像,本地不存在时下载镜像),默认为Always。 name(必选):容器名称。 必选 imagePullSecrets Pull镜像时使用的secret名称。若使用私有镜像,该参数为必选。 需要Pull SWR容器镜像仓库的镜像时,参数值固定为defaultsecret。 当Pull第三方镜像仓库的镜像时,需设置为创建的secret名称。 可选 步骤 3 创建deployment。 kubectl create f nginxdeployment.yaml 回显如下表示已开始创建deployment。 deployment "nginx" created 步骤 4 查看deployment状态。 kubectl get pods deployment状态显示为Running,表示deployment已创建成功。 NAME READY STATUS RESTARTS AGE icagentm9dkt 0/0 Running 0 3d nginx1212400781qv313 1/1 Running 0 3d 参数解析: NAME:pod的名称 READY:已经部署完毕的pod副本数 STATUS:状态 RESTARTS:重启次数 AGE:已经运行的时间 步骤 5 若工作负载(即deployment)需要被访问(集群内访问或节点访问),您需要设置访问方式,具体请参见8 网络管理创建对应服务。
        来自:
        帮助文档
        云容器引擎
        用户指南
        旧版UI
        工作负载
        创建无状态负载(Deployment)
      • 创建虚拟私有云和子网
        参数 说明 取值样例 区域 不同区域的云服务产品之间内网互不相通,请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 广州4 名称 输入VPC的名称。要求如下: 长度范围为164位。 名称由中文、英文字母、数字、下划线()、点(.)组成。 vpctest IPv4网段 设置VPC的IPv4网段范围,VPC网段的选择需要考虑以下两点: IP地址数量:要为业务预留足够的IP地址,防止业务扩展给网络带来冲击。 IP地址网段:当前VPC与其他VPC、云下数据中心连通时,要避免网络两端的IP地址冲突,否则无法正常通信。 建议您使用RFC 1918中指定的私有IPv4地址范围,作为VPC的网段,具体如下: 10.0.0.0/824:IP地址范围为10.0.0.010.255.255.255,掩码范围824。 172.16.0.0/1224:IP地址范围为172.16.0.0172.31.255.255,掩码范围为1224。 192.168.0.0/1624:IP地址范围为192.168.0.0192.168.255.255,掩码范围为1624。 除上述地址外,若您必须使用非RFC 1918指定的私有IPv4地址范围,则必须排除以下系统预留地址和公网保留地址: 系统预留地址:100.64.0.0/10、214.0.0.0/7、198.18.0.0/15、169.254.0.0/16。 公网保留地址:0.0.0.0/8、127.0.0.0/8、240.0.0.0/4、255.255.255.255/32。 10.0.0.0/8 企业项目 创建VPC时,可以将VPC加入已启用的企业项目。 企业项目管理提供了一种按企业项目管理云资源的方式,帮助您实现以企业项目为基本单元的资源及人员的统一管理,默认项目为default。 default 高级配置 标签 单击“展开”按钮,展开折叠的高级配置区域,可以设置该参数。 您可以在创建VPC的时候为VPC绑定标签,标签用于标识云资源,可通过标签实现对云资源的分类和搜索。 键:vpckey1 值:vpc01 高级配置 描述 单击“展开”按钮,展开折叠的高级配置区域,可以设置该参数。 您可以根据需要在文本框中输入对该VPC的描述信息。描述信息内容不能超过255个字符,且不能包含“<”和“>”。
        来自:
        帮助文档
        虚拟私有云 VPC
        用户指南
        虚拟私有云和子网
        虚拟私有云
        创建虚拟私有云和子网
      • 对象存储官方事件源
        本文介绍对象存储作为事件源发布到事件总线EventBridge的事件类型。 前提条件 开通事件总线EventBridge并委托授权 对象储存打开事件上报开关,详细步骤如下: Python调用OpenAPI示例 结合上述示例,执行如下代码,打开指定存储桶的事件上报开关 plaintext def main(): params { "regionID": "bb9fdb42056f11eda1610242ac110002", 华东1地域ID "bucket": "您的桶名称", "bucketEventBridgeEnabled": True } resultpost(" params) print(result) if name "main": main() 接口返回以下内容即可 plaintext {"message": "SUCCESS", "description": "成功", "statusCode": 800} 事件类型 对象存储支持发布到事件总线EventBridge的事件类型如下所示。 事件类型 type参数值 对象解冻 s3:ObjectRestore:Post 拷贝上传 s3:ObjectCreated:Copy 不指定版本号删除多版本Bucket中对象 s3:ObjectRemoved:DeleteMarkerCreated 删除对象 s3:ObjectRemoved:Delete 分段上传对象 s3:ObjectCreated:CompleteMultipartUpload 通过Post上传对象 s3:ObjectCreated:Post 上传对象 s3:ObjectCreated:Put 删除存储桶 s3:DeleteBucket 创建存储桶 s3:CreateBucket 对象解冻 对象解冻时,事件总线EventBridge接收到的示例事件如下所示: plaintext { "id": "1724653958.796689.9a0364b9e99bb480dd25e1f0284c8555", "source": "ctyun.zos", "specversion": "1.0", "type": "s3:ObjectRestore:Post", "subject": "ctyun.zos:testregionid:s3testusertestothersub:testtestpass7109:testtestpass7109obj", "time": "20240826 06:32:38.796676Z", "data": { "userIdentity": { "principalId": "s3testusertestothersub" }, "responseElements": { "xamzrequestid": "80f2843fe96b45f1aff1a6a4c5d8b7bb.4726887.7909", "xamzid2": "482067" }, "s3": { "bucket": { "name": "testtestpass7109", "ownerIdentity": { "principalId": "s3testusertest" }, "arn": "arn:aws:s3:::testtestpass7109", "id": "80f2843fe96b45f1aff1a6a4c5d8b7bb.4726926.214" }, "object": { "key": "testtestpass7109obj", "size": 7, "etag": "9a0364b9e99bb480dd25e1f0284c8555", "versionId": "", "sequencer": "8621CC6619947C2F", "metadata": [ { "key": "xamzcontentsha256", "val": "e25caa2414479b291d0fc16aa4cb10655defc97f68d159e982f9790ebd706f80" }, { "key": "xamzdate", "val": "20240826T063238Z" } ] } } }, "datacontenttype": "application/json;charsetutf8", "ctyunaccountid": "s3testusertestctyunid", "ctyunuserid": "s3testusertestctyunuid", "ctyunresourceid": "", "ctyuneventbusname": "default", "ctyunregion": "testregionid" }
        来自:
        帮助文档
        事件总线
        用户指南
        事件总线
        事件源
        天翼云官方事件源
        对象存储官方事件源
      • 线下IDC通过专线和代理服务器接入HSS
        为代理服务器安装Nginx 1. 登录代理服务器 2. 检查yum源 检查yum源是否有nginx软件包,如果没有nginx软件包需完成yum源配置,并临时绑定公网IP,待安装结束之后再解绑公网IP。 远程登录代理服务器,执行以下命令检查yum源中是否存在nginx包。 EulerOS、CentOS、Red Hat等支持rpm安装软件的OS:yum list nginx Ubuntu、Debian等支持deb安装软件的OS:apt list nginx 3. 安装nginx 1. 执行以下命令使用yum安装nginx。 EulerOS、CentOS、Red Hat等支持rpm安装软件的OS:yum install y nginx Ubuntu、Debian等支持deb安装软件的OS:apt install –y nginx b.查看nginx是否安装成功。 EulerOS、CentOS、Red Hat等支持rpm安装软件的OS:自动执行安装,出现下图所示“Complete!”表示安装成功。 Ubuntu、Debian等支持deb安装软件的OS:执行命令pkg –l nginx,查看回显结果如下图所示,表示安装成功。 4. 配置Nginx 1. 执行以下命令进入nginx目录:cd /etc/nginx/ 2. 执行以下命令完成证书自签:openssl req new x509 nodes out server.pem keyout server.keydays 36500,命令执行后需填写证书相关信息,自定义填写即可。 5. 执行以下操作修改nginx.conf。 1. 依次执行以下命令修改nginx.conf:rm f nginx.conf;vi nginx.conf 2. 按“i”键进入编辑模式,并将以下内容复制粘贴到nginx.conf中。 3. plaintext user nginx; workerprocesses auto; errorlog /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/.conf; events { workerconnections 1024; } http { logformat main '$remoteaddr $remoteuser [$timelocal] "$request" ' '$status $bodybytessent "$httpreferer" ' '"$httpuseragent" "$httpxforwardedfor"'; accesslog /var/log/nginx/access.log main; sendfile on; tcpnopush on; tcpnodelay on; keepalivetimeout 65; typeshashmaxsize 2048; include /etc/nginx/mime.types; defaulttype application/octetstream;
        来自:
        帮助文档
        企业主机安全
        最佳实践
        线下IDC通过专线和代理服务器接入HSS
      • Java调用示例
        1. com.ffcs.ebp.ebpsdk.common.Response java 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 java 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 java 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
        Java调用示例
      • 1
      • ...
      • 142
      • 143
      • 144
      • 145
      • 146
      • ...
      • 147
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      安全隔离版OpenClaw

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

      天翼云新春焕新季

      云主机开年特惠28.8元/年,0元秒杀等你来抢!

      云上钜惠

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

      中小企业服务商合作专区

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

      出海产品促销专区

      爆款云主机低至2折,高性价比,不限新老速来抢购!

      天翼云奖励推广计划

      加入成为云推官,推荐新用户注册下单得现金奖励

      产品推荐

      物理机 DPS

      多活容灾服务

      GPU云主机

      镜像服务 IMS

      弹性高性能计算 E-HPC

      天翼云CTyunOS系统

      AI Store

      公共算力服务

      模型推理服务

      推荐文档

      玩转天翼云⑤:windows修改mysql目录

      如何退换发票?

      盘符客户端

      创建文件和文件夹备份

      • 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号