华为云用户手册

  • 配置步骤 登录CDN控制台。 在左侧菜单栏中,选择“ 域名 管理”。 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。 选择“高级配置”页签。 在自定义错误页面配置模块,单击“添加”,系统弹出“自定义错误页面配置”对话框。 图1 自定义错误页面配置 表1 参数说明 参数 描述 示例 错误码 需要自定义页面错误码4xx、5xx。 404 重定向方式 将错误码页面重定向到新页面的方式,可选301或302重定向。 301 重定向的目标链接 自定义错误码跳转的新页面,必须以http://或https://开头。 https://example.com/error404.html 输入各项参数,单击“确定”,完成配置。
  • 典型应用场景 首次接入:当您的域名首次接入CDN时,您可以将视频等大文件预热,提升用户体验。 安装包发布:新版本安装包或是升级包发布前,提前将资源预热至 CDN加速 节点。正式上线后,海量用户的下载请求将直接由全球加速节点响应,提升下载速度的同时,大幅度降低源站压力。 运营活动:运营活动发布前,提前将活动页涉及到的静态资源预热至CDN加速节点。活动开始后,用户访问中所有静态资源均由加速节点响应,海量带宽储备保障用户服务可用性,提升用户体验。
  • 注意事项 只有处于“已开启”和“配置中”状态且未被禁用的域名才能执行缓存预热操作。相关域名状态说明请参见查看域名基本信息。 预热完成时间取决于用户提交预热文件数量、文件大小以及网络状况等诸多因素。 当历史记录中的对应URL的缓存预热状态为“成功”时,表示预热完成。 执行大批量文件预热,可能会导致您的源站带宽资源被占满,预热时请尽量分批次执行。 动态文件(如:asp、jsp、php等格式的文件)不能被预热,请勿对动态文件执行预热操作。 当预热资源在源站的cache-control配置为s-maxage=0、max-age=0、private、no-cache、no-store,且CDN侧开启了“缓存遵循源站”,此时源站不允许缓存将导致预热失败。 如果未开启“缓存遵循源站”且预热对应资源的缓存过期时间设置为0,CDN无法缓存该预热资源,预热将会失败。 您也可以通过API接口的方式创建域名的缓存预热任务。
  • HTTPS证书格式转换 配置HTTPS仅支持PEM格式的证书/私钥,其他格式均不支持。下面是几种比较流行的证书格式转换为PEM格式的方法。 以下示例均假设转换前证书名为old_certificate,私钥名为old_key,转换后证书名为new_certificate,私钥文件名为new_key。 DER转换为PEM openssl x509 -inform der -in old_certificate.cer -out new_certificate.pem openssl rsa -inform DER -outform pem -in old_key.der -out new_key.key P7B转换为PEM openssl pkcs7 -print_certs -in old_certificate.p7b -out new_certificate.cer PFX转换为PEM openssl pkcs12 -in old_certificate.pfx -nokeys -out new_certificate.pem openssl pkcs12 -in old_certificate.pfx -nocerts -out new_key.key 您也可以参考网络上的第三方证书转换工具进行格式转换。 父主题: HTTPS配置
  • Root CA机构颁发的证书 Root CA机构颁发的证书是一份完整的证书,配置HTTPS时,仅上传该证书即可。 通过记事本打开*.PEM格式的证书文件,可以查看到类似图1所示的全部证书信息。 PEM格式证书: 以证书链“-----BEGIN CERTIFICATE-----”开头,以证书链“-----END CERTIFICATE-----”结尾。 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。 证书内容不包含空格。
  • 中级机构颁发的证书 中级机构颁发的证书文件包含多份证书,配置HTTPS时,需要将所有证书拼接在一起组成一份完整的证书后再上传。拼接后的证书类似图2。 通过记事本打开所有*.PEM格式的证书文件,将服务器证书放在首位,再放置中间证书。一般情况下,机构在颁发证书的时候会有对应说明,请注意查阅相关规则。通用的规则如下: 证书之间没有空行。 证书链的格式如下: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
  • RSA私钥格式要求 PEM格式的文件可以存放证书或私钥,如果*.PEM只包含私钥,一般用*.KEY代替。 通过记事本打开*.PEM或*.KEY的私钥文件,可以查看到类似图3所示的全部私钥信息。 RSA格式私钥: 以证书链“-----BEGIN RSA PRIVATE KEY-----”开头,以证书链“-----END RSA PRIVATE KEY-----”结尾。 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。 证书内容不包含空格。
  • 场景示例 如果某加速域名被禁用的原因仅为域名备案过期,单击“重新审核”后有如下两种情况: 域名已重新备案,系统弹出解禁成功提示信息,域名解禁成功。 域名备案未恢复,系统弹出该加速域名尚未备案提示信息。您需要到工信部为该域名恢复备案后重试。 如果某加速域名被禁用的原因不只是备案过期,单击“重新审核”后系统弹出“该域名被禁用原因不是备案过期,无法通过重新审核来尝试解禁”提示信息,您需要重新检查并整改域名内容,整改完成后提交工单或联系客服咨询处理。
  • CDN自定义策略样例 示例1:授权用户创建加速域名 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "cdn:configuration:createDomains" ] } ] }
  • 示例流程 操作流程如图1所示 图1 操作流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予CDN加速域名只读权限“CDN DomainReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,验证CDN加速域名的只读权限: 对加速域名进行启用或停用操作,如果提示权限不足,表示“CDN DomainReadOnlyAccess”已生效。 在“服务列表”中选择除CDN外的任一服务,如果提示权限不足,表示“CDN DomainReadOnlyAccess”已生效。
  • 背景说明 账户欠费进入保留期后,华为云CDN会下线您的加速域名。 表1 下线策略说明 策略 说明 解析回源 域名被下线时,您的域名会解析回主源站,最终域名状态调整为“停用”,停止CDN加速服务。解析回源后域名配置信息仍会保留(仅限保留期内),待您的域名恢复正常后,CDN会重新将域名解析回CDN节点并提供加速服务。 说明: 加速域名被执行下线策略30天后,华为云CDN将不再提供“解析回源”服务,您的加速域名将无法被访问。 解析回源将把您的源站域名或IP暴露给用户,如果您不希望暴露源站域名或者IP,请选择“停用域名”。 解析回源后业务是否能正常提供服务,依赖于您的源站。 停用域名 域名被下线时,CDN会将您的域名状态调整为“停用”,停止CDN加速服务。域名停用后将无法正常访问,但域名配置信息仍会保留(仅限保留期内),待您的账号核销欠款后,CDN会为您重新启用加速域名。 域名下线后,CDN会给您预留的电话或者邮箱发送短信或者邮件提示,您可以及时充值,恢复CDN加速服务。 超过保留期还没有缴清欠费,CDN的域名和配置将会被删除,保留期时长详见保留期。 域名备案过期、违规、遭受攻击被封禁后将停用域名,不会触发域名下线策略。
  • 审计服务支持的CDN操作列表 表1 云审计 服务支持的CDN操作列表 操作名称 说明 createDomain 创建加速域名 updateDomain 更新加速域名 Range回源 回源跟随 IP黑白名单 设置回源Host 设置源站 OBS私有桶回源 配置HTTPS证书 创建缓存规则 HTTP header配置 域名批量配置 批量HTTPS配置 创建资源标签 删除资源标签 deleteDomain 删除加速域名 enableDomain 启用加速域名 disableDomain 停用加速域名 updateOrigin 设置源站 updateOriginHost 设置回源Host createRefer 创建Referer规则 createCertificate 设置加速域名证书 createCacheRule 创建缓存规则 createRefreshTask 创建刷新缓存任务 createPreheatingTask 创建预热任务
  • 停用加速域名 对处于“已开启”或“配置失败”状态的域名,您可以对其进行“停用”操作。停用后,CDN将不再为域名提供加速服务,但域名的配置不会改变,如果想恢复CDN加速服务请重新启用CDN。 单域名停用 进入CDN控制台的“域名管理”页面,在需要停用的加速域名对应的“操作”列单击“更多”,选择“停用”。 图2 停用域名 确认需要停用的域名信息,单击“确定”完成域名停用操作。 批量停用域名 进入CDN控制台的“域名管理”页面,勾选需要停用的加速域名,单击域名列表上方“停用”。 图3 批量停用域名
  • 注意事项 运营报表中最多可支持添加100个加速域名。 定制的运营报表有效期最长为1年。 可查询的时间跨度最长为31天,支持查看最近90天的历史数据。 最小统计粒度以天为单位。 统计时延和算法误差可能导致统计数据与日志中的数据有差异,请以日志数据为准。 您需要定制运营报表后才能查看对应的数据,受日志完整性时延的影响,当天定制的报表会在次日生成。例如2023.08.02日定制的报表,会在2023.08.03日生成。
  • 排查步骤 检查域名是否接入CDN加速 如果您刚在控制台添加加速域名,正在做配置CNAME前的本地测试加速域名工作,请忽略本步骤,参照快速入门流程配置即可。 您需要检查域名是否解析到CDN,以Windows操作系统为例,打开cmd程序,输入如下指令: nslookup -qt=cname 加速域名 如果返回结果显示CNAME,则表示CNAME配置已经生效,如下图: 如果查询出的域名解析中没有上图红框中所示,后缀为.c.cdnhwc1.com的CNAME解析记录,则说明您添加的域名的CDN加速未生效。此种情况下CDN加速未生效的可能原因是您没有在域名DNS服务商处配置CNAME记录,请根据配置CNAME内容指导前往您的域名DNS服务商处配置CNAME记录。 如果您确认已正确配置CNAME记录,请检查同一解析线路下该域名的上一记录类型的TTL时间,TTL时间决定了解析记录在本地DNS服务器的缓存时间。您新添加的CNAME记录在上一记录类型的本地TTL缓存时间过期后才会正式生效。 查看是否命中CDN缓存 在浏览器Chrome上,按F12,选择“Network”。查看指定URL的响应头,查看头部信息,进行如下判断: 如果有“x-hcs-proxy-type”头部,值为“1”即命中缓存,值为“0”即未命中缓存,不再查看其它头部; 如果无“x-hcs-proxy-type”头部,而有“X-Cache-Lookup”头部,值为“Hit From MemCache”、“Hit From Disktank”或“Hit From Upstream”即为命中缓存,其它值表示未命中缓存,不再查看其它头部; 如果同时无“x-hcs-proxy-type”、“X-Cache-Lookup”头部,有“age”头部,则值大于“0”即命中缓存,值为“0”即未命中缓存。 如果未命中缓存,请跳到4. 检查缓存规则设置查看缓存规则设置。 如果命中缓存,请进入下一步分析。 是否跨运营商和跨省 如果用户访问跨省和跨运营商,可能会影响访问速度,请按照以下步骤排查: 在客户端打开华为云CDN用户诊断系统,输入您的加速域名,单击“检测”,获得客户端IP、LDNS。 根据客户端IP和LDNS分析是否跨运营商和跨省。如果使用了代理,可能会出现跨运营商和跨省,影响访问效果。 示例1:用户在河北使用广电网络访问,但IP是北京联通,LDNS又是石家庄电信,访问速度就会较慢,跨运营商对网速的影响很大。 示例2:用户在北京使用广电网络访问,但IP是北京联通,LDNS又是广东电信,用户访问加速域名时CDN调度系统会根据LDNS匹配最近的广东节点,导致访问速度较慢。 华为云CDN目前支持的运营商有电信、联通、移动、铁通、教育网、鹏博士等。 检查缓存规则设置 检查所访问的资源对应的缓存规则,是否存在配置的缓存过期时间为0或者缓存过期时间过短的情况。CDN不缓存或者缓存过期时间过短会导致请求回源,无法达到加速效果。 检查您的源站缓存设置,如果源站设置了no-cache、private、no-store,CDN侧同时开启了“缓存遵循源站”功能(此功能默认关闭),CDN将无法缓存源站资源,导致所有请求回源,无法达到加速效果。 检查您设置缓存规则的优先级,数值越大优先级越大,系统会优先匹配。 如果您的URL携带了参数,并且参数不断变化,当使用不同的URL去访问的时候,CDN会认为这是一个新请求(即使这两个不同的URL访问的是同一个文件,并且该文件已经缓存在节点上),依然会回源请求该资源。如果携带不同的参数的URL访问的是同一个资源,建议开启忽略URL参数功能,请参见URL参数。 更多缓存设置请参考如何设置缓存过期时间。 检查资源是否预热 如果您是首次访问某资源,且之前未对该资源做过预热处理,CDN节点会回源请求资源,首次访问速度慢属于正常。 首次接入CDN后,建议您预热大文件或者视频,图片、小文件等不建议预热。 检查客户端网络 ping CDN加速后访问依然较慢的域名,检查网络时延和丢包。如果网络时延大或者丢包严重,需要检查客户端网络接入问题。 检查是否存在跨境访问 仅开通了中国大陆境内加速:如果域名的服务范围为中国大陆,此时所有客户端请求均会调度到中国大陆的节点,此时中国大陆境外用户访问域名时,受跨境网络影响,加速效果不太明显,甚至无法访问。 源站位置和服务范围不一致: 如果域名的源站地址在中国大陆境外,服务范围为中国大陆,此时客户端请求回源时受跨境网络影响,加速效果不太明显,甚至无法访问。 如果域名的源站地址在中国大陆境外,服务范围为全球,那么中国大陆用户访问该域名下的资源时,将调度到中国大陆的节点,如果节点未缓存该资源,此时客户端请求回源时受跨境网络影响,加速效果不太明显,甚至无法访问。 如果排除以上几点后问题仍然存在,请联系客服或提交工单处理。
  • 缓存预热失败怎么办? 您可以前往刷新预热历史记录查看失败原因,缓存预热失败的可能原因是: 执行大批量文件的集中预热时,可能会导致您的源站带宽资源被占满。预热时请尽量分批次执行,您也可以通过扩充源站带宽来提升预热效率。 检查资源对应的缓存过期时间是否为0,如果为0,不允许缓存会导致预热失败; 排查源站的cache-control配置,源站配置private、no-cache、no-store而CDN侧同时开启了“缓存遵循源站”功能,将导致CDN不能缓存引起预热失败。 目前不支持预热目录、动态文件。 请检查您的源站资源是否能正常访问(例如网络问题或源站有防火墙、黑/白名单等安全限制),如不能正常访问也将造成预热失败。 父主题: 刷新预热
  • 入门实践 当您完成了数据上传、交换以及管理数据等基本操作后,可以根据自身的业务需求使用EDS提供的一系列常用实践。 表1 常用最佳实践 实践 描述 数据交换 用户建立EDS与第三方内网环境的数据库/FTP服务器的连接 很多企业会把关键数据源建设在内网,例如数据库、文件服务器等。由于EDS运行在云上,所以需要创建EDS与第三方内网数据源的连接,以便更加安全、可靠的交换和管理数据资源。 数据交换 健康医疗数据通过EDS共享和安全管控实践 本实践以xx医疗集团和某慢病院交换“风湿病患者医疗数据”为例,指导用户在医疗场景中如何安全的进行数据交换。
  • 到期后影响 图4描述了包年/包月EDS资源各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期;资源到期而未续费时,将陆续进入宽限期和保留期。 图4 包年/包月EDS资源生命周期 到期预警 包年/包月资源在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为账号的创建者。 到期后影响 当您的包年/包月资源到期未续费,首先会进入宽限期,资源状态变为“已过期”。宽限期内您可以正常访问空间实例和连接器,但扩容数据存储容量将受到限制。 如果您在宽限期内仍未续费包年/包月资源,那么就会进入保留期,资源状态变为“已冻结”,您将无法对处于保留期的包年/包月资源执行任何操作。 保留期到期后,若包年/包月资源仍未续费,那么DMAP数小二实例、空间实例、连接器和数据存储都将被释放,数据无法恢复。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。
  • 连接器计费示例 假设您在2023/07/08 16:50:04购买了一个包年/包月的连接器,计费资源包括连接器、结构化数据存储容量、非结构化数据存储容量。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/07/08 16:50:04 ~ 2023/08/08 23:59:59 第二个计费周期为:2023/08/08 23:59:59 ~ 2023/09/08 23:59:59 您需要为每个计费周期预先付费,各项连接器资源单独计费,计费公式如表3所示。 表3 计费公式 资源类型 计费公式 连接器规格 规格单价 * 购买时长 结构化数据存储容量 数据存储容量 * 存储量单价 * 购买时长 非结构化数据存储容量 数据存储容量 * 存储量单价 * 购买时长 本章描述图中价格仅供参考,实际计算请以华为云官网发布的实际价格为准。
  • DMAP数小二计费示例 假设您在2024/09/01 16:50:07购买了一个包年/包月DMAP数小二实例(规格:基础共享版),购买时长为一年,并在到期前手动续费一年,则: 第一个计费周期为:2024/09/01 16:50:07 ~ 2025/09/01 23:59:59 第二个计费周期为:2025/09/01 23:59:59 ~ 2026/09/01 23:59:59 您需要为每个计费周期预先付费,该资源单独计费。
  • 交换数据空间 适用计费项 交换数据空间实例和连接器配合数据存储容量,才可以实现交换数据。以下计费项支持包年/包月。 表1 适用计费项 计费项 说明 交换数据空间实例 根据实例规格和购买时长计费。 连接器 根据连接器规格和购买时长计费,建议购买周期与空间实例一致。 结构化数据存储容量(必选) 默认结构化数据存储容量10G(需购买),计费模式为“包年/包月”。 非结构化数据存储容量(必选) 默认非结构化数据存储容量20G(需购买),计费模式为“包年/包月”。 假设您计划购买一个交换数据空间实例,在购买交换数据空间实例的地方,您将看到该费用,如图1所示。 图1 配置空间实例费用示例 假设您计划购买一个连接器,并同时选择了数据存储容量。在购买连接器页面底部,您将看到所需费用明细,如图2所示。 图2 配置连接器费用示例 配置费用将包括以下部分: 交换数据空间实例:根据所选规格和购买时长计费。 连接器:根据所选规格和购买时长计费。 非结构化存储:根据所选容量大小计算的费用。 结构化存储:根据所选容量大小计算的费用。
  • 计费周期 包年/包月资源的计费周期是根据您购买的时长来确定的(以UTC+8时间为准)。一个计费周期的起点是您开通或续费资源的时间(精确到秒),终点则是到期日的23:59:59。 例如,如果您在2023/07/08 15:50:04购买了一个时长为一年的交换数据空间,那么其计费周期为:2023/07/08 15:50:04 ~ 2024/07/08 23:59:59。 如果您在2023/07/08 16:50:05购买了一个时长为一个月的连接器,那么其计费周期为:2023/07/08 16:50:05 ~ 2023/08/08 23:59:59。
  • 变更配置后对计费的影响 当前包年/包月连接器中的数据存储容量不满足您的业务需要时,您可以在连接器的控制台发起扩容操作,变更时系统将按照如下规则为您计算变更费用: 资源扩容:新配置价格高于老配置价格,此时您需要支付新老配置的差价。 本服务暂不支持降低存储数据容量。这里以资源扩容且无任何优惠的场景为例,假设您在2023/07/08购买了一个连接器(结构化数据存储50G),购买时长为1个月,计划在2023/07/18变更规格为70G的结构化数据存储。旧配置价格为300元/月,新配置价格为420元/月。计算公式如下: 升配费用=(新规格配置价格-旧规格配置价格)*剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。本示例中,剩余周期=13(7月份剩余天数)/ 31(7月份最大天数)+ 8(8月份剩余天数)/ 31(8月份最大天数),代入公式可得升配费用=(420-300)*(13/31+8/31)=81.29(元) 更多信息请参见变更资源规格费用说明。
  • 空间实例计费示例 假设您在2023/07/08 15:50:04购买了一个包年/包月交换数据空间实例(规格:基础版),购买时长为一年,并在到期前手动续费一年,则: 第一个计费周期为:2023/07/08 15:50:04 ~ 2024/07/08 23:59:59 第二个计费周期为:2024/07/08 23:59:59 ~ 2025/07/08 23:59:59 您需要为每个计费周期预先付费,该资源单独计费。
  • 数据资产运营 现状问题 组织内存在数据不可见、查找困难、标准不统一,无法理解、权限管控难等问题。 数据资源无法有效转化成数据资产,业务与IT之间存在巨大屏障,阻碍数据价值的具体发挥。 方案收益 实现数据资产的全域盘点,支持语义搜索,帮助用户一键查找所需。 支持360度资产刻画,实现数据集、逻辑数据实体、隐私密级的详情查看,帮助用户全面理解数据,洞悉数据资产的流通全局,提升可信度。 基于AppID开展数据隐私及密级管理,加强对数据资产的安全可控。
  • 数字化报告可视化 现状问题 业务、应用、数据和技术架构的变更通过线下方式进行,没有通过统一的系统来发布和承载。 企业的数字化转型过程中的大量投入及工作成果无法快速准确、直观的体现出来。 方案收益 元模型驱动40+数字化报告模板生成,开箱即用,分钟级构建数字化报告。 基于AppID开发的数字化报告,让CXO洞察数字化变革进展。 EA元模型,将数字资产像七巧板一样自由组合,形成利益相关人关心的、多维度的、能辅助决策的数字化报告。
  • 调用API示例 在工程中引入sdk(signer.go)。 import "apig-sdk/go/core" 生成一个新的Signer,输入AppKey和AppSecret。 // 认证用的ak和sk编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量SDK_AK和SDK_SK。 ak = os.Getenv("SDK_AK"); sk = os.Getenv("SDK_SK"); s := core.Signer{ Key: ak, Secret: sk, } 生成一个新的Request,指定域名、方法名、请求url、query和body。 r, _ := http.NewRequest("POST", "http:/c967a237-cd6c-470e-906f-a8655461897e.apigw.cn-north-1.huaweicloud.com/api?a=1&b=2", ioutil.NopCloser(bytes.NewBuffer([]byte("foo=bar")))) 给请求添加header头,内容为具体参数数据。如有需要,添加需要签名的其他头域。 r.Header.Add("x-stage", "RELEASE") r.Header.Add("name","value") 进行签名,执行此函数会在请求中添加用于签名的X-Sdk-Date头和Authorization头。然后为请求添加x-Authorization头,值与Authorization头相同。 s.Sign(r) authorization := r.Header.Get("Authorization") r.Header.Add("x-Authorization", authorization) 访问API,查看访问结果。 resp, err := http.DefaultClient.Do(r) body, err := ioutil.ReadAll(resp.Body)
  • 准备环境 已获取API的域名、请求url、请求方法、AppKey和AppSecret等信息,具体参见认证前准备。 获取并安装Nodejs安装包,如果未安装,请至Nodejs官方网站下载。 Nodejs安装后,在命令行中,用npm安装“moment”和“moment-timezone”模块。 npm install moment --save npm install moment-timezone --save 获取并安装IntelliJ IDEA,如果未安装,请至IntelliJ IDEA官方网站下载。 已在IntelliJ IDEA中安装NodeJS插件,如果未安装,请按照图1所示安装。 图1 安装NodeJS插件
  • 调用API(Node.js)示例 在工程中引入signer.js。 1 2 var signer = require('./signer') var http = require('http') 生成一个新的Signer,填入AppKey和AppSecret。 1 2 3 4 5 6 7 8 // 认证用的ak和sk编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量SDK_AK和SDK_SK。 var ak = process.env.SDK_AK; var sk = process.env.SDK_SK; var sig = new signer.Signer(); sig.Key = ak; sig.Secret = sk; 生成一个Request对象,指定方法名、请求uri和body。 1 2 var r = new signer.HttpRequest("POST", "c967a237-cd6c-470e-906f-a8655461897e.apigw.cn-north-1.huaweicloud.com/app1?a=1"); r.body = '{"a":1}' 给请求添加header头,内容为具体参数数据。如有需要,添加需要签名的其他头域。 1 r.headers = { "x-stage":"RELEASE", "name":"value"} 进行签名,执行此函数会生成请求参数,用于创建http(s)请求,请求参数中添加了用于签名的X-Sdk-Date头和Authorization头。然后为请求参数添加x-Authorization头,值与Authorization头相同。 1 2 var opt = sig.Sign(r) opt.headers["x-Authorization"] = opt.headers["Authorization"] 访问API,查看访问结果。如果使用https访问,则将“http.request”改为“https.request”。 1 2 3 4 5 6 7 8 9 10 11 var req=http.request(opt, function(res){ console.log(res.statusCode) res.on("data", function(chunk){ console.log(chunk.toString()) }) }) req.on("error",function(err){ console.log(err.message) }) req.write(r.body) req.end()
  • 调用API示例 使用JavaScript SDK生成curl命令。 获取“ApiGateway-javascript-sdk.zip”压缩包并解压。在浏览器中打开demo.html,页面如下图所示。 填入Key、Secret、方法名、请求协议、域名和url(认证用的ak和sk编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全)。本示例从前端输入,仅用于演示,例如: 1 2 3 4 Key=4f5f626b-073f-402f-a1e0-e52171c6100c Secret=****** Method=POST Url=https://{apig-endpoint} 填入json格式的Query和Headers,填入Body。其中所访问API的ID为必填项,需要填入具体的ID信息,以参数"x-api-id"填入Headers中。 单击“Send request”,生成curl命令。 $ curl -X POST "https://{apig-endpoint}/" -H "X-Sdk-Date: 20180530T115847Z" -H "Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -d "" 为命令添加x-Authorization头,值与Authorization头相同。将curl命令复制到命令行,访问API。 $ curl -X POST "https://{apig-endpoint}/" -H "X-Sdk-Date: 20180530T115847Z" -H "Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -H "X-Authorization: SDK-HMAC-SHA256 Access=071fe245-9cf6-4d75-822d-c29945a1e06a, SignedHeaders=host;x-sdk-date, Signature=9e5314bd156d517******dd3e5765fdde4" -d "" Congratulations, sdk demo is running
共100000条