文件最后提交记录最后更新时间
2 年前
2 年前
2 年前
README

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 文档首次发布