华为云用户手册

  • KMS加密文件配置 CDN默认无法读取OBS桶中的加密文件,若您的OBS桶存在此类文件,建议您慎重开启 CDN加速 ,避免加密对象泄露。如果您因业务需求,需要加速OBS桶中的KMS加密文件,请注意: 如果您的OBS桶是公有桶,CDN将无法读取桶中的KMS加密文件,从而导致回源失败,用户无法访问到加密文件。 解决方案:将公有桶中的加密文件转移到私有桶中,再接入CDN加速。 如果您的OBS桶是私有桶,需要为“CDNAccessPrivateOBS”委托配置“KMS Administrator”权限。如此,CDN才能读取OBS私有桶中的KMS加密文件并加速,配置过程详见OBS委托授权。
  • 方案优势 低成本 CDN加速OBS桶文件后,资源缓存在CDN节点,用户请求无需回源,而CDN加速的费用较低,二者配合使用可以节约50%到57%的带宽成本,详见通过CDN减少OBS公网带宽费用。 OBS桶提供CDN回源流量包折扣方式,使CDN从OBS桶获取数据时流量费用更低,计费详情请见CDN加速OBS计费规则。 CDN加速OBS桶不支持走内网。 高效率 华为云CDN具有加速资源丰富、节点分布广泛优势,保证将用户请求精准调度至较优边缘节点,提供有效且稳定的加速效果。 自动刷新 通过OBS控制台为您的桶绑定加速域名后,支持自动刷新配置,您可以参考配置CDN自动刷新完成相关配置。
  • 适用场景 通过OBS桶提供文件下载业务的应用或服务。例如:通过HTTP/HTTPS提供文件下载业务的网站、工具下载、游戏客户端、APP商店等。 通过OBS桶提供音 视频点播 业务的应用或服务。例如:在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播APP等。 通过OBS桶提供图片素材等的网站。例如:包括门户网站、电商平台、资讯APP、UGC应用(User Generated Content,用户原创内容)等
  • 约束与限制 只有版本号为3.0及以上的桶支持此方案。桶版本号可以在OBS控制台上,进入桶概览页面后,在“基本信息”中查看。 当OBS配置了镜像回源且CDN侧开启Range回源时,如果镜像源站未遵循RFC Range Requests标准,对range请求响应非206 ,CDN会回源失败。如需支持该场景,请提工单申请。 当CDN源站类型为“OBS桶域名”且接入的是OBS私有桶时,不支持文件上传操作。如果您需要通过CDN将文件上传到OBS私有桶,需要以“源站域名”的形式将OBS私有桶接入CDN,同时,客户端携带鉴权请求头上传文件。 OBS私有桶以源站域名接入CDN后,因CDN无私有桶上传权限,此时客户端无法正常访问加速域名。使用GET/HEAD等方式通过此加速域名请求资源时,也需携带鉴权请求头。
  • 背景介绍 现在越来越多的行业使用OBS桶存储图片、视频、软件包等静态资源文件,并将OBS桶作为网站、论坛、APP、游戏等业务的存储源。在需要获取这些静态资源时,用户通过URL直接从OBS桶请求数据。OBS桶能够很好的解决本地存储不够用的难题,但一般情况下文件只存储在一个区域,不同区域的用户访问OBS桶的响应速度存在差异。在需要频繁访问的场景下,直接访问OBS桶来获取相应文件,还会消耗大量的流量费用。
  • 数据回源 如果数据上传逻辑不做改变,则可使用OBS的“数据回源”功能,在文件访问请求到达OBS而OBS桶里没有该文件时,可通过“数据回源”将客户端请求重定向到设定的源站并异步地从源站将数据拉取到OBS存储下来,架构如下: 详细流程说明: 客户端向华为CDN发起获取文件的请求 华为CDN回源到华为OBS请求文件,OBS侧事先配置好数据回源,当请求的文件不存在时,会响应302重定向到配置的源站(此处为其他云对象存储) 华为CDN接收到OBS返回的302请求 OBS异步从客户配置的源站请求文件 华为CDN处理302跳转到其他云对象存储侧获取数据 其他云对象存储响应华为CDN的文件请求 华为CDN将文件内容返回给客户端,当下次客户端请求同样的文件时,华为CDN直接回源到OBS获取。 “数据回源”功能是被动触发式,即只有向OBS发起请求后OBS才会到设置的源站将数据拉取过来,所以当一个新文件上传到其他云对象存储后,建议业务应用程序向OBS触发一个GET请求来请求数据(发起GET请求后可关闭连接,无需接收实体数据)。另外该架构会在其他云对象存储侧产生两份数据流量(针对同一个文件,CDN拉取一次,OBS拉取一次)。
  • 为什么OBS桶接入CDN后,访问域名会列出所有文件列表? 如果用户对OBS桶有读权限,就可以读取桶内对象列表。当用户请求的是CDN加速域名的时候,OBS就默认返回桶内对象列表。解决办法如下: 如果您使用的是OBS公有桶,请参考以下操作步骤解决该问题: 在OBS处开启静态网站托管,操作步骤请参考配置静态网站托管。 同时在CDN域名的源站配置页面勾选“静态网站托管”。 在CDN控制台域名管理页面,单击需要配置的域名。 在“基本配置”页签下“源站配置”处单击“编辑”。 勾选“静态网站托管”,完成配置。如图所示。 如果您使用的是OBS私有桶,请参考通过CDN加速OBS视频点播文档中实施步骤的第6步处理。 如果您使用的是OBS私有桶,您还可以通过给“CDNAccessPrivateOBS”委托创建一条拒绝列举桶内对象的策略,达到不会列出桶文件列表的目的,步骤如下: 前往 IAM 控制台,在左侧菜单栏选择“委托”,在“CDNAccessPrivateOBS”的“操作”列,单击“授权”。 在授权页面单击“新建策略”,配置如下参数: 表1 参数说明 参数 说明 策略名称 输入自定义的桶策略名称,例如:deny ListBucket。 策略配置方式 可视化视图。 策略内容 效力 拒绝。 云服务 对象存储服务 (OBS)。 操作项 在列表一栏勾选“obs:bucket:ListBucket”。 资源 所有资源 请求条件 - 单击“下一步”,进入选择策略页面。 勾选刚创建的策略,此处示例为“deny ListBucket”,单击“下一步”,进入设置最小授权范围界面。 单击“确定”,完成授权,授权后15~20分钟生效。 授权生效后,请刷新CDN缓存后重试。
  • 背景信息 CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容,所以接入CDN的网站都能有比较快的响应速度。 Web应用防火墙 (WAF:Web Application Firewall),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。 如果您的网站对安全性能要求比较高,同时又有加速的需求,可以使用华为云CDN联动WAF配置,实现加速的同时防护Web攻击。
  • CDN用户分析 用户行为分析报表可以帮助您快速了解当前用户的结构,主要包含以下数据: 访问次数:总访问次数,PV。 访问人数:总访问人数,UV。 访问客户端统计:统计客户端访问的数量和占比。 运营商次数统计:统计各个营商的访问次数和占比 访问地区分布:统计访问的地区分布及Top值。 有效访问用户TOP:统计有效访问用户的Top值。 下载量TOP用户:统计通过CDN下载的用户Top值。 图4 用户分析
  • CDN基础数据 基础数据报表可以帮助您快速了解CDN服务的性能,包含以下数据: 缓存命中率:用户请求资源命中CDN缓存的概率(按字节)。 请求命中率:用户请求资源命中CDN缓存的概率(按请求数)。 下载速度:用户通过CDN下载资源的速度。 访问状态:按照返回的状态码(200、4xx、5xx) 统计用户的请求状态及占比。 访问延时分布:不同延时时段的占比。 请求带宽:展示不同时段的用户请求带宽。 访问次数/人数:展示不同时段的访问次数和人数。 访问平均延时:终端用户访问页面延时的平均值。 图3 基础数据
  • CDN热门资源 热门资源数据可以帮助您了解热门资源详情,也可以从热门数据了解到您的运营活动效果是否正常、热点时间内流量的上涨是否符合预期,以便及时调整运营策略。通过热门资源可以查看以下数据: 域名访问次数Top5:统计用户访问量较多的域名Top5。 域名下载流量Top5:统计用户下载量较多的域名Top5。 热门访问(URI):统计用户访问量较多的URI Top。 热门访问(来源):统计热门Referer来源域名,并且记录访问次数、人数、占比。 全国访问次数分布统计:按省份统计全国各地访问的次数。 全国下载网速统计:按省份统计全国各地下载的速度。 省份统计:按省份统计访问次数、下载速度、下载总量。 运营商流量和速度:统计各运营商在不同时段的流量和下载速度。 运营商统计:统计不同运营商的访问次数、下载速度、下载流量。 图5 热门资源
  • 如何开通实时日志 目前已实现对接LTS服务,控制台暂未开通自助配置功能,您可以提交工单申请开通实时日志功能,提交工单时请提供项目(cn-north-4)、项目ID、日志组、日志流信息。示例如下: 项目:cn-north-4。 项目ID:81b6********************bcf543ea。 日志组:test-cdn-log-prod。 日志组ID:95****53-3a81-49ed-9003-c24******de8 日志流:test-cdn-log-data-flow-prod。 日志流ID:a9****63-5b82-4126-80c9-212******534 日志推送成功后可通过 云日志 服务控制台查看CDN日志,云日志服务为CDN定制了如下功能: 图1 日志服务仪表盘 表1 功能详情 功能 说明 CDN错误分析 支持查看和导出错误访问信息,可按照域名、URI、请求状态、运营商、错误码等维度分析,帮助您快速定位和分析错误信息。 CDN基础数据 支持查看和导出CDN的基础数据,如缓存命中率、下载速度、访问状态、访问延时、请求命中率、请求带宽、访问平均延时等,帮助您了解CDN的整体运行状态,及时发现和处理异常情况。 CDN用户分析 支持查看和导出CDN的用户访问数据,如访问次数、访问人数、访问客户端、运营商次数统计、访问地区分布、有效访问用户TOP、下载量TOP用户等信息,帮助您更好的了解用户特点。 CDN热门资源 支持查看和导出CDN的热门资源,如域名访问次数TOP5、域名下载流量Top5、热门访问(URI)、热门访问(来源)、运营商流量和速度、运营商统计等,帮助您根据热门访问情况及时调整运营策略。 如果以上功能不能满足您的需求,您可以定制仪表盘,请在提交工单时提出您的需求。 您还可以根据业务情况创建告警规则,以便及时跟进和处理异常事件,配置请参考日志告警。
  • CDN错误分析 通过CDN错误分析报表,您可以查看用户访问异常信息,帮助您快速定位异常访问源头。通过本报表您可以查看以下数据: 错误域名访问Top5:按照域名维度统计访问错误Top域名。 错误URI访问Top5:按照URI维度统计访问错误Top URI。 错误请求状态分布:统计错误请求状态码的数量和占比。 错误按运营商统计:统计各个运营商的错误和占比。 错误按客户端统计:统计客户端访问错误的数量和占比。 错误按省份统计:统计访问错误的省份。 4XX错误详情:统计4XX类错误的次数、占比、运营商及所在省份。 5XX错误详情:统计5XX类错误的次数、占比、运营商及所在省份。 错误按国家统计:按照国家维度统计访问错误所在地。 图2 错误分析
  • 实时日志字段 表2 实时日志字段说明 字段 字段含义 是否一定有值 缺省值 request_time 请求时间戳,单位:毫秒 是 无 domain 请求的域名 是 无 method 请求方法 是 无 scheme 请求协议 是 无 uri 请求资源 是 无 uri_param 请求参数 否 "-" client_ip 用户真实IP 是 无 client_port 和CDN节点建连客户端端口 是 无 refer_protocol HTTP refer中的协议 否 "-" refer_domain HTTP refer中domain信息 否 "-" refer_uri HTTP refer中uri信息 否 "-" refer_param HTTP refer中的参数信息 否 "-" request_size 请求大小 是 无 response_time 请求响应时长,单位:毫秒 是 无 response_size 请求返回大小,单位:字节 是 无 http_code 请求响应码 是 无 response_range 应答头里表示的range信息(由源站创建),如bytes:0~99/200 是 无 request_range 用户请求中Header头中range字段取值,如bytes:0~100 是 无 request_body_bytes 实际发送body大小,单位:字节 是 无 content_type 请求的资源类型 是 无 hit_info 命中信息,取值为HIT(命中)、MISS(未命中) 是 无 user_agent UA 否 "-" uuid 请求唯一标识(全网唯一请求ID,即traceid) 是 无 via_info via头信息 否 "-" X-Forwarded-For 请求头中X-Forwarded-For字段 否 "-"
  • 为什么要看实时日志 实时日志可以帮助您分析加速域名遇到的异常问题,也可以帮助您了解用户的访问情况。实时日志的优势如下: 当前CDN控制台可为用户展示的离线日志是延时了6个小时的日志,而实时日志延时较小,可以帮助您更快速的对终端用户访问日志进行分析。 传统离线日志需要您先将离线日志包下载、解压再对日志进行分析处理,过程比较繁琐。华为云已打通与云日志服务间的通信链路,采用流式传输,免去了传统日志繁琐的下载分析流程。 云日志服务已部署CDN专属的可视化仪表盘,您可以一键开启,将CDN原始日志可视化呈现。 离线日志目前默认提供访问时间、状态码等13个字段,实时日志默认提供 日志分析 常用的25个字段,详见实时日志字段。
  • 配置示例 配置场景1:有一个门户网站,配置了华为云CDN加速,客户希望不缓存首页 需要在CDN控制台增加一条类型为“首页”,缓存过期时间为“0”的规则。 配置场景2:设置某个类型的文件或者某个页面不缓存 某客户配置了CDN加速,设置了对“.do”格式的文件缓存1天,由于业务需求,需要对“.do”格式的文件不缓存。 需要在CDN控制台增加一条文件名后缀为“.do”的缓存规则,缓存过期时间设置为“0”。 新规则仅对后续资源缓存生效,新规则配置完成后,建议您刷新“.do”文件所在的URL或者目录,新规则才可以对所有“.do”文件生效。 某客户配置了CDN加速,发现登录界面无限循环,无法登录,停用CDN加速后,可以正常登录。 这是因为CDN节点缓存了登录界面导致的,需要在控制台增加一条针对登录界面的缓存规则,缓存过期时间设置为“0”。以华为云控制台登录界面为例,华为云控制台的登录页面为“https://auth.huaweicloud.com/authui/login.html#/login”,在控制台增加一条全路径:/authui/login.html#/login,缓存过期时间为“0”的缓存规则。 配置场景3:某客户加速域名www.example.com设置了如下图的缓存规则,不知道哪一个规则生效。 用户访问www.example.com/test/cdn.jpg,虽然所有文件、文件名后缀、全路径三条规则都匹配到了,但是由于全路径的优先级为8,在三条规则里优先级最高,所以系统最终匹配全路径/test/*.jpg这条规则。
  • 根据业务类型设置缓存过期时间 CDN默认缓存过期时间: 业务类型选择的是网站加速、文件下载加速或点播加速,且源站类型为源站IP或源站域名的加速域名,会有两条默认缓存规则。 常规动态文件(如: .php .jsp .asp .aspx)默认缓存过期时间为0,对此类动态文件请求会直接回源,此默认规则允许修改和删除。 除常规动态文件外的其他“所有文件”默认缓存过期时间30天,允许修改,不允许删除。 若您在添加域名里源站类型选择的是“OBS桶”,会有一条默认缓存规则。 默认有“所有文件”默认缓存过期时间30天,允许修改,不允许删除。 所有文件默认缓存30天,此规则允许修改但不允许删除。您可以将自定义缓存规则设置为更高优先级(数值更大),该自定义规则将会被优先匹配。 业务类型为全站加速时,默认有“所有文件”、缓存过期时间为“0”的缓存规则,允许修改和删除。 您可以根据业务类型配置缓存过期时间: 网站加速类型,建议设置缓存过期时间: 对php、aspx、asp、 jsp、 do、 dwr、cgi、 fcgi、action、ashx、axd、json等动态文件不缓存。 对以shtml、html、htm、js结尾的文件,建议缓存7天。 其他静态文件建议缓存30天。 下载加速类型,建议设置缓存过期时间: 对php、aspx、asp、jsp、do等动态文件不缓存。 对7z、apk、 wdf、 cab、 dhp、exe、flv、gz、ipa、iso、mpk、MPQ、pbcv、pxl、qnp、r00、rar、xy、xy2、zip、CAB等文件缓存30天。 视频点播加速 类型,建议设置缓存过期时间: 对php、aspx、asp、jsp、do等动态文件不缓存。 对mwv、html、htm、shtml、hml、gif、swf、png、bmp、js等缓存7天。 对MP3、wma、7z、apk、 wdf、 cab、 dhp、exe、flv、gz、ipa、iso、mpk、MPQ、pbcv、pxl、qnp、r00、rar、xy、xy2、zip、CAB等文件缓存30天。
  • 源站对CDN节点缓存的影响 源站设置了缓存过期时间 源站设置了no-cache、private、no-store,CDN侧同时开启了“缓存遵循源站”功能:CDN节点不缓存源站资源,用户每次访问都需要回源,无法达到加速的目的。 CDN默认关闭“缓存遵循源站”功能。 设置了其它缓存过期时间:CDN控制台默认或者新设置的缓存过期时间会覆盖源站的缓存过期时间。 源站未设置缓存过期时间 遵循CDN控制台默认或者新设置的缓存过期时间。
  • 响应示例 { "count": 19, "auth_infos": [{ "auth_info_name": "lan2", "datasource_type": "Kafka_SSL", "create_time": 1578896427789, "update_time": 1578898059677, "owner": "ei_dlics_d00352221", "truststore_location": "obs://lan-1/cer/truststore.jks", "keystore_location": "obs://lan-1/cer/keystore.jks" }, { "auth_info_name": "lan3", "datasource_type": "Kafka_SSL", "create_time": 1578899029971, "update_time": 1578901678150, "owner": "ei_dlics_d00352221", "truststore_location": "obs://lan-1/cer/truststore1.jks", "keystore_location": "obs://lan-1/cer/keystore.jks" }] }
  • 响应参数 表3 响应参数 参数 参数类型 说明 is_success Boolean 请求执行是否成功。“true”表示请求执行成功。 message String 系统提示信息,执行成功时,信息可能为空。 count int 证书个数。 auth_infos List 认证信息列表。详细说明请参考表4。 表4 auth_infos参数说明 名称 参数类型 说明 auth_info_name String 用户安全集群的登录用户名。 user_name String 用户安全集群的登录密码。 certificate_location String 创建时指定的证书OBS路径。 datasource_type String 数据源的类型。 create_time Int 创建时间戳。 update_time Int 更新时间戳。 krb5_conf String krb5配置文件obs路径。 keytab String keytab配置文件obs路径。 truststore_location String truststore配置文件obs路径。 keystore_location String keystore配置文件obs路径。 owner String 所属用户名。
  • URI URI格式: GET /v2.0/{project_id}/datasource/auth-infos 参数说明 表1 URI参数说明 参数 是否必选 参数类型 描述 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 表2 query参数 参数名称 是否必选 参数类型 说明 limit 否 String 查询最大连接个数,默认为100。 offset 否 String 查询结果偏移量,默认为0(连接以创建时间进行排序)。 auth_info_name 是 String 认证信息名,同一个project下唯一。
  • 请求参数 表2 请求参数 名称 是否必选 参数类型 说明 auth_info_name 是 String 认证信息名,同一个project下唯一。 user_name 否 String 认证相关用户名。 password 否 String 认证相关用户密码。 certificate_location 否 String 用户安全集群的证书路径,目前只支持OBS路径,cer类型文件。 datasource_type 是 String 数据源类型,目前支持 CSS ,KRB,passwd,Kafka_SSL。 krb5_conf 否 String krb5配置文件obs路径。 keytab 否 String keytab配置文件obs路径。 truststore_location 否 String truststore配置文件obs路径。 truststore_password 否 String truststore配置文件密码。 keystore_location 否 String keystore配置文件obs路径。 keystore_password 否 String keystore配置文件密码。 key_password 否 String key密码。
  • 请求示例 创建一个 CS S类型的跨源认证。 { "auth_info_name": "test", "user_name": "admin", "password": "***", "certificate_location": "obs://test/CloudSearchService.cer", "datasource_type": "CSS" }
  • 请求参数 名称 是否必选 参数类型 说明 auth_info_name 是 String 指定更新的跨源认证名称。 user_name 否 String 用户安全集群的新登录用户名。 password 否 String 用户安全集群的新登录密码。 krb5_conf 否 String krb5配置文件obs路径。 keytab 否 String keytab配置文件obs路径。 truststore_location 否 String truststore配置文件obs路径。 truststore_password 否 String truststore配置文件密码。 keystore_location 否 String keystore配置文件obs路径。 keystore_password 否 String keystore配置文件密码。
  • 请求示例 创建一个CSS类型的跨源认证。 { "auth_info_name": "test", "user_name": "admin", "password": "***", "certificate_location": "obs://test/CloudSearchService.cer", "datasource_type": "CSS" }
  • 请求参数 表2 请求参数 名称 是否必选 参数类型 说明 auth_info_name 是 String 认证信息名,同一个project下唯一。 user_name 否 String 认证相关用户名。 password 否 String 认证相关用户密码。 certificate_location 否 String 用户安全集群的证书路径,目前只支持OBS路径,cer类型文件。 datasource_type 是 String 数据源类型,目前支持CSS,KRB,passwd,Kafka_SSL。 krb5_conf 否 String krb5配置文件obs路径。 keytab 否 String keytab配置文件obs路径。 truststore_location 否 String truststore配置文件obs路径。 truststore_password 否 String truststore配置文件密码。 keystore_location 否 String keystore配置文件obs路径。 keystore_password 否 String keystore配置文件密码。 key_password 否 String key密码。
  • 响应参数 表3 响应参数 参数 参数类型 说明 is_success Boolean 请求执行是否成功。“true”表示请求执行成功。 message String 系统提示信息,执行成功时,信息可能为空。 count int 证书个数。 auth_infos List 认证信息列表。详细说明请参考表4。 表4 auth_infos参数说明 名称 参数类型 说明 auth_info_name String 用户安全集群的登录用户名。 user_name String 用户安全集群的登录密码。 certificate_location String 创建时指定的证书OBS路径。 datasource_type String 数据源的类型。 create_time Int 创建时间戳。 update_time Int 更新时间戳。 krb5_conf String krb5配置文件obs路径。 keytab String keytab配置文件obs路径。 truststore_location String truststore配置文件obs路径。 keystore_location String keystore配置文件obs路径。 owner String 所属用户名。
  • URI URI格式: GET /v3/{project_id}/datasource/auth-infos 参数说明 表1 URI参数说明 参数 是否必选 参数类型 描述 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 表2 query参数 参数名称 是否必选 参数类型 说明 limit 否 String 查询最大连接个数,默认为100。 offset 否 String 查询结果偏移量,默认为0(连接以创建时间进行排序)。 auth_info_name 是 String 认证信息名,同一个project下唯一。
  • 响应示例 { "count": 19, "auth_infos": [{ "auth_info_name": "lan2", "datasource_type": "Kafka_SSL", "create_time": 1578896427789, "update_time": 1578898059677, "owner": "ei_dlics_d00352221", "truststore_location": "obs://lan-1/cer/truststore.jks", "keystore_location": "obs://lan-1/cer/keystore.jks" }, { "auth_info_name": "lan3", "datasource_type": "Kafka_SSL", "create_time": 1578899029971, "update_time": 1578901678150, "owner": "ei_dlics_d00352221", "truststore_location": "obs://lan-1/cer/truststore1.jks", "keystore_location": "obs://lan-1/cer/keystore.jks" }] }
  • 常见编译问题 本章节收录了编译sdk或者sdk demo可能遇到的一些编译问题,对应版本的问题可能在其他旧版本中也出现,都可以参考 v3.23.3版本反映的常见问题: 问题1: 编译sdk的vs工程报错: 报错文件:目录${yourSDKPath}\platform\eSDK_LogAPI_V2.1.10\C\include下面的eSDKLogAPI.h、eSDKLogDataType.h这两个文件 vs编译器错误码:c2018 解决方案: 修改上述目录下的两个文件(eSDKLogAPI.h、eSDKLogDataType.h)的行尾序列为CRLF 问题2:sdk的vs工程编译成功后还需要手动拷贝lib、dll到demo工程目录下才能运行demo程序,不够方便 解决方案(以Debug,x64为例): 1、编译Debug,x64的obs.sln解决方案 2、打开obs_demo.sln解决方案,调整属性为Debug,x64,按图操作后,填入值: PATH=%PATH%;$(ProjectDir)..\..\eSDK_OBS_API_C++\build\vc100\Debug;$(ProjectDir)..\..\eSDK_OBS_API_C++\bin\win64_x64_msvc\release;$(ProjectDir)..\..\..\..\platform\eSDK_LogAPI_V2.1.10\C\release_x64;$(LocalDebuggerEnvironment) v3.22.7版本反映的Sdk本体常见编译问题 问题1: 解决方案:通过下面的脚本去编译securec组件,并将产物拷贝到对应目录 export Your_SDK_path='Your_SDK_path' cd ${Your_SDK_path}/platform/huaweisecurec/src/ make mkdir ${Your_SDK_path}/platform/huaweisecurec/lib/linux cp ${Your_SDK_path}/platform/huaweisecurec/lib/libsecurec.so ${Your_SDK_path}/platform/huaweisecurec/lib/linux cd ${Your_SDK_path}/source/eSDK_OBS_API/eSDK_OBS_API_C++ #需要先cd到目录下,因为脚本按相对路径查找依赖项 sh build.sh 问题2: 解决方案: 在source\eSDK_OBS_API\eSDK_OBS_API_C++\src\object\download_file.c 中删除26、27行(如下) pthread_mutex_t g_mutexThreadCheckpoint; pthread_mutex_t g_mutexThreadCheckpoint_download; 在source\eSDK_OBS_API\eSDK_OBS_API_C++\src\object\object_common.c 中删除31、32行(如下) pthread_mutex_t g_mutexThreadCheckpoint; pthread_mutex_t g_mutexThreadCheckpoint_download; 之后编译即可 问题3: 这个问题一般是在其他路径中执行build.sh导致的,需要先cd到对应目录下再执行,因为脚本按相对路径查找依赖项,执行如下脚本编译 export Your_SDK_path='Your_SDK_path' cd ${Your_SDK_path}/source/eSDK_OBS_API/eSDK_OBS_API_C++ sh build.sh v3.22.7版本反映的常见Sdk Demo编译问题 问题1: 需要拷贝cjson头文件以及相关库(如果是arm需要把路径中的linux替换为arm) 同时需要改Makefile export Your_SDK_path='Your_SDK_path' export Your_DEMO_path='Your_DEMO_path' cp ${Your_SDK_path}/build/script/Provider/build/linux/cjson-1.7.15/include/cJSON.h ${Your_DEMO_path}/include cp ${Your_SDK_path}/build/script/Provider/build/linux/cjson-1.7.15/lib/libcjson.so* ${Your_DEMO_path}/lib 打开${Your_DEMO_path}/demo/Makefile 将16行(LIB=-leSDKOBS -lsecurec)替换为LIB=-lcjson -leSDKOBS -lsecurec cd ${Your_DEMO_path}/demo make 父主题: 常见问题
共100000条