1. 示例简介
CDN(Content Delivery Network,内容分发网络)。CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。CDN服务缩短了用户查看内容的访问延迟,提高了用户访问网站的响应速度与网站的可用性,解决了网络带宽小、用户访问量大、网点分布不均等问题。 本示例指导用户进行对域名指标的查询操作,包括按区域运营商查询域名统计数据,查询统计域名数据,查询TOP100 URL明细等。
2. 开发前准备
- 已 注册 华为云,并完成 实名认证 。
- 具备开发环境 ,支持python3.3及以上版本。可执行 python --version 检查当前 python 的版本信息。
- CDN服务软件开发工具包(CDN SDK,Content Delivery Network Software Development Kit)是对CDN服务提供的REST API进行的封装,获取华为云CDN开发工具包(SDK) ,SDK的使用方法请参见CDN SDK 。
3. 安装SDK
内容分发网络服务端SDK支持支持python3.3及其以上版本。
使用服务端SDK前,您需要安装“huaweicloudsdkcore ”和 “huaweicloudsdkcdn”,具体的SDK版本号请参见 SDK开发中心 。
安装cdn服务包
pip install huaweicloudsdkcdn
安装sdk核心包
pip install huaweicloudsdkcore
4. 代码示例
4.1 导入依赖模块
import os
from huaweicloudsdkcdn.v2.cdn_client import CdnClient
from huaweicloudsdkcdn.v2.model.show_domain_location_stats_request import ShowDomainLocationStatsRequest
from huaweicloudsdkcdn.v2.model.show_domain_stats_request import ShowDomainStatsRequest
from huaweicloudsdkcdn.v2.model.show_top_url_request import ShowTopUrlRequest
from huaweicloudsdkcore.auth.credentials import GlobalCredentials
from huaweicloudsdkcore.exceptions.exceptions import ConnectionException
from huaweicloudsdkcore.exceptions.exceptions import RequestTimeoutException
from huaweicloudsdkcore.exceptions.exceptions import ServiceResponseException
4.2 初始化认证信息, 及客户端
示例相关参数说明如下所示:
- ak:华为云账号Access Key。
- sk:华为云账号Secret Access Key。
- iam_endpoint:iam身份认证域名。
- endpoint:接口调用域名。
- client:客户端。
@staticmethod
def main(args):
# 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
# 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
ak = os.environ["HUAWEICLOUD_SDK_AK"]
sk = os.environ["HUAWEICLOUD_SDK_SK"]
iam_endpoint = "<iam endpoint>"
endpoint = "<endpoint>"
auth = GlobalCredentials(ak, sk) \
.with_iam_endpoint(iam_endpoint)
client = CdnClient.new_builder() \
.with_credentials(credentials=auth) \
.with_endpoint(endpoint) \
.build()
# 按区域运营商查询域名统计数据
DomainStatistics.show_domain_location_stats(client)
# 查询统计域名数据
DomainStatistics.show_domain_stats(client)
# 查询TOP100 URL明细
DomainStatistics.show_top_url(client)
if __name__ == "__main__":
DomainStatistics().main(any)
4.3 按区域运营商查询域名统计数据
示例相关参数说明如下所示:
- client:客户端。
- domainName:域名。
- action:操作名称。
- startTime: 开始时间。
- endTime: 结束时间。
- statType:查询指标类型。
- interval:查询时间粒度。
- country: 国家&地区编码。
- province: 省份编码。
- isp:运营商编码。
- groupBy:数据分组方式。
- enterpriseProjectId: 企业项目id。
@staticmethod
def show_domain_location_stats(client):
# startTime,endTime以及interval均为请求参数,将值替换即可
startTime = 1701849600000
endTime = 1701856800000
interval = 300
domainName = "<domain_name>"
action = "<action>"
statType = "<stat_type>"
country = "<country>"
province = "<province>"
isp = "<isp>"
groupBy = "<group_by>"
enterpriseProjectId = "<enterprise_project_id>"
request = ShowDomainLocationStatsRequest()
request.domain_name = domainName
request.action = action
request.start_time = startTime
request.end_time = endTime
request.stat_type = statType
request.interval = interval
request.country = country
request.province = province
request.isp = isp
request.group_by = groupBy
request.enterprise_project_id = enterpriseProjectId
try:
response = client.show_domain_location_stats(request)
result_code = response.status_code
if result_code == 200:
print("show domain location stats success")
print(response)
except ConnectionException:
print("show domain location stats ConnectionException")
except RequestTimeoutException:
print("show domain location stats RequestTimeoutException")
except ServiceResponseException as e:
print("show domain location stats ServiceResponseException")
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
4.4 查询域名统计数据
示例相关参数说明如下所示:
- client:客户端。
- domainName:域名。
- action:操作名称。
- startTime: 开始时间。
- endTime: 结束时间。
- statType:查询指标类型。
- interval:查询时间粒度。
- groupBy:数据分组方式。
- serviceArea:服务区域。
- enterpriseProjectId: 企业项目id。
@staticmethod
def show_domain_stats(client):
# startTime,endTime以及interval均为请求参数,将值替换即可
startTime = 1701849600000
endTime = 1701856800000
interval = 300
domainName = "<domain_name>"
action = "<action>"
statType = "<stat_type>"
groupBy = "<group_by>"
serviceArea = "<service_area>"
enterpriseProjectId = "<enterprise_project_id>"
request = ShowDomainStatsRequest()
request.domain_name = domainName
request.action = action
request.start_time = startTime
request.end_time = endTime
request.stat_type = statType
request.interval = interval
request.group_by = groupBy
request.service_area = serviceArea
request.enterprise_project_id = enterpriseProjectId
try:
response = client.show_domain_stats(request)
result_code = response.status_code
if result_code == 200:
print("show domain stats success")
print(response)
except ConnectionException:
print("show domain stats ConnectionException")
except RequestTimeoutException:
print("show domain stats RequestTimeoutException")
except ServiceResponseException as e:
print("show domain stats ServiceResponseException")
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
4.5 查询TOP100 URL明细
示例相关参数说明如下所示:
- client:客户端。
- domainName:域名。
- startTime: 开始时间。
- endTime: 结束时间。
- statType:查询指标类型。
- serviceArea:服务区域。
- enterpriseProjectId: 企业项目id。
@staticmethod
def show_top_url(client):
# startTime,endTime均为请求参数,将值替换即可
startTime = 1701849600000
endTime = 1701856800000
domainName = "<domain_name>"
statType = "<stat_type>"
serviceArea = "<service_area>"
enterpriseProjectId = "<enterprise_project_id>"
request = ShowTopUrlRequest()
request.domain_name = domainName
request.start_time = startTime
request.end_time = endTime
request.stat_type = statType
request.service_area = serviceArea
request.enterprise_project_id = enterpriseProjectId
try:
response = client.show_top_url(request)
result_code = response.status_code
if result_code == 200:
print("show top url success")
print(response)
except ConnectionException:
print("show top url ConnectionException")
except RequestTimeoutException:
print("show top url RequestTimeoutException")
except ServiceResponseException as e:
print("show top url ServiceResponseException")
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
5. 参考
用户可以根据以上示例了解域名相关操作,更多信息请参考 内容分发网络CDN文档
6. 修订记录
| 发布日期 | 文档版本 | 修订说明 |
|---|---|---|
| 2023-12-08 | 1.0 | 文档首次发布 |