华为云用户手册

  • URI GET /v5/{project_id}/asset/auto-launchs 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id 最小长度:1 最大长度:256 表2 Query参数 参数 是否必选 参数类型 描述 host_id 否 String 主机id 最小长度:1 最大长度:128 host_name 否 String 主机名称 最小长度:1 最大长度:128 name 否 String 自启动项名称 最小长度:1 最大长度:256 host_ip 否 String 主机ip 最小长度:1 最大长度:128 type 否 String 自启动项类型 最小长度:1 最大长度:128 enterprise_project_id 否 String 企业项目 最小长度:1 最大长度:256 limit 否 Integer 默认10 最小值:10 最大值:100 缺省值:10 offset 否 Integer 默认是0 最小值:0 最大值:10000 缺省值:0 part_match 否 Boolean 是否模糊匹配,默认false表示精确匹配
  • 响应示例 状态码: 200 服务器上的漏洞列表 { "data_list" : [ { "app_list" : [ { "app_name" : "Apache Log4j API(Apache Log4j API)", "app_version" : "2.8.2", "upgrade_version" : "2.8.3", "app_path" : "/CloudResetPwdUpdateAgent/lib/log4j-api-2.8.2.jar" }, { "app_name" : "Apache Log4j Core(Apache Log4j Core)", "app_version" : "2.8.2", "upgrade_version" : "2.8.3", "app_path" : "/CloudResetPwdUpdateAgent/lib/log4j-api-2.8.2.jar" } ], "app_name" : "Apache Log4j API(Apache Log4j API)", "app_path" : "/CloudResetPwdUpdateAgent/lib/log4j-api-2.8.2.jar", "app_version" : "2.8.2", "cve_list" : [ { "cve_id" : "CVE-2021-45046", "cvss" : 9 } ], "description" : "发现在某些非默认配置中, Apache Log4j 2.15.0中针对CVE-2021-44228的修复不完整。当日志记录配置使用具有上下文查找(例如$${ctx:loginId})或线程上下文映射模式(%X, %mdc或%MDC)使用JNDI查找模式构建恶意输入数据,从而在某些环境中导致信息泄漏和远程代码执行。Log4j 2.16.0 (Java 8)和2.12.2 (Java 7)通过删除对消息查找模式的支持并在默认情况下禁用JNDI功能来修复此问题。", "first_scan_time" : 1688956612533, "is_affect_business" : true, "label_list" : [ ], "repair_necessity" : "Critical", "scan_time" : 1690469489713, "severity_level" : "Critical", "repair_cmd" : "yum update tcpdump", "solution_detail" : "针对该漏洞的官方修复建议已发布,您可点击链接按照建议进行修复:\nhttps://logging.apache.org/log4j/2.x/security.html\n针对该漏洞的补丁可参考:\nhttps://www.oracle.com/security-alerts/cpujan2022.html\n针对该漏洞的非官方修复建议可参考:\nhttp://www.openwall.com/lists/oss-security/2021/12/14/4\nhttps://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00646.html\nhttps://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-apache-log4j-qRuKNEbd\nhttp://www.openwall.com/lists/oss-security/2021/12/15/3\nhttps://cert-portal.siemens.com/productcert/pdf/ssa-661247.pdf\nhttps://www.kb.cert.org/vuls/id/930724\nhttps://cert-portal.siemens.com/productcert/pdf/ssa-714170.pdf\nhttps://www.debian.org/security/2021/dsa-5022\nhttps://www.oracle.com/security-alerts/alert-cve-2021-44228.html\nhttps://psirt.global.sonicwall.com/vuln-detail/SNWLID-2021-0032\nhttp://www.openwall.com/lists/oss-security/2021/12/18/1\nhttps://cert-portal.siemens.com/productcert/pdf/ssa-397453.pdf\nhttps://cert-portal.siemens.com/productcert/pdf/ssa-479842.pdf\nhttps://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/EOKPQGV24RRBBI4TBZUDQMM4MEH7MXCY/\nhttps://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/SIG7FZULMNK2XF6FZRU4VWYDQXNMUGAJ/\n针对该漏洞的漏洞利用/POC已曝光,可参考下方链接进行验证:\nhttps://github.com/X1pe0/Log4J-Scan-Win\nhttps://github.com/cckuailong/Log4j_CVE-2021-45046\nhttps://github.com/BobTheShoplifter/CVE-2021-45046-Info\nhttps://github.com/tejas-nagchandi/CVE-2021-45046\nhttps://github.com/pravin-pp/log4j2-CVE-2021-45046\nhttps://github.com/mergebase/log4j-samples\nhttps://github.com/lukepasek/log4jjndilookupremove\nhttps://github.com/ludy-dev/cve-2021-45046\nhttps://github.com/lijiejie/log4j2_vul_local_scanner\nhttps://github.com/CaptanMoss/Log4Shell-Sandbox-Signature\nhttps://github.com/taise-hub/log4j-poc", "status" : "vul_status_unfix", "type" : "app_vul", "url" : "[\"https://www.oracle.com/security-alerts/cpujan2022.html\"]", "version" : "hss.version.wtp", "vul_id" : "HCVD-APP-CVE-2021-45046", "vul_name" : "CVE-2021-45046", "repair_success_num" : 3, "support_restore" : true } ], "total_num" : 31 }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total_num Long 总数 最小值:0 最大值:2147483647 data_list Array of HostVulInfo objects 服务器上的漏洞列表 数组长度:0 - 2147483647 表5 HostVulInfo 参数 参数类型 描述 vul_name String 漏洞名称 最小长度:0 最大长度:256 vul_id String 漏洞ID 最小长度:0 最大长度:64 label_list Array of strings 漏洞标签列表 最小长度:0 最大长度:65534 数组长度:0 - 2147483647 repair_necessity String 修复紧急度,包括如下: immediate_repair : 尽快修复 delay_repair : 延后修复 not_needed_repair : 暂可不修复 最小长度:0 最大长度:64 scan_time Long 最近扫描时间 最小值:0 最大值:9223372036854775807 type String 漏洞类型,包含如下: -linux_vul : linux漏洞 -windows_vul : windows漏洞 -web_cms : Web-CMS漏洞 -app_vul : 应用漏洞 最小长度:0 最大长度:128 app_list Array of app_list objects 服务器上受该漏洞影响的软件列表 数组长度:0 - 2147483647 severity_level String 危险程度 Critical : 漏洞cvss评分大于等于9;对应控制台页面的高危 High : 漏洞cvss评分大于等于7,小于9;对应控制台页面的中危 Medium : 漏洞cvss评分大于等于4,小于7;对应控制台页面的中危 Low : 漏洞cvss评分小于4;对应控制台页面的低危 最小长度:1 最大长度:128 solution_detail String 解决方案 最小长度:0 最大长度:65534 url String URL链接 最小长度:0 最大长度:2083 description String 漏洞描述 最小长度:0 最大长度:65534 repair_cmd String 修复命令行 最小长度:1 最大长度:256 status String 漏洞状态 vul_status_unfix : 未处理 vul_status_ignored : 已忽略 vul_status_verified : 验证中 vul_status_fixing : 修复中 vul_status_fixed : 修复成功 vul_status_reboot : 修复成功待重启 vul_status_failed : 修复失败 vul_status_fix_after_reboot : 请重启主机再次修复 最小长度:1 最大长度:128 repair_success_num Integer HSS全网修复该漏洞的次数 最小值:0 最大值:1000000 cve_list Array of cve_list objects CVE列表 数组长度:1 - 10000 is_affect_business Boolean 是否影响业务 first_scan_time Long 首次扫描时间 最小值:0 最大值:9223372036854775807 app_name String 软件名称 最小长度:0 最大长度:256 app_version String 软件版本 最小长度:0 最大长度:256 app_path String 软件路径 最小长度:0 最大长度:512 version String 主机配额 最小长度:0 最大长度:128 support_restore Boolean 是否可以回滚到修复漏洞时创建的备份 表6 app_list 参数 参数类型 描述 app_name String 软件名称 最小长度:0 最大长度:256 app_version String 软件版本 最小长度:0 最大长度:256 upgrade_version String 修复漏洞软件需要升级到的版本 最小长度:0 最大长度:256 app_path String 应用软件的路径(只有应用漏洞有该字段) 最小长度:1 最大长度:512 表7 cve_list 参数 参数类型 描述 cve_id String CVE ID 最小长度:1 最大长度:32 cvss Float CVSS分值 最小值:0 最大值:10
  • URI GET /v5/{project_id}/vulnerability/host/{host_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户项目ID 最小长度:1 最大长度:256 host_id 是 String 服务器id 最小长度:1 最大长度:128 表2 Query参数 参数 是否必选 参数类型 描述 enterprise_project_id 否 String 企业租户ID,“0”表示默认企业项目,查询所有企业项目时填写:all_granted_eps 缺省值:0 最小长度:0 最大长度:256 type 否 String 漏洞类型,默认为linux_vul,包括如下: linux_vul : 漏洞类型-linux漏洞 windows_vul : 漏洞类型-windows漏洞 web_cms : Web-CMS漏洞 app_vul : 应用漏洞 urgent_vul : 应急漏洞 最小长度:0 最大长度:64 vul_name 否 String 漏洞名称 最小长度:0 最大长度:256 limit 否 Integer 每页显示个数 最小值:0 最大值:200 缺省值:10 offset 否 Integer 偏移量:指定返回记录的开始位置,必须为数字,取值范围为大于或等于0,默认0 最小值:0 最大值:2000000 缺省值:0 handle_status 否 String 处置状态,包含如下: unhandled :未处理 handled : 已处理 最小长度:1 最大长度:32 status 否 String 漏洞状态,包含如下: vul_status_unfix : 未处理 vul_status_ignored : 已忽略 vul_status_verified : 验证中 vul_status_fixing : 修复中 vul_status_fixed : 修复成功 vul_status_reboot : 修复成功待重启 vul_status_failed : 修复失败 vul_status_fix_after_reboot : 请重启主机再次修复 最小长度:1 最大长度:32
  • URI GET /v5/{project_id}/asset/user/statistics 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id 最小长度:1 最大长度:256 表2 Query参数 参数 是否必选 参数类型 描述 user_name 否 String 账号名称,参考windows文件命名规则,支持字母、数字、下划线、中文,特殊字符!@.-等,不包括中文标点符号 最小长度:1 最大长度:128 enterprise_project_id 否 String 企业项目 最小长度:0 最大长度:128 limit 否 Integer 默认10 最小值:10 最大值:200 缺省值:10 offset 否 Integer 默认是0 最小值:0 最大值:2000000 缺省值:0 category 否 String 类别,默认为host,包含如下: host:主机 container:容器 最小长度:0 最大长度:64
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total_num Integer 账号总数 最小值:0 最大值:10000 data_list Array of UserStatisticInfoResponseInfo objects 账户统计信息列表 数组长度:0 - 10000 表5 UserStatisticInfoResponseInfo 参数 参数类型 描述 user_name String 账号名称 最小长度:1 最大长度:128 num Integer 账号数量 最小值:0 最大值:10000
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 Content-Type: application/json X-Auth-Token: ABCDEFJ....
  • URI DELETE /v5/{project_id}/{resource_type}/{resource_id}/tags/{key} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户ID 最小长度:1 最大长度:256 resource_type 是 String 资源类别,hss 最小长度:1 最大长度:64 resource_id 是 String 资源ID 最小长度:0 最大长度:128 key 是 String 待删除的key 最小长度:1 最大长度:256
  • 请求示例 删除project_id为94b5266c14ce489fa6549817f032dc61、resource_type为hss、resource_id为2acc46ee-34c2-40c2-8060-dc652e6c672a的key为abc的标签 DELETE https://{endpoint}/v5/94b5266c14ce489fa6549817f032dc61/hss/2acc46ee-34c2-40c2-8060-dc652e6c672a/tags/abc
  • 请求示例 查询主机动态网页防篡改防护动态,目标主机ID为caa958ad-a481-4d46-b51e-6861b8864515,查询起始时间为1668563099000,查询终止时间为1668563199000。 GET https://{endpoint}/v5/{project_id}/webtamper/rasp/protect-history { "host_id" : "caa958ad-a481-4d46-b51e-6861b8864515", "start_time" : 1668563099000, "end_time" : 1668563199000, "limit" : 10, "offset" : 0 }
  • 响应示例 状态码: 200 successful response { "total_num" : 1, "data_list" : [ { "host_ip" : "192.168.5.98", "host_name" : "hss-test", "alarm_level" : 2, "alarm_time" : 1668394634000, "attacked_url" : "/vulns/001-dir-1.jsp", "source_ip" : "10.100.30.200", "threat_type" : "Path Traversal" } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total_num Long total number 最小值:0 最大值:200000 data_list Array of HostRaspProtectHistoryResponseInfo objects data list 数组长度:0 - 200000 表5 HostRaspProtectHistoryResponseInfo 参数 参数类型 描述 host_ip String 服务器ip 最小长度:0 最大长度:64 host_name String 服务器名称 最小长度:0 最大长度:64 alarm_time Long 告警时间 最小值:0 最大值:4070880000000 threat_type String 威胁类型 最小长度:0 最大长度:64 alarm_level Integer 告警级别 最小值:0 最大值:100 source_ip String 源IP 最小长度:0 最大长度:128 attacked_url String 攻击URL 最小长度:0 最大长度:2000
  • URI GET /v5/{project_id}/webtamper/rasp/protect-history 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户ID 最小长度:0 最大长度:64 表2 Query参数 参数 是否必选 参数类型 描述 enterprise_project_id 否 String 企业项目 最小长度:0 最大长度:64 host_id 是 String Host Id 最小长度:0 最大长度:128 start_time 是 Long 起始时间 最小值:0 最大值:4070880000000 end_time 是 Long 终止时间 最小值:0 最大值:4070880000000 limit 是 Integer limit 最小值:0 最大值:100 offset 是 Integer offset 最小值:0 最大值:100 alarm_level 否 Integer 告警级别 最小值:0 最大值:100 severity 否 String 威胁等级 Security : 安全 Low : 低危 Medium : 中危 High : 高危 Critical : 危急 最小长度:0 最大长度:32 protect_status 否 String 防护状态 closed : 未开启 opened : 防护中 最小长度:0 最大长度:32
  • 响应示例 状态码: 200 Asset statistic info { "account_num" : 5, "port_num" : 5, "process_num" : 5, "app_num" : 5, "auto_launch_num" : 5, "web_framework_num" : 5, "web_site_num" : 5, "jar_package_num" : 5, "kernel_module_num" : 5, "core_conf_file_num" : 1, "database_num" : 1, "environment_num" : 0, "web_app_num" : 8, "web_service_num" : 2 }
  • URI GET /v5/{project_id}/asset/statistics 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id 最小长度:1 最大长度:256 表2 Query参数 参数 是否必选 参数类型 描述 enterprise_project_id 否 String 企业项目 最小长度:0 最大长度:128 host_id 否 String host id 最小长度:1 最大长度:128 category 否 String 类别,默认为host,包含如下: host:主机 container:容器 最小长度:1 最大长度:64
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 account_num Long 账号数量 最小值:0 最大值:2147483647 port_num Long 开放端口数量 最小值:0 最大值:2147483647 process_num Long 进程数量 最小值:0 最大值:2147483647 app_num Long 软件数量 最小值:0 最大值:2147483647 auto_launch_num Long 自启动数量 最小值:0 最大值:2147483647 web_framework_num Long web框架数量 最小值:0 最大值:2147483647 web_site_num Long Web站点数量 最小值:0 最大值:2147483647 jar_package_num Long Jar包数量 最小值:0 最大值:2147483647 kernel_module_num Long 内核模块数量 最小值:0 最大值:2147483647 web_service_num Long web服务数量 最小值:0 最大值:2147483647 web_app_num Long web应用数量 最小值:0 最大值:2147483647 database_num Long 数据库数量 最小值:0 最大值:2147483647 core_conf_file_num Long 关键配置文件数量 最小值:0 最大值:2147483647 environment_num Long 环境变量数量 最小值:0 最大值:2147483647
  • 文件上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 文件上传使用本地文件作为对象的数据源。以下代码展示了如何进行文件上传: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 上传文件 try { PutObjectRequest request = new PutObjectRequest() { BucketName = "bucketname", //待传入目标桶名 ObjectKey = "objectname", //待传入对象名(对象名是对象在桶中的完整路径,如folder/test.txt,路径中不包含桶名) FilePath = "localfile",//待上传的本地文件路径,需要指定到具体的文件名 }; PutObjectResponse response = client.PutObject(request); Console.WriteLine("put object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 上传的内容大小不能超过5GB。 父主题: 上传对象
  • OBS服务端错误码 在向OBS服务端发出请求后,如果遇到错误,会在响应中包含响应的错误码描述错误信息。详细的错误码及其对应的描述和HTTP状态码见下表: 错误码 描述 HTTP状态码 AccessDenied 拒绝访问。 403 Forbidden AccessForbidden 权限不足。 403 Forbidden AccountProblem 用户的帐户出现异常(过期、冻结等),不能成功地完成操作。 403 Forbidden AllAccessDisabled 用户无权限执行某操作。 403 Forbidden AmbiguousGrantByEmailAddress 用户提供的Email地址关联的帐户超过了1个。 400 Bad Request BadDigest 客户端指定的对象内容的MD5值与系统接收到的内容MD5值不一致。 400 Bad Request BadDomainName 域名不合法。 400 Bad Request BadRequest 请求参数不合法。 400 Bad Request BucketAlreadyExists 请求的桶名已经存在。桶的命名空间是系统中所有用户共用的,选择一个不同的桶名再重试一次。 409 Conflict BucketAlreadyOwnedByYou 发起该请求的用户已经创建过了这个名字的桶,并拥有这个桶。 409 Conflict BucketNotEmpty 用户尝试删除的桶不为空。 409 Conflict CredentialsNotSupported 该请求不支持证书验证。 400 Bad Request CustomDomainAreadyExist 配置了已存在的域。 400 Bad Request CustomDomainNotExist 操作的域不存在。 400 Bad Request DeregisterUserId 用户已经注销。 403 Forbidden EntityTooSmall 用户试图上传的对象大小小于系统允许的最小大小。 400 Bad Request EntityTooLarge 用户试图上传的对象大小超过了系统允许的最大大小。 400 Bad Request FrozenUserId 用户被冻结。 403 Forbidden IllegalVersioningConfiguration Exception 请求中的版本配置无效。 400 Bad Request IllegalLocationConstraintException 配置了与所在Region不匹配的区域限制。 400 Bad Request InArrearOrInsufficientBalance 用户欠费或余额不足而没有权限进行某种操作。 403 Forbidden IncompleteBody 请求体不完整。 400 Bad Request IncorrectNumberOfFilesInPost Request 每个POST请求都需要带一个上传的文件。 400 Bad Request InlineDataTooLarge Inline Data超过了允许的最大长度。 400 Bad Request InsufficientStorageSpace 存储空间不足。 403 Forbidden InternalError 系统遇到内部错误,请重试。 500 Internal Server Error InvalidAccessKeyId 系统记录中不存在客户提供的Access Key Id。 403 Forbidden InvalidAddressingHeader 用户必须指定匿名角色。 N/A InvalidArgument 无效的参数。 400 Bad Request InvalidBucketName 请求中指定的桶名无效。 400 Bad Request InvalidBucket 请求访问的桶已不存在。 400 Bad Request InvalidBucketState 无效的桶状态。 409 Conflict InvalidBucketStoragePolicy 修改桶策略时,提供的新策略不合法。 400 Bad Request InvalidDigest HTTP头中指定的Content-MD5值无效。 400 Bad Request InvalidEncryptionAlgorithmError 错误的加密算法。 400 Bad Request InvalidLocationConstraint 创建桶时,指定的location不合法。 400 Bad Request InvalidPart 一个或多个指定的段无法找到。这些段可能没有上传,或者指定的entity tag与段的entity tag不一致。 400 Bad Request InvalidPartOrder 段列表的顺序不是升序,段列表必须按段号升序排列。 400 Bad Request InvalidPayer 所有对这个对象的访问已经无效了。 403 Forbidden InvalidPolicyDocument 表单中的内容与策略文档中指定的条件不一致。 400 Bad Request InvalidRange 请求的range不可获得。 416 Client Requested Range Not Satisfiable InvalidRedirectLocation 无效的重定向地址。 400 Bad Request InvalidRequest 无效请求。 400 Bad Request InvalidRequestBody POST请求体无效。 400 Bad Request InvalidSecurity 提供的安全证书无效。 403 Forbidden InvalidStorageClass 用户指定的Storage Class无效。 400 Bad Request InvalidTargetBucketForLogging delivery group对目标桶无ACL权限。 400 Bad Request InvalidURI 无法解析指定的URI。 400 Bad Request KeyTooLong 提供的Key过长。 400 Bad Request MalformedACLError 提供的XML格式错误,或者不符合要求的格式。 400 Bad Request MalformedError 请求中携带的XML格式不正确。 400 Bad Request MalformedLoggingStatus Logging的XML格式不正确。 400 Bad Request MalformedPolicy Bucket policy检查不通过。 400 Bad Request MalformedPOSTRequest POST请求的请求体不是结构化良好的多段或形式化数据。 400 Bad Request MalformedQuotaError Quota的XML格式不正确。 400 Bad Request MalformedXML 当用户发送了一个配置项的错误格式的XML会出现这样的错误。错误消息是:“The XML you provided was not well-formed or did not validate against our published schema.”。 400 Bad Request MaxMessageLengthExceeded 请求消息过长。 400 Bad Request MaxPostPreDataLengthExceeded Error 在上传文件前面的POST请求域过大。 400 Bad Request MetadataTooLarge 元数据消息头超过了允许的最大元数据大小。 400 Bad Request MethodNotAllowed 指定的方法不允许操作在请求的资源上。 对应返回的Message为:Specified method is not supported. 405 Method Not Allowed MissingContentLength 必须要提供HTTP消息头中的Content-Length字段。 411 Length Required MissingRegion 请求中缺少Region信息,且系统无默认Region。 400 Bad Request MissingRequestBodyError 当用户发送一个空的XML文档作为请求时会发生。错误消息是:“Request body is empty.”。 400 Bad Request MissingRequiredHeader 请求中缺少必要的头域。 400 Bad Request MissingSecurityHeader 请求缺少一个必须的头。 400 Bad Request NoSuchBucket 指定的桶不存在。 404 Not Found NoSuchBucketPolicy 桶policy不存在。 404 Not Found NoSuchCORSConfiguration CORS配置不存在。 404 Not Found NoSuchCustomDomain 请求的用户域不存在。 404 Not Found NoSuchKey 指定的Key不存在。 404 Not Found NoSuchLifecycleConfiguration 请求的LifeCycle不存在。 404 Not Found NoSuchPolicy 给定的policy名字不存在。 404 Not Found NoSuchUpload 指定的多段上传不存在。Upload ID不存在,或者多段上传已经终止或完成。 404 Not Found NoSuchVersion 请求中指定的version ID与现存的所有版本都不匹配。 404 Not Found NoSuchWebsiteConfiguration 请求的Website不存在。 404 Not Found NotImplemented 用户提供的消息头功能上还没有实现。 501 Not Implemented NotSignedUp 帐户未在系统中注册,必须先在系统中注册了才能使用该帐户。 403 Forbidden OperationAborted 另外一个冲突的操作当前正作用在这个资源上,请重试。 409 Conflict PermanentRedirect 尝试访问的桶必须使用指定的节点,请将以后的请求发送到这个节点。 301 Moved Permanently PreconditionFailed 用户指定的先决条件中至少有一项没有包含。 412 Precondition Failed Redirect 临时重定向。 307 Moved Temporarily RequestIsNotMultiPartContent 桶POST必须是闭式的多段/表单数据。 400 Bad Request RequestTimeout 用户与Server之间的socket连接在超时时间内没有进行读写操作。 400 Bad Request RequestTimeTooSkewed 请求的时间与服务器的时间相差太大。 403 Forbidden RequestTorrentOfBucketError 不允许请求桶的torrent文件。 400 Bad Request ServiceNotImplemented 请求的方法服务端没有实现。 501 Not Implemented ServiceNotSupported 请求的方法服务端不支持。 409 Conflict ServiceUnavailable 服务器过载或者内部错误异常。 503 Service Unavailable SignatureDoesNotMatch 请求中带的签名与系统计算得到的签名不一致。检查您的访问密钥(AK和SK)和签名计算方法。 403 Forbidden SlowDown 请降低请求频率。 503 Service Unavailable System Capacity Not enough 系统空间不足异常。 403 Forbidden TooManyCustomDomains 配置了过多的用户域。 400 Bad Request TemporaryRedirect 当DNS更新时,请求将被重定向到桶。 307 Moved Temporarily TooManyBuckets 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 400 Bad Request TooManyObjectCopied 用户单个对象被拷贝的数量超过系统上限。 400 Bad Request TooManyWrongSignature 因高频错误请求被拒绝服务。 400 Bad Request UnexpectedContent 该请求不支持带内容字段。 400 Bad Request UnresolvableGrantByEmailAddress 用户提供的Email与记录中任何帐户的都不匹配。 400 Bad Request UserKeyMustBeSpecified 请求中缺少用户的AK信息。 400 Bad Request WebsiteRedirect Website请求缺少bucketName。 301 Moved Permanently KMS.DisabledException SSE-KMS加密方式下,主密钥被禁用。 400 Bad Request KMS.NotFoundException SSE-KMS加密方式下,主密钥不存在。 400 Bad Request RestoreAlreadyInProgress 对象正在恢复,请求冲突。 409 Conflict ObjectHasAlreadyRestored 已经恢复的对象,禁止缩短恢复保存时间。 409 Conflict InvalidObjectState 恢复对象不是归档存储对象。 403 Forbidden InvalidTagError 配置桶标签时,提供了无效的Tag。 400 Bad Request NoSuchTagSet 指定的桶没有设置标签。 404 Not Found 父主题: 异常处理
  • 数据建模引擎权限 数据建模引擎是用于应用部署和运行的计算、存储、网络等基础设施资源的集合。在应用设计态完成应用的功能设计和开发,管理员或拥有运行环境管理权限的IAM用户可将其部署到数据建模引擎,生成对应的应用运行态。 iDME提供体验版和基础版的数据建模引擎,应用部署在不同的数据建模引擎,该应用运行态的权限控制能力不同,如表1所示。 表1 应用运行态权限说明 类型 说明 体验版数据建模引擎 基于统一身份认证服务(Identity and Access Management,简称IAM)能力的授权,租户下的IAM用户均可以操作当前租户下部署在体验版数据建模引擎的应用运行态。 基础版数据建模引擎 基于组织成员帐号(OrgID)能力的授权,通过OrgID的组织管理让企业部门、企业成员或企业用户拥有操作部署在基础版数据建模引擎的应用运行态的权限。 说明: 仅当基础版数据建模引擎部署在公有云上时,才能使用组织中成员账号登录部署在其上的应用运行态。 在iDME控制台,部署应用时绑定OrgID组织即可对应用授权。关于OrgID的详细介绍,请参见OrgID。 父主题: 权限管理
  • 前提条件 已注册华为帐号并开通华为云,完成实名认证。 具备用于低时延直播的域名,且域名已完成备案。低时延直播服务需要一个推流域名和播放域名,且两个域名不能相同。 若您需要购买自有域名,您可以在华为云的域名注册中购买。您也可以在其它域名服务商处购买。 若您已有域名,但还未根据国家工信部规定完成备案,您可以在华为云的备案中心完成备案。 已准备HTTPS证书。若还未有HTTPS证书,您可以在华为云SSL证书管理中购买。 HTTPS证书格式满足HTTPS证书要求,若您的证书为非PEM格式,请参照HTTPS证书要求进行格式转换。 低时延直播,使用的是视频直播控制台。所以用户直接访问视频直播控制台即可。
  • 添加域名 您需要将自有的已备案的低时延直播推流域名和播放域名分别添加到视频直播服务中。下面以添加低时延直播推流域名为例,播放域名的添加步骤与此相同。 登录视频直播控制台。 在左侧导航树中选择“域名管理”进入域名管理页面。 单击“添加域名”。在弹出的“添加域名”页面输入已申请的低时延直播推流域名。 注意:若您的域名未备案,将添加失败,并提示“添加域名失败:ICP编号不存在”。 表1 域名参数说明 参数名 描述 域名 输入二级低时延直播推流域名或播放域名,域名长度需要在42个字符以内。 注意:低时延直播推流域名与播放域名不能相同,不支持添加泛域名。 示例:“test-push.example.com”。 企业项目 将域名加入到企业项目中统一管理。 请参见创建企业项目完成企业项目的创建,默认为default企业项目。 在企业项目页面创建企业项目,然后将用户组添加到该企业项目。这时用户组内用户将获得用户组授权的该企业项目下的域名的相关操作权限。 说明: 仅企业帐号能够配置企业项目。 域名类型 若“域名”中输入的是低时延直播推流域名则选择推流域名,否则,选择播放域名。 单击“确定”。 在“域名管理”页面的列表中会新增一条“状态”为“配置中”的域名记录。大概3-5分钟时间,当“状态”为“正常”时,低时延直播域名添加成功。 执行步骤1-步骤4,完成对低时延播放域名的添加。 低时延直播播放域名添加后,需要关联添加的低时延直播推流域名才可使用低时延直播服务。关联的推流域名必须与播放域名归属同一个直播源站,具体请参见关联域名。
  • 注册华为云 在使用华为云云服务之前您需要注册华为帐号并开通华为云云服务帐号。通过此帐号,只需为使用的服务付费,即可使用所有华为云服务。进入华为云云服务官网,参考“帐号注册”指导及界面提示信息,完成帐号注册。注册成功后即可自动登录华为云云服务,您需要完成“实名认证”才可以正常使用服务。 账号注册指导:https://support.huaweicloud.com/usermanual-account/account_id_001.html 实名认证指导:https://support.huaweicloud.com/usermanual-account/account_auth_00001.html 父主题: 华为云账号环境准备
  • 二维异形件服装切割 场景描述 服装切割是指将服装裁片放置在布料上,使得使用的布料最少,以最大化布料利用率。通常情况下,布料的宽度是固定的,优化的目标是最小化使用长度。 准备工作 已注册华为云账号,且账号不能处于欠费或者冻结状态,获取项目ID 获取APPCode 获取EndPoint 步骤一:导入服装切割数据 使用第三方软件集成服务商(比如ET、BOKE)客户端软件生成服装切割数据文件,上传到华为云服装切割服务。需要至少包含以下字段:排版时间、布料宽度、裁片形状、裁片可旋转角度以及其他排版约束等。 { "input_json": { "id": "fu", "order": "fu", "name": "fu", "time": 1, "gap_mode": 0, "overlap": 0, "fabric": { "width": 38, "grid_x": 0, "grid_y": 0 }, "polygon": [ { "index": 0, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 10.0 ] }, { "index": 1, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 10.0 ] }, { "index": 2, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 9.0, 0.0, 9.0 ] }, { "index": 3, "profile": [ 0.0, 0.0, 14.0, 0.0, 7.0, 7.0 ] }, { "index": 4, "profile": [ 0.0, 9.0, 0.0, 0.0, 14.0, 9.0 ] }, { "index": 5, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 14.0, 0.0, 14.0 ] }, { "index": 6, "profile": [ 0.0, 0.0, 10.0, 4.0, 10.0, 9.0, 0.0, 9.0 ] }, { "index": 7, "profile": [ 0.0, 0.0, 5.0, 0.0, 5.0, 9.0, 0.0, 9.0 ] }, { "index": 8, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 14.0 ] }, { "index": 9, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 14.0 ] }, { "index": 10, "profile": [ 0.0, 8.0, 4.0, 0.0, 8.0, 8.0 ] }, { "index": 11, "profile": [ 0.0, 0.0, 14.0, 0.0, 7.0, 12.0 ] } ], "piece": [ { "id": 0, "polygon_index": 0, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 1, "polygon_index": 1, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 2, "polygon_index": 2, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 3, "polygon_index": 3, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 4, "polygon_index": 4, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 5, "polygon_index": 5, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 6, "polygon_index": 6, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 7, "polygon_index": 7, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 8, "polygon_index": 8, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 9, "polygon_index": 9, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 10, "polygon_index": 10, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 11, "polygon_index": 11, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] } ], "hole": [], "constraints": {} } } 步骤二:查询服装切割结果 待切割排版任务完成后,查询排版结果。华为云服装排版服务将返回json格式排版结果文件,可以通过第三方软件服务商展示排版结果,生成适配切割机的切割文件。 { "task_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "status": "finished", "start_time": "", "end_time": "", "output_json": { "gap_mode": 0, "id": "fu", "length": 14.0, "name": "fu", "order": "fu", "pieces": [ { "angle": 180.0, "box": [ { "x": 1.110223024560533e-16, "y": 188.54000844217342 }, { "x": 10.0, "y": 202.54000844217342 } ], "flip_x": 0, "flip_y": 0, "id": 9 }, { "angle": 90.0, "box": [ { "x": 1.110223024560533e-16, "y": 180.54018862422214 }, { "x": 9.0, "y": 190.54018862422214 } ], "flip_x": 0, "flip_y": 0, "id": 6 }, { "angle": 90.0, "box": [ { "x": 1.1102230246251565e-16, "y": 251.65141900241923 }, { "x": 9.0, "y": 265.65141900241923 } ], "flip_x": 0, "flip_y": 0, "id": 2 }, { "angle": 0.0, "box": [ { "x": 1.110223024560533e-16, "y": 216.54000844217342 }, { "x": 5.0, "y": 225.54000844217342 } ], "flip_x": 0, "flip_y": 0, "id": 7 }, { "angle": 180.0, "box": [ { "x": 1.1101552619893762e-16, "y": 24.0 }, { "x": 8.0, "y": 32.0 } ], "flip_x": 0, "flip_y": 0, "id": 10 }, { "angle": 270.0, "box": [ { "x": 5.551115123125783e-17, "y": 0.0 }, { "x": 10.0, "y": 10.0 } ], "flip_x": 0, "flip_y": 0, "id": 1 }, { "angle": 90.0, "box": [ { "x": 0.0, "y": 10.0 }, { "x": 12.0, "y": 24.0 } ], "flip_x": 0, "flip_y": 0, "id": 11 }, { "angle": 90.0, "box": [ { "x": 1.1102230246251565e-16, "y": 237.65161696798242 }, { "x": 14.0, "y": 251.65161696798242 } ], "flip_x": 0, "flip_y": 0, "id": 5 }, { "angle": 180.0, "box": [ { "x": 1.1102230246251565e-16, "y": 49.51013170928303 }, { "x": 10.0, "y": 59.51013170928303 } ], "flip_x": 0, "flip_y": 0, "id": 0 }, { "angle": 270.0, "box": [ { "x": 1.110223024560533e-16, "y": 202.54000844217342 }, { "x": 7.0, "y": 216.54000844217342 } ], "flip_x": 0, "flip_y": 0, "id": 3 }, { "angle": 270.0, "box": [ { "x": 1.1102230163533504e-16, "y": 25.020263418566074 }, { "x": 9.0, "y": 39.020263418566074 } ], "flip_x": 0, "flip_y": 0, "id": 4 }, { "angle": 0.0, "box": [ { "x": 1.110214554295684e-16, "y": 166.54018862422214 }, { "x": 14.0, "y": 180.54018862422214 } ], "flip_x": 0, "flip_y": 0, "id": 8 } ], "ratio": 1.265e-321, "time": 1 } } 父主题: 使用场景
  • 二维异形件钣金切割 场景描述 钣金切割是指将钣金件放置在钢板上,使得使用的钢板最少,以最大化钢板利用率。 准备工作 已注册华为云账号,且账号不能处于欠费或者冻结状态,获取项目ID 获取APPCode 获取EndPoint 步骤一:导入钣金切割数据 使用第三方软件集成服务商(比如FastCAM)客户端软件生成钣金切割数据文件,上传到华为云钣金切割服务。需要至少包含以下字段:排版时间、钢板尺寸、钢板个数、钢板修边距、零件距零件间距、是否共线切割,是否容许空洞排版以及其他排版约束等。 { "task_name": "TESTTASK", "project_name": "TESTPRO", "user_id": "user_123456789", "time": 20, "item_spacing": 10, "plate_spacing": 20, "forbid_internal_nesting": 0, "common_cut_nest": 0, "leadin_before_nesting":2, "plates": [ { "plate_id": 0, "plate_name": "", "plate_length": 4000, "plate_width": 4000, "plate_count": 200 } ], "cams": [ { "item_id": 0, "item_name": "d:\rectangle.cam", "count": 2, "priority": 5, "rotation_type": 2, "flip": 0, "pair_collinear": 0, "collinear_entity_id": 0, "entities": [ { "entity_id": 1, "entity_type": 1, "start_x": 0, "start_y": 0, "end_x": 3200, "end_y": 0, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":4, "last_entity":0 }, { "entity_id": 2, "entity_type": 1, "start_x": 3200, "start_y": 0, "end_x": 3200, "end_y": 1600, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":0, "last_entity":3 }, { "entity_id": 3, "entity_type": -2, "start_x": 3200, "start_y": 1600, "end_x": 0, "end_y": 1600, "circle_center_x": 1600, "circle_center_y": 2200, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":2, "last_entity":4 }, { "entity_id": 4, "entity_type": 1, "start_x": 0, "start_y": 1600, "end_x": 0, "end_y": 0, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":3, "last_entity":1 } ] }, { "item_id": 1, "item_name": "d:\rectangle2.cam", "count": 3, "priority": 5, "rotation_type": 2, "flip": 0, "pair_collinear": 0, "collinear_entity_id": 0, "entities":[ { "entity_id": 1, "entity_type": 1, "start_x": 0, "start_y": 0, "end_x": 500, "end_y": 0, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":2, "last_entity":0 }, { "entity_id": 2, "entity_type": 1, "start_x": 500, "start_y": 0, "end_x": 500, "end_y": 500, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":3, "last_entity":1 }, { "entity_id": 3, "entity_type": 1, "start_x": 500, "start_y": 500, "end_x": 0, "end_y": 0, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":0, "last_entity":2 } ] }, { "item_id": 2, "item_name": "d:\rectangle2.cam", "count": 2, "priority": 5, "rotation_type": 2, "flip": 0, "pair_collinear": 0, "collinear_entity_id": 0, "entities":[ { "entity_id": 1, "entity_type": 2, "start_x": 500, "start_y": 0, "end_x": 500, "end_y": 0, "circle_center_x": 0, "circle_center_y": 0, "dxf_name": "", "entry_type": 0, "ifoutside": 1, "next_entity":0, "last_entity":0 } ] } ] , "total_cams":3, } 步骤二:查询钣金切割结果 待切割排版任务完成后,查询排版结果。华为云钣金排版服务将返回json格式排版结果文件,可以通过第三方软件服务商展示排版结果,生成适配切割机的切割文件。 { "task_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "task_type": "test_type", "task_name": "sss", "status": "RUNNING", "created_at": "2018-06-12T13:00:01Z", "updated_at": "2018-06-13T13:00:01Z", "result": { "average_ratio": 0.43922290579330253, "common_cut_nest": 0, "item_spacing": 10.0, "nesting": [ { "item_count": 7, "items": [ { "envelope_rect_center_x": 1605.0000000000018, "envelope_rect_center_y": 1959.4003744920346, "flip_x": 0, "flip_y": 0, "item_angle": 0.0, "item_name": "d:\rectangle.cam" }, { "envelope_rect_center_x": 1605.0000000000018, "envelope_rect_center_y": 3570.133437492032, "flip_x": 0, "flip_y": 0, "item_angle": 0.0, "item_name": "d:\rectangle.cam" }, { "envelope_rect_center_x": 505.0, "envelope_rect_center_y": 3348.425682497144, "flip_x": 0, "flip_y": 0, "item_angle": 0.0, "item_name": "d:\rectangle2.cam" }, { "envelope_rect_center_x": 1136.003821693054, "envelope_rect_center_y": 1105.7330629999974, "flip_x": 0, "flip_y": 0, "item_angle": 0.0, "item_name": "d:\rectangle2.cam" }, { "envelope_rect_center_x": 705.1606452469719, "envelope_rect_center_y": 2827.3374108695393, "flip_x": 0, "flip_y": 0, "item_angle": 0.0, "item_name": "d:\rectangle2.cam" }, { "envelope_rect_center_x": 1001.5517970744211, "envelope_rect_center_y": 2606.6574946969886, "flip_x": 0, "flip_y": 0, "item_angle": 0.0, "item_name": "d:\rectangle2.cam" }, { "envelope_rect_center_x": 269.9895399372879, "envelope_rect_center_y": 1355.7330629372852, "flip_x": 0, "flip_y": 0, "item_angle": 90.0, "item_name": "d:\rectangle2.cam" } ], "plate_id": 0, "plate_length": 3980.0, "plate_name": "", "plate_ratio": 0.43922290579330253, "plate_width": 3980.0 } ], "plate_count": 1, "plate_spacing": 20.0, "project_name": "TESTPRO", "task_name": "TESTTASK", "time": 20, "total_item_count": 7 } } 父主题: 使用场景
  • 登录华为云账号 使用Chrome浏览器访问系统环境地址:https://console.huaweicloud.com/optverse/?agencyId=053a59ad180026111f2ac011f5934368®ion=cn-north-4&locale=zh-cn#/optverse/overview,出现如下界面, 输入华为云账号用户名和密码,点击“登录”按钮, 登录成功后,进入OptVerse首页界面,如下图所示: 父主题: 华为云账号环境准备
  • 配置Cloudbase-Init工具 在Cloudbase-Init安装路径下的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”中执行以下操作: 在配置文件最后一行,增加配置项“netbios_host_name_compatibility=false”,使Windows系统的hostname长度支持到63个字符。 NetBIOS长度受Windows系统本身的限制还只支持小于等于15个字符。 增加配置项“metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService”,配置agent访问OpenStack数据源。 添加plugins配置项,设置要加载的模块,以“,”为分隔符,加粗的部分为模块关键字。 其中必选加载模块,请参考如下配置(必选): plugins=cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin,cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin,cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,cloudbaseinit.plugins.common.userdata.UserDataPlugin,cloudbaseinit.plugins.windows.licensing.WindowsLicensingPlugin 各模块功能如下所述: LocalScriptsPlugin:设置脚本执行 MTUPlugin:设置MTU网络接口 CreateUserPlugin:创建用户 SetUserPasswordPlugin:设置密码 SetUserSSHPublicKeysPlugin:设置密钥 SetHostNamePlugin:设置主机名 ExtendVolumesPlugin:磁盘扩容 UserDataPlugin:用户数据注入 WindowsLicensingPlugin:激活window instance 可选加载模块,请参考如下配置(可选): plugins=cloudbaseinit.plugins.windows.winrmlistener.ConfigWinRMListenerPlugin,cloudbaseinit.plugins.windows.winrmcertificateauth.ConfigWinRMCertificateAuthPlugin 各模块功能如下所述: ConfigWinRMListenerPlugin:设置远程登录监听 ConfigWinRMCertificateAuthPlugin:设置远程登录无密码认证 加载模块对应的插件WinRM使用了弱密码算法,可能存在安全隐患,为保证系统安全,不建议您添加此插件。 (可选)增加如下配置项,配置获取metadata的重试次数和间隔。 retry_count=40 retry_count_interval=5 (可选)增加如下配置项,防止Windows添加默认路由导致metadata网络不通。 [openstack] add_metadata_private_ip_route=False (可选)当Cloudbase-Init为0.9.12及以上版本时,用户可以自定义配置密码长度。 操作方法:修改配置项“user_password_length”的值,完成密码长度的自定义配置。 (可选)选择密码注入方式首次登录时,系统默认强制用户修改登录密码,若用户根据个人意愿,不需要修改首次登录使用的密码时,可关闭此功能。 操作方法:增加配置项“first_logon_behaviour=no”。 (可选)增加Cloudbase-Init配置项,防止虚拟机无法使用BIOS时间同步。 操作方法:在“cloudbase-init.conf”中添加相应的配置项“real_time_clock_utc=true”。 BIOS时间同步功能是通过增加注册表项“RealTimeIsUniversal=1”实现。如果不添加配置项“real_time_clock_utc=true”,Cloudbase-Init会将注册表自动修改为默认值0,将导致windows虚拟机重启后无法使用BIOS时间同步。 为了防止镜像中DHCP租期过长导致创建的云服务器无法正确的获取地址,用户需要释放当前的DHCP地址。 在Windows命令行中,执行以下命令释放当前的DHCP地址。 ipconfig /release 此操作会中断网络,对云服务器的使用会产生影响。当云服务器再次开机后,网络会自动恢复。 使用Windows操作系统云服务器制作镜像时,需修改云服务器SAN策略为OnlineAll类型。否则可能导致使用镜像创建云服务器时磁盘处于脱机状态。 Windows操作系统SAN策略分为三种类型:OnlineAll、OfflineShared、OfflineInternal 表1 Windows操作系统SAN策略类型 类型 说明 OnlineAll 表示所有新发现磁盘都置于在线模式。 OfflineShared 表示所有共享总线上(比如FC、ISCSI)的新发现磁盘都置于离线模式,非共享总线上的磁盘都置于在线模式。 OfflineInternal 表示所有新发现磁盘都置于离线模式。 运行cmd.exe,执行以下命令,使用DiskPart工具来查询云服务器当前的SAN策略。 diskpart 执行以下命令查看云服务器当前的SAN策略。 san 如果SAN策略为OnlineAll,请执行exit命令退出DiskPart。 否,请执行步骤3.c。 执行以下命令修改云服务器SAN策略为OnlineAll。 san policy=onlineall
  • 检查Cloud-Init工具相关配置是否成功 执行以下命令,无错误发生,说明Cloud-Init配置成功。 cloud-init init --local 正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。 执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。 chage -M 99999 $user_name 其中,user_name为系统用户,例如root账户。 密码有效期建议设置为99999。
  • 示例 配置本地源中的步骤一般为通用步骤,操作系统实际的发行版略有差别,但是基本步骤都是要将源添加进去,并刷新。以下内容以Debian 10.1.0和CentOS 8.0为例,介绍添加本地源的方法。 Debian 10.1.0 执行cat /etc/apt/sources.list查看“sources.list”配置文件中有一条默认配置的cdrom源: 图1 查看源 这条源指向的源路径就是光驱设备“/dev/cdrom”,Debian 10.1.0做了一个软链接,将光驱设备链接到了“/media/cdrom”路径。 图2 查看media目录 因此将ISO挂载到“/media/cdrom”,就可以正常使用ISO源了。 CentOS 8.0 将ISO挂载到“/mnt”路径。 将“/etc/yum.repo.d”路径的源文件,除了“CentOS-Media.repo”以外,全部重命名成后缀为“.bak”的文件,或者移动到别的目录。 修改“CentOS-Media.repo”文件。 图3 修改“CentOS-Media.repo”文件 包含红框中的六处修改点: baseurl:配置为“file:///mnt/BaseOS”和“file:///mnt/AppStream”,“mnt”为ISO挂载目录,注意删除默认配置的多余的无效路径,否则会导致checksum失败。 gpgcheck改为0,即不检查。 enabled改为1,使生效。 清理yum,并重新生成缓存。 yum clean all && yum makecache
  • 配置本地源 请根据操作系统类型分别参考yum的配置流程、apt的配置流程或者zypper的配置流程。 yum的配置流程 将ISO文件上传到云服务器内部,并挂载至“/mnt”路径。 mount XXX.iso /mnt 进入yum配置文件所在路径“/etc/yum.repo.d”,将其他后缀名为“.repo”的文件进行备份,并且新建一个配置文件,例如“local.repo”。在“local.repo”中添加如下内容: [rhel-local] name=local baseurl=file:///mnt enabled=1 gpgcheck=0 配置文件中指定的“/mnt”要和ISO挂载路径一致。 清理yum。 yum clean all 重新生成缓存。 yum makecache apt的配置流程 将ISO文件上传至云服务器内部,并挂载至“/mnt”路径。 mount XXX.iso /mnt 添加apt cdrom源。 apt-cdrom -m -d /mnt/ add 在配置文件中查看添加的源。 cat /etc/apt/sources.list 更新源。 apt-get update zypper的配置流程 将ISO文件上传至云服务器内部。 ISO入源。 sudo zypper addrepo iso:/?iso=/media/SOFTWARE/openSUSE-11.4-DVD-i586.iso DVDISO 其中, “/media/SOFTWARE/openSUSE-11.4-DVD-i586.iso”为ISO文件所在位置。 “DVDISO”是这个源的别名。 查看源是否添加成功。 zypper repos 刷新源。 zypper refresh
共100000条