首页> 自动化运维> 【DevOps】python 调用腾讯云接口

[文章]【DevOps】python 调用腾讯云接口

收藏
0 4818 0

【摘要】

云服务可以将企业所需的软硬件、资料都放到网络上,在任何时间、地点,使用不同的IT设备互相连接,实现数据存取、运算等目的。当前,云服务已经成为时代潮流,常见的云服务有公共云(Public Cloud)与私有云(Private Cloud)两种。公有云中腾讯云是普及最广的,应用最多的,同时也是API接口最齐全的,支持多种语言调用。

【正文】

1、腾讯云API简介

腾讯云API接口文档访问地址:https://cloud.tencent.com/document/api

腾讯云提供了丰富的接口,可以通过各种编程语言快捷的条用腾讯云提供的各种服务,腾讯云接口的调用提供两种方式:

n  根据接口文档直接调用(需要自己组合接口调用的验证签名以及公共参数);

n  使用腾讯云开发者工具套件(SDK)调用;

 

2、SDK调用

1.      登录腾讯云控制台,进入访问控制页面;

        

2.      获取调用接口必须的验证参数:secretidsecretkey;

        

3.      开发环境安装腾讯云开发者工具套件(SDK);

pip install tencentcloud-sdk-python


4.      SDK包导入相应的产品模块

from tencentcloud.common import credential

from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException

from tencentcloud.cvm.v20170312 import cvm_client, models


5.      实例化一个认证对象,入参需要传入腾讯云账户secretIdsecretKey,实例化产品的client对象(需要输入一个地域接入参数)

cred = credential.Credential('AKIDhDcnkVVprc7MODqGIN5k','c*IZaLrBI9mAIK7gz3rPj')

client = cvm_client.CvmClient(cred,'ap-beijing')

    

6.      实例化一个请求对象,然后通过client对象调用想要访问的接口,通过SDK的内置方法resp.RegionSet(不同接口访问数据的方法不同,也可以直接使用resp.from_json_string获取数据)即可获取接口数据

req = models.DescribeRegionsRequest()

resp = client.DescribeRegions(req)

print resp.RegionSet

 

3、直接调用API接口

1.      直接调用腾讯云API接口是通过向腾讯云API的服务端地址发送请求,并按照接口说明在请求中加入相应请求参数来完成的。

2.      腾讯云API的请求由四部分组成:

n  服务地址(接口的访问地址)

n  通信协议(腾讯云 API 的大部分接口都通过HTTPS进行通信

n  请求方法(支持POSTGET两种请求方式)

n  请求参数(分公共参数和接口请求参数两种:公共参数即使调用某个产品的所有接口都需要提供的参数,接口请求参数是不同接口需要的特定参数)

 

以下以python调用账号相关类别里的查询项目列表接口为例说明调用方法

1.      获取secretidsecretkey

        

2.      查询该类别产品接口的公共参数,并初始化公共参数

data = {'Action': '',
       
'Nonce': random.randint(10000, 99999),
       
'Region': 'bj',
       
'SecretId': 'AKIDhDcnkVVHH0UheQTEE1Yprc7MODqGIN5k',
       
'Timestamp': int(time.time()),
        }

Signature参数需要根据接口调用参数经过签名方法组合生成(可参考:https://cloud.tencent.com/document/api/377/4214


3.      查看具体接口的参数以及接口的访问地址,更新参数

data = {'Action': 'DescribeProject',
       
'Nonce': random.randint(10000, 99999),
       
'Region': 'bj',
       
'SecretId': 'AKIDhDcnkVVHH0UheQTEE1Yprc7MODqGIN5k',
       
'Timestamp': int(time.time()),
       
'allList': 1,
        }

    url = 'account.api.qcloud.com/v2/index.php'  #(访问地址统一要加后缀/v2/index.php

            

 

4.      进行参数排列:对所有请求参数按参数名做字典序升序排列,python默认对字典的参数进行升序排列。

    

5.      拼接请求字符串

signature_old = ''
for i in sorted(data):
    signature_old = signature_old + i +
"=" + str(data[i]) + "&"
signature_old = signature_old[:-1]

    query = 'GET' + url + '?' + signature_old

    

6.      使用加密算法生成请求签名

hmac_str = hmac.new(secret_key.encode('utf8'), query.encode('utf8'), hashlib.sha1).digest()
signature = base64.b64encode(hmac_str)


7.      请求参数添加签名,并使用get请求方法发起接口访问请求,请求状态码为200,表示接口调用成功。

data["Signature"] = signature

    resp = requests.get('https://' + url, params=data)

        

自动化运维
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}