爆款云主机低至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云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      内容审核_相关内容
      • 统一身份认证介绍
        本文将为您介绍云专线统一身份认证与权限管理。 基本介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限,具体介绍说明详见:产品定义。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素左作用(Effect)、权限集(Action)等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 1、系统策略 :预置的系统策略,您只能使用不能修改。云专线相关的系统策略包含如下: CDA admin:云专线服务的管理者权限,包含云专线服务所有控制权限(不含订单类权限); CDA viewer:云专线服务的观察者权限,包含云专线服务的列表页与详情页面权限; 2、自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,具体配置说明详见:创建自定义策略。
        来自:
        帮助文档
        云专线 CDA
        用户指南
        统一身份认证与权限管理
        统一身份认证介绍
      • 统一身份认证介绍
        本文为您介绍统一身份认证服务的权限配置管理方式 基本介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限,具体介绍说明详见:产品定义。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素左作用(Effect)、权限集(Action)等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。云间高速EC相关的系统策略包含如下: EC Admin:云间高速服务的管理者权限,包含云间高速所有控制权限; EC Viewer:云间高速服务的观察者权限,包含云间高速服务的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,具体配置说明详见:创建自定义策略。
        来自:
        帮助文档
        云间高速(标准版)EC
        用户指南
        云间高速统一身份认证与权限管理
        统一身份认证介绍
      • 修改大模型学习机登录密码
        本文向您介绍如何修改大模型学习机的登录密码。 本文向您介绍如何修改大模型学习机的登录密码,以下为修改大模型学习机的登录密码的文字教程。 1. 在云主机控制台,选择您购买云主机的地域,点击云主机的操作更多重置密码。 2. 点击“远程登录”按钮。 3. 进入虚机内部,输入 root 回车,在password处输入刚刚修改的密码(密码不可见,请输入完直接回车)。 4. 点击右上角的“粘贴输入”,在输入框中粘贴以下指令,点击“确定发送”,点击虚机屏幕后回车发送指令。 修改文本大模型密码指令: plaintext vim /root/textgenerationwebui/gradioauth.txt 或 修改图像生成大模型密码指令: plaintext vim /root/stablediffusionwebui/gradioauth.txt 进入修改对应大模型登录密码界面。 5. 改user和user后的密码后,按Esc退出编辑模式。再次点击右上角的“粘贴输入”,在输入框中粘贴 :wq 指令,点击“确定发送”,点击虚机屏幕后回车发送指令。返回以下内容表示修改成功。 6. 再次点击右上角的“粘贴输入”,在输入框中依次粘贴输入以下命令,“确认发送”后点击虚机屏幕,回车。使修改的大模型密码登录密码生效。 plaintext cd /root plaintext sh restartllamawebui.sh plaintext sh restartsdwebui.sh 此时密码修改成功,您可以通过使用修改后的密码登录大模型。
        来自:
        帮助文档
        弹性云主机 ECS
        最佳实践
        大模型学习机最佳实践
        修改大模型学习机登录密码
      • 统一身份认证IAM概述
        在协同使用资源的场景下,如果您需要根据实际的职责权限情况配置用户使用权限,可使用统一身份认证(Identity and Access Management,简称IAM)服务,创建多个IAM用户并为其授予不同的权限,实现不同IAM子用户可以分权管理不同的资源,从而提高管理效率,降低信息泄露风险。通过IAM可实现精细化权限管理、安全访问、批量管理用户权限、委托其他帐号管理资源等功能。您可以创建并为IAM用户或用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 IAM是天翼云提供的免费基础服务,您只需为购买资源进行付费。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,限制不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略:预置的系统策略,您只能使用不能修改。云服务器ECS相关的系统策略包含如下: Admin:弹性伸缩服务的管理者权限,包含弹性伸缩所有控制权限(不含订单类权限)。 Viewer:弹性伸缩服务的观察者权限,包含弹性伸缩服务的列表页与详情页面权限。 自定义策略:您按需自行创建和维护的权限策略。
        来自:
        帮助文档
        弹性伸缩服务 AS
        用户指南
        弹性伸缩CTIAM
        统一身份认证IAM概述
      • 统一身份认证与权限管理
        本文介绍虚拟私有云统一身份认证与权限管理。 统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等,更多信息,请参见“自定义策略“。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。虚拟私有云相关的系统策略包含如下: vpc admin:虚拟私有云服务的管理者权限,包含虚拟私有云服务所有控制权限(不含订单类权限); vpc viewer: 虚拟私有云服务的观察者权限,包含虚拟私有云服务的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见“自定义策略“。
        来自:
      • 统一身份认证与权限管理
        本文介绍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终端节点
        用户指南
        统一身份认证与权限管理
      • 统一身份认证IAM介绍
        本文为您介绍统一身份认证IAM。 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等,更多信息,请参见“第2步:创建自定义策略”。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。云硬盘备份VBS相关的系统策略包含如下: VBS Admin:云硬盘备份服务的管理者权限,包含云硬盘备份所有控制权限(不含订单类权限); VBS Viewer:云硬盘备份服务的观察者权限,包含云硬盘备份服务的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见“[第2步:创建自定义策略](
        来自:
        帮助文档
        云硬盘备份 VBS
        用户指南
        权限管理
        统一身份认证IAM介绍
      • 统一身份认证与权限管理
        本文介绍对等连接服务统一身份认证与权限管理。 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用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 :预置的系统策略,您只能使用不能修改。对等连接相关的系统策略包含如下: peering admin:对等连接服务的管理者权限,包含对等连接服务所有控制权限(不含订单类权限); peering viewer: 对等连接服务的观察者权限,包含对等连接服务的列表页与详情页面权限; 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见“2.1.2 创建自定义策略“。
        来自:
        帮助文档
        对等连接(文档停止维护)
        用户指南
        统一身份认证与权限管理
      • CC攻击防护规则类
        本节介绍 Web应用防火墙(独享版) CC攻击防护规则类问题。 如何配置CC防护规则? 当业务接口被HTTP Flood攻击时,可以通过Web应用防火墙Console界面设置CC防护规则,从而缓解业务压力。用户可根据业务类型,配置CC防护规则,可配置以下内容: 每个Web访问者在规定时间内允许访问的次数。 根据IP、Cookie或者Referer字段区分Web访问者。 当访问超过限制时,对其访问进行阻断或者发送验证码验证。 具体的配置规则请参见配置CC攻击防护规则章节。 在什么情况下使用Cookie区分用户? 在配置CC防护规则时,当IP无法精确区分用户,例如多个用户共享一个出口IP时,用户可以使用Cookie区分用户。 用户使用Cookie区分用户时,如果Cookie中带有用户相关的“session”等“key”值,直接设置该“key”值作为区分用户的依据。 CC规则里“限速频率”和“放行频率”的区别? “限速频率”是单个Web访问者在限速周期内可以正常访问的次数,如果超过该访问次数,WAF将根据配置的CC攻击防护规则“防护动作”来处理。例如,“限速频率”设置为“10次/60秒”,“防护动作”设置为“阻断”,则表示60秒只能有10次访问请求,一旦在60秒内访问请求超过10次,WAF就直接阻断该Web访问者访问目标URL。 配置CC防护规则时,如果选择了“高级”工作模式,且“防护动作”配置为“动态阻断”,则除了需要配置“限速频率”外,还需要配置“放行频率”。 如果在一个限速周期内,访问的请求频率超过“限速频率”触发了拦截,那么,在下一个限速周期内,拦截阈值将动态调整为“放行频率”。且“放行频率”为0时,表示上个周期发生拦截后,下一个周期所有满足规则条件的请求都会被拦截。 区别: “放行频率”和“限速频率”的限速周期一致。 “放行频率”小于等于“限速频率”,且“放行频率”可为0。
        来自:
        帮助文档
        Web应用防火墙(独享版)
        常见问题
        防护规则配置
        CC攻击防护规则类
      • 云监控权限策略
        本文为您介绍云监控IAM权限策略。 统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 1、身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。 IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 2、权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素“Action”“Effect”等信息。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 系统策略 : 预置的系统策略,您只能使用不能修改,具体说明请查看系统策略。 其中云监控服务相关的系统策略包含如下: 云监控管理者(admin) :云监控服务的管理者权限,包含云监控服务的所有控制权限; 云监控查看者(viewer):云监控服务的查看者权限,包含资源列表、告警规则列表查看等权限; 自定义策略 : 您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见创建自定义策略。
        来自:
        帮助文档
        云监控服务
        用户指南
        权限管理
        云监控权限策略
      • 认证与访问控制
        介绍分布式消息服务Kafka认证与访问控制方式 分布式消息服务Kafka支持CTIAM身份认证和多种访问控制,多维度保障您数据的安全。 身份认证 CTIAM 统一身份认证(Identity and Access Management, 简称:CTIAM)是提供用户进行权限管理的基础服务,可以帮助您安全的控制天翼云服务和资源的访问及操作权限,包括:用户身份认证、权限分配、访问控制等功能。具体介绍请参考统一身份认证产品介绍。 您可以创建IAM用户,并为其设置关联分布式消息服务Kafka实例权限,该用户就可以通过用户名和密码访问授权的实例资源。具体请参见统一身份认证快速入门创建IAM用户。 访问控制 权限控制 购买分布式消息服务Kafka实例之后,您可以使用CTIAM为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,通过CTIAM进行精细的权限管理。 VPC和子网 虚拟私有云(Virtual Private Cloud,VPC)为分布式消息服务Kafka构建隔离、私密的虚拟网络环境,提升数据库的安全性,并简化用户的网络部署。您可以完全掌控自己的专有网络,VPC丰富的功能帮助您灵活管理云上网络,包括创建子网、设置安全组和网络ACL、管理路由表、申请弹性公网IP和带宽等。通过子网与其他网络隔离,独享网络资源,提高网络安全性。具体内容请参见虚拟私有云用户指南创建虚拟私有云和子网 。 安全组 安全组是一个逻辑上的分组,可以为同一个虚拟私有云内具有相同安全保护需求并相互信任的Kafka实例提供相同的访问策略。您可以通过为数据库实例设置安全组,开通需访问Kafka实例的IP地址和端口,来保证保障其运行环境的安全性和稳定性。具体请参见配置安全组
        来自:
        帮助文档
        分布式消息服务Kafka
        产品简介
        安全
        认证与访问控制
      • 统一身份认证介绍
        本文将为您介绍天翼云SDWAN统一身份认证与权限管理。 基本介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限,具体介绍说明详见:产品定义。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他帐号管理资源等。 身份管理 访问控制IAM中的身份包括IAM用户、IAM用户组。IAM用户有确定的登录密码和访问密钥,IAM用户组则用于分类职责相同的IAM用户,IAM用户和IAM用户组均可以被赋予一组权限策略。在需要协同使用资源的场景中,避免直接共享天翼云账号的密码等信息,缩小不同IAM子用户的信息可见范围,可为IAM子用户和IAM用户组按需授权,即使不慎泄露机密信息,也不会危及天翼云账号下的所有资源。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素左作用(Effect)、权限集(Action)等。为IAM用户、IAM用户组在全局授权或企业项目授权中添加一组权限策略后,即可让其有权限访问指定资源。 权限策略分为系统策略和自定义策略: 1. 系统策略 :预置的系统策略,您只能使用不能修改。云专线相关的系统策略包含如下: sdwan admin:天翼云SDWAN服务的管理者权限,包含天翼云SDWAN服务所有控制权限; sdwan viewer:天翼云SDWAN服务的观察者权限,包含天翼云SDWAN服务的列表页与详情页面权限; 2. 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,具体配置说明详见:创建自定义策略。
        来自:
        帮助文档
        天翼云SD-WAN
        统一身份认证与权限管理
        统一身份认证介绍
      • 文件格式介绍
        5.使用正则表达式分隔字段 这个功能是针对一些复杂的半结构化文本,例如日志文件的解析,详见: 正则表达式分隔半结构化文本。 6.首行为标题行 这个参数是针对CSV文件导出到其它地方的场景,如果源端指定了该参数,CDM在抽取数据时将第一行作为标题行。在传输CSV文件的时候会跳过标题行,这时源端抽取的行数,会比目的端写入的行数多一行,并在日志文件中进行说明跳过了标题行。 7.写入文件大小 这个参数是针对数据库导出到CSV文件的场景,如果一张表的数据量比较大,那么导出到CSV文件的时候,会生成一个很大的文件,有时会不方便下载或查看。这时可以在目的端指定该参数,这样会生成多个指定大小的CSV文件,避免导出的文件过大。该参数的数据类型为整型,单位为MB。 JSON格式 这里主要介绍JSON文件格式的以下内容: CDM支持解析的JSON类型 记录节点 从JSON文件复制数据 1.CDM支持解析的JSON 类型:JSON对象、JSON数组。 JSON对象:JSON文件包含单个对象,或者以行分隔/串连的多个对象。 i.单一对象JSON: { "took" : 190, "timedout" : false, "total" : 1000001, "maxscore" : 1.0 ii.行分隔的JSON对象: {"took" : 188, "timedout" :false, "total" : 1000003, "maxscore" : 1.0 } {"took" : 189, "timedout" : false, "total" :1000004, "maxscore" : 1.0 } iii. 串连的JSON对象: { "took": 190, "timedout": false, "total": 1000001, "maxscore": 1.0 } { "took": 191, "timedout": false, "total": 1000002, "maxscore": 1.0 } JSON数组:JSON文件是包含多个JSON对象的数组。 [{ "took" : 190, "timedout" : false, "total" : 1000001, "maxscore" : 1.0 },{ "took" : 191, "timedout" : false, "total" : 1000001, "maxscore" : 1.0 }]
        来自:
        帮助文档
        数据治理中心 DataArts Studio
        用户指南
        数据集成
        进阶实践
        文件格式介绍
      • 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调用示例
      • 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()); } }
        来自:
      • 配置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源端参数
      • 备份HDFS业务数据
        操作步骤 1.在FusionInsight Manager,选择“运维 > 备份恢复 > 备份管理”。 2.单击“创建”。 3.在“任务名称”填写备份任务的名称。 4.在“备份对象”选择待操作的集群。 5.在“备份类型”选择备份任务的运行类型。 “周期备份”表示按周期自动执行备份,“手动备份”表示由手工执行备份。 周期备份参数 参数名称 描述 开始时间 任务第一次启动的时间。 周期 任务下次启动,与上一次运行的时间间隔,支持按“小时”或按“天”。 备份策略 首次全量备份,后续增量备份 每次都全量备份 每n次进行一次全量备份 说明 备份Manager数据和组件元数据时不支持增量备份,仅支持“每次都全量备份”。 如果“路径类型”要使用NFS或CIFS,不能使用增量备份功能。因为在NFS或CIFS备份时使用增量备份时,每次增量备份都会刷新最近一次全量备份的备份数据,所以不会产生新的恢复点。 6.在“备份配置”,勾选“HDFS”。 7.在“HDFS”的“路径类型”,选择一个备份目录的类型。 备份目录支持以下类型: “RemoteHDFS”:表示将备份文件保存在备集群的HDFS目录。 选择此参数值,还需要配置以下参数: “目的端NameService名称”:填写备集群的NameService名称。可以输入集群内置的远端集群的NameService名称(haclusterX,haclusterX1,haclusterX2,haclusterX3,haclusterX4),也可输入其他已配置的远端集群NameService名称。 “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。 “目的端NameNode IP地址”:填写备集群NameNode业务平面IP地址,支持主节点或备节点。 “目的端路径”:填写备集群保存备份数据的HDFS目录。不支持填写HDFS中的隐藏目录,例如快照或回收站目录;也不支持默认的系统目录,例如“/hbase”或“/user/hbase/backup”。 “最大备份数”:填写备份目录中可保留的备份文件集数量。 “队列名称”:填写备份任务执行时使用的YARN队列的名称。需和集群中已存在且状态正常的队列名称相同。 “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。 “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。 “NameService名称”:选择备份目录对应的NameService名称。默认值为“hacluster”。 “NFS”:表示将备份文件通过NFS协议保存在NAS中。 选择此参数值,还需要配置以下参数: “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。 “服务器IP地址”:填写NAS服务器IP地址。 “最大备份数”:填写备份目录中可保留的备份文件集数量。 “服务器共享路径”:填写用户配置的NAS服务器共享目录。 “队列名称”:填写备份任务执行时使用的YARN队列的名称。需和集群中已存在且状态正常的队列名称相同。 “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。 “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。 “NameService名称”:选择备份目录对应的NameService名称。默认值为“hacluster”。 “CIFS”:表示将备份文件通过CIFS协议保存在NAS中。选择此参数值,还需要配置以下参数: “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。 “服务器IP地址”:填写NAS服务器IP地址。 “端口号”:填写CIFS协议连接NAS服务器使用的端口号,默认值为“445”。 “用户名”:填写配置CIFS协议时设置的用户名。 “密码”:填写配置CIFS协议时设置的密码。 “最大备份数”:填写备份目录中可保留的备份文件集数量。 “服务器共享路径”:填写用户配置的NAS服务器共享目录。 “队列名称”:填写备份任务执行时使用的YARN队列的名称。需和集群中已存在且状态正常的队列名称相同。 “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。 “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。 “NameService名称”:选择备份目录对应的NameService名称。默认值为“hacluster”。 “SFTP”:表示将备份文件通过SFTP协议保存到服务器中。 选择此参数值,还需要配置以下参数: “IP 模式”:目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式,如IPv4或者IPv6。 “服务器IP地址”:填写备份数据的服务器IP地址。 “端口号”:填写SFTP协议连接备份服务器使用的端口号,默认值为“22”。 “用户名”:填写使用SFTP协议连接服务器时的用户名。 “密码”:填写使用SFTP协议连接服务器时的密码。 “服务器共享路径”:SFTP服务器上的备份路径。 “最大备份数”:填写备份目录中可保留的备份文件集数量。 “队列名称”:填写备份任务执行时使用的YARN队列的名称。需和集群中已存在且状态正常的队列名称相同。 “最大map数”:填写执行MapReduce任务的最大map数,默认值为“20”。 “单个map的最大带宽(MB/s)”:填写单个map最大带宽,默认值为“100”。 “NameService名称”:选择备份目录对应的NameService名称。默认值为“hacluster”。 8.在“最大恢复点个数”填写备份任务在本集群中备份可保留的快照数量。 9.在HDFS“备份内容”中,根据业务需要选择一个或多个需要备份的HDFS目录。 支持两种方式选择备份数据: 直接选择 单击导航中某个目录的名称,将展开显示此目录中的所有子目录,勾选指定的目录。 正则表达式筛选 a. 单击“正则表达式输入”。 b. 根据界面提示,在第一个输入框填写目录的父目录完整路径,需要与当前存在的目录完全匹配。例如“/tmp”。 c. 在第二个输入框输入正则表达式,支持标准正则表达式。例如要筛选父目录中所有的文件或子目录,输入“([sS]?)”。例如要筛选命名规则为字母数字组合的文件,如file1 可输入“filed ”。 d. 单击“刷新”,在“目录名称”查看筛选的目录。 e. 单击“同步”保存筛选结果。 说明 输入正则表达式时,可以使用和增加或删除一条表达式。 如果已选择的表或目录不正确,可以单击“清除选中节点”清除勾选。 备份目录不可包含长期写入 10.单击“校验”查看备份任务的配置是否正确。 校验失败可能存在以下原因: 目的端NameNode IP地址不正确。 队列名称不正确。 待备份的数据文件所在HDFS路径的父目录或子目录存在HDFS快照。 待备份的目录或表不存在。 NameService名称不正确。 11.单击“确定”保存。 12.在备份任务列表中已创建任务的“操作”列,选择“更多 > 即时备份”,开始执行备份任务。 备份任务执行完成后,系统自动在备集群的备份路径中为每个备份任务创建子目录,目录名为“ 备份任务名数据源任务创建时间” ,数据源每次备份的最新备份文件保存在此目录中。所有备份文件集保存在对应的快照目录中。
        来自:
        帮助文档
        翼MapReduce
        用户指南
        FusionInsight Manager操作指导(适用于3.x)
        备份恢复管理
        备份数据
        备份HDFS业务数据
      • 创建VPN网关
        操作步骤 1. 登录管理控制台,单击“网络 > VPN”进入VPN控制台。 2. 在左侧导航栏,单击“虚拟专用网络 > 企业版VPN网关”。 3. 在“VPN网关”界面,单击“创建VPN网关”。 4. 根据界面提示配置参数,单击“立即创建”。 表VPN网关参数说明 参数 说明 取值样例 计费模式 按需计费:后付费方式,VPN网关和VPN连接组按使用时长收取费用,计费周期为1小时。 按需计费 区域 选择靠近您所在地域的区域可以降低网络时延,从而提高访问速度。 不同区域的资源之间网络不互通。 请根据实际需要进行选择 名称 VPN网关的名称,只能由中文、英文字母、数字、下划线、中划线、点组成。 vpngw001 网络类型 公网:VPN网关通过公网建立VPN连接。 私网:VPN网关通过私网建立VPN连接。 公网 协议类型 支持“IPv4”和“IPv6”两种类型。 IPv6 关联模式 虚拟私有云 通过VPC向对端网关或本端子网内服务器发送通信消息。 企业路由器 通过ER向对端网关或ER下所有VPC所在子网发送通信消息。 说明 该场景下需要关注企业路由器的路由表条数规格限制。如果对端网关和VPN网关发送的路由条数超过企业路由器的规格,则企业路由器将无法学习到超出部分的路由信息,最终导致VPN网关和对端网关之间的流量不通。 虚拟私有云 虚拟私有云 选择虚拟私有云VPC信息。 vpc001(192.168.0.0/16) 企业路由器 仅“关联模式”采用“企业路由器”时需要配置。 选择企业路由器ER信息。 er001 互联子网 用于VPN网关和VPC通信,请确保选择的互联子网存在4个及以上可分配的IP地址。 192.168.66.0/24 本端子网 VPC与对端网关对应数据中心互通的子网。 选择子网选择本 VPC子网信息。 输入网段 可以输入本VPC下的子网信息;也可以输入与本VPC建立了对等网络的VPC子网信息。 192.168.1.0/24,192.168.2.0/24 BGP ASN VPN网关会根据输入值创建相应的ASN,VPN网关和对端网关的BGP ASN需要不同。 64512 可用区 可用区是指在同一地域内,电力和网络互相独立的物理区域。在同一VPC网络内可用区与可用区之间内网互通,可用区之间能做到物理隔离。 当存在两个及以上可用区时,必须选择两个可用区。 部署在两个可用区的VPN网关具备更高的可用性。建议您根据VPC内资源所在的可用区选择网关的可用区。 当仅存在一个可用区时,可选择此可用区创建VPN网关。 可用区1、可用区2 VPN连接组数 VPN网关默认提供10个免费的VPN连接组。 如果用户侧数据中心只有一个公网出口网关,所有服务器(或用户主机)都通过该网关连接至Internet:这种情况需要配置一个VPN连接组,即VPN网关的两个EIP分别配置一条VPN连接和用户侧出口网关通信。 如果用户侧数据中心有两个公网出口网关,所有服务器(或用户主机)通过两个网关连接至Internet:这种情况需要配置两个VPN连接组,即VPN网关的两个EIP分别配置一条VPN连接和两个用户侧出口网关通信。 10 HA模式 双活:主EIP和主EIP2均与对端网关建立VPN连接,但只有一条VPN连接进行数据交互。当其中一条VPN连接发生故障时,数据交互切换至另一条VPN连接。 主备:主EIP与备EIP均与对端网关建立VPN连接,默认情况下流量仅通过主链路进行传输。如果主链路故障,流量自动切换至备链路进行传输;主链路恢复正常后,流量回切至主链路进行传输。 双活 主EIP 用于VPN网关和对端网关进行网络连接。 现在创建:创建新EIP。 使用已有:使用已有EIP。 现在创建 带宽大小 EIP对应带宽大小,单位:Mbit/s。 所有使用该EIP创建的VPN连接均会分摊占用该EIP的带宽大小,所有VPN连接的带宽总和不能超过该EIP的带宽大小。当网络流量超过EIP的带宽大小时,有可能造成网络拥塞导致VPN连接中断,请提前做好带宽规划。 支持在云监控中配置告警规则对带宽进行监控。支持用户在允许的带宽范围内自定义带宽大小。 10 Mbit/s 带宽名称 EIP对应带宽对象的名称。 Vpngwbandwidth1 主EIP2 一个VPN网关需要绑定一组弹性公网IP(即主EIP、主EIP2),每个公网IP可以独立规划带宽。 现在创建 备EIP 一个VPN网关需要绑定一组弹性公网IP(即主/备EIP),每个公网IP可以独立规划带宽。 说明 VPN网关“计费模式”为“按需计费”场景下,若备EIP为按流量计费,强烈建议用户在云监控中配置告警规则对备EIP进行监控,避免因VPN连接故障、主链路切换至备链路导致的流量费用超支问题。 如何在云监控中对EIP配置告警规则,请参见《弹性IP用户指南》。 现在创建 公网带宽 按需计费支持两种计费方式:按带宽计费/按流量计费。 按带宽计费:指定带宽上限,按使用时间计费,与使用的流量无关。 按流量计费:指定带宽上限,按实际使用的出云流量计费,与使用时间无关。 按流量计费 带宽大小 EIP对应带宽大小,单位Mbit/s。 所有使用该EIP创建的VPN连接均会分摊占用该EIP的带宽大小,所有VPN连接的带宽总和不能超过该EIP的带宽大小。当网络流量超过EIP的带宽大小时,有可能造成网络拥塞导致VPN连接中断,请提前做好带宽规划。 支持在云监控中配置告警规则对带宽进行监控。支持用户在允许的带宽范围内自定义带宽大小。 10 Mbit/s 带宽名称 EIP对应带宽对象的名称。 Vpngwbandwidth2 企业项目 创建VPN时,可以将VPN加入已启用的企业项目。 企业项目管理提供了一种按企业项目管理云资源的方式,帮助您实现以企业项目为基本单元的资源及人员的统一管理,默认项目为default。 关于创建和管理企业项目的详情,请参见《企业项目管理用户指南》。 default 高级配置 仅“网络类型”为“私网”、“关联模式”采用“虚拟私有云”时需要配置。 选择:适用于同租户场景,选择本租户下接入虚拟私有云、接入子网、接入IP。 输入:适用于跨租户场景,填写接入项目、接入账号、接入虚拟私有云和接入子网。 选择 接入虚拟私有云 仅“关联模式”为“虚拟私有云”、“网络类型”为“私网”时需要配置。 当VPN网关的南北向需要连接不同的虚拟私有云时,设置北向的虚拟私有云为该接入虚拟私有云。 VPN网关关联的虚拟私有云为南向业务虚拟私有云。 选择“与网关关联的虚拟私有云一致” 接入子网 缺省情况下,VPN网关从关联的虚拟私有云的互联子网接入。当VPN网关需要从指定子网接入时设置。 选择“与互联子网一致” 5. (可选)对于国密型网关,创建后需要上传VPN网关证书,否则VPN连接将无法建立。 上传VPN网关证书的相关操作请参见“上传VPN网关证书”章节内容。
        来自:
        帮助文档
        VPN连接
        用户指南
        企业版VPN网关管理
        创建VPN网关
      • 修改自定义参数模板
        参数名 参数解释 取值范围 默认值 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版
        用户指南
        参数模板
        查看参数模板信息
      • 修改实例配置参数
        参数名 参数解释 取值范围 默认值 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版
        用户指南
        实例配置管理
        修改实例配置参数
      • 安装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
      • 实例运行快照
        本页介绍天翼云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. 在快照对比对话框,选择要对比的快照,单击确定可查看快照对比信息。
        来自:
      • 认证与访问控制
        本节主要介绍分布式缓存服务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版本产品文档
        管理平台使用手册
        实例监控
        实例运行快照监控
      • 容器水平伸缩(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)
      • 权限管理概述
        本节为您介绍权限管理的概念。 在协同使用资源的场景下,如果您需要根据实际的职责权限情况配置用户使用权限,可使用 统一身份认证(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
        用户指南
        权限管理
        权限管理概述
      • 在天翼云使用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:云助手的观察者权限,包含云助手的列表页与详情页面权限。 自定义策略:您按需自行创建和维护的权限策略。
        来自:
        帮助文档
        弹性云主机 ECS
        用户指南
        运维
        云助手
        权限管理概述
      • 统一身份认证与权限管理
        统一身份认证IAM介绍 统一身份认证(Identity and Access Management,简称IAM)服务,是提供用户进行权限管理的基础服务,可以帮助您安全的控制云服务和资源的访问及操作权限。 IAM为您提供的主要功能包括:精细的权限管理、安全访问、通过用户组批量管理用户权限、委托其他账号管理资源等。 使用前您需了解常用的基本概念,包括:帐号、IAM用户、用户组、身份凭证、授权、权限、项目、委托、身份凭证等,详细请查看:术语解释。 IAM应用场景 IAM策略主要面向对同租户帐号下,对不同IAM用户授权的场景: 您可以为不同操作人员或应用程序创建不同IAM用户,并授予IAM用户刚好能完成工作所需的权限,比如文件系统的查看权限,进行最小粒度授权管理。 新创建的IAM用户可以使用自己的用户名和密码登录云服务平台,实现多用户协同操作时无需分享帐号的密码的安全要求。 场景实例说明请查看:入门说明。 操作步骤 关于IAM功能的操作步骤请参见快速入门统一身份认证(一类节点)。 权限管理 统一身份认证IAM通过权限策略描述授权的具体内容,权限策略包括固定的基本元素"Action""Effect"等更多信息。 系统策略 :预置的系统策略,您只能使用不能修改,具体说明请查看系统策略。 弹性文件服务预置的系统策略包含如下: sfs admin:弹性文件服务的管理者权限,包含弹性文件服务所有控制权限(不包含订单类权限)。 sfs viewer:弹性文件服务的观察者权限,包含弹性文件服务的列表页与详情页页面权限。 自定义策略 :您按需自行创建和维护的权限策略,关于自定义策略的操作和示例,请参见创建自定义策略。
        来自:
        帮助文档
        弹性文件服务 SFS
        用户指南
        高级管理
        统一身份认证与权限管理
      • 1
      • ...
      • 158
      • 159
      • 160
      • 161
      • 162
      • ...
      • 163
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      云聚517 · 好价翼起拼

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

      安全隔离版OpenClaw

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

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

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

      青云志云端助力计划

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

      企业出海解决方案

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

      天翼云信创专区

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

      中小企业服务商合作专区

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

      云上钜惠

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

      产品推荐

      多活容灾服务 MDR

      弹性伸缩服务 AS

      弹性高性能计算 E-HPC

      天翼云CTyunOS系统

      AI Store

      科研助手

      一站式智算服务平台

      智算一体机

      人脸比对

      推荐文档

      扶持政策

      管理只读实例

      云课堂 第十课:物理裸机配置如何转换为天翼云云主机配置

      天翼云进阶之路⑦:怎么设置sql2008数据库最大服务器内存

      CDN快速入门

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