1. 程式人生 > 其它 >騰訊雲SDK使用python版

騰訊雲SDK使用python版

技術標籤:python學習python運維

簡介

歡迎使用騰訊雲開發者工具套件(SDK)3.0,SDK3.0是雲 API3.0 平臺的配套工具。目前已經支援cvm、vpc、cbs等產品,後續所有的雲服務產品都會接入進來。新版SDK實現了統一化,具有各個語言版本的SDK使用方法相同,介面呼叫方式相同,統一的錯誤碼和返回包格式這些優點。 為方便 Python 開發者除錯和接入騰訊雲產品 API,這裡向您介紹適用於 Python 的騰訊雲開發工具包,並提供首次使用開發工具包的簡單示例。讓您快速獲取騰訊雲 Python SDK 並開始呼叫。

依賴環境

  1. 依賴環境:Python 2.7, 3.6-3.9 版本。
  2. 從 騰訊雲控制檯 開通相應產品。
  3. 獲取 SecretID、SecretKey 以及呼叫地址(endpoint),endpoint 一般形式為*.tencentcloudapi.com,如CVM 的呼叫地址為 cvm.tencentcloudapi.com,具體參考各產品說明。

獲取安裝

安裝 Python SDK 前,先獲取安全憑證。在第一次使用雲 API 之前,使用者首先需要在騰訊雲控制檯上申請安全憑證,安全憑證包括 SecretID 和 SecretKey, SecretID 是用於標識 API 呼叫者的身份,SecretKey 是用於加密簽名字串和伺服器端驗證簽名字串的金鑰。SecretKey 必須嚴格保管,避免洩露。

通過 Pip 安裝(推薦)

您可以通過 pip 安裝方式將騰訊雲 API Python SDK 安裝到您的專案中,如果您的專案環境尚未安裝 pip,請詳細參見pip官網 安裝。

通過pip方式安裝或更新請在命令列中執行以下命令:

pip install --upgrade tencentcloud-sdk-python

中國大陸地區的使用者可以使用國內映象源提高下載速度,例如pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python

請注意,如果同時有 python2 和 python3 環境, python3 環境需要使用 pip3 命令安裝。

如果只想使用某個具體產品的包,例如雲伺服器 CVM,可以單獨安裝,但是注意不能和總包同時工作。pip install --upgrade tencentcloud-sdk-python-common tencentcloud-sdk-python-cvm

通過原始碼包安裝

前往Github 程式碼託管地址下載最新程式碼,解壓後

$ cd tencentcloud-sdk-python
$ python setup.py install

示例

以查詢例項列表介面為例。

簡化版

from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.cvm.v20170312 import cvm_client, models

try:
    cred = credential.Credential("secretId", "secretKey")
    client = cvm_client.CvmClient(cred, "ap-shanghai")

    req = models.DescribeInstancesRequest()
    resp = client.DescribeInstances(req)

    print(resp.to_json_string())
except TencentCloudSDKException as err:
    print(err)

詳細版

# -*- coding: utf-8 -*-
import sys
import logging

from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
# 匯入對應產品模組的client models。
from tencentcloud.cvm.v20170312 import cvm_client, models

# 匯入可選配置類
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
try:
    # 例項化一個認證物件,入參需要傳入騰訊雲賬戶secretId,secretKey,此處還需注意金鑰對的保密
    cred = credential.Credential("SecretId", "SecretKey")

    # 例項化一個http選項,可選的,沒有特殊需求可以跳過。
    httpProfile = HttpProfile()
    # 如果需要指定proxy訪問介面,可以按照如下方式初始化hp
    # httpProfile = HttpProfile(proxy="http://使用者名稱:密碼@代理IP:代理埠")
    httpProfile.protocol = "https"  # 在外網互通的網路環境下支援http協議(預設是https協議),建議使用https協議
    httpProfile.keepAlive = True  # 狀態保持,預設是False
    httpProfile.reqMethod = "GET"  # get請求(預設為post請求)
    httpProfile.reqTimeout = 30    # 請求超時時間,單位為秒(預設60秒)
    httpProfile.endpoint = "cvm.ap-shanghai.tencentcloudapi.com"  # 指定接入地域域名(預設就近接入)

    # 例項化一個client選項,可選的,沒有特殊需求可以跳過。
    clientProfile = ClientProfile()
    clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定簽名演算法
    clientProfile.language = "en-US"  # 指定展示英文(預設為中文)
    clientProfile.httpProfile = httpProfile

    # 例項化要請求產品(以cvm為例)的client物件,clientProfile是可選的。
    client = cvm_client.CvmClient(cred, "ap-shanghai", clientProfile)

    # 列印日誌按照如下方式,也可以設定log_format,預設為 '%(asctime)s %(process)d %(filename)s L%(lineno)s %(levelname)s %(message)s'
    # client.set_stream_logger(stream=sys.stdout, level=logging.DEBUG)
    # client.set_file_logger(file_path="/log", level=logging.DEBUG) 日誌檔案滾動輸出,最多10個檔案,單個檔案最大512MB
    # client.set_default_logger() 去除所有log handler,預設不輸出

    # 例項化一個cvm例項資訊查詢請求物件,每個介面都會對應一個request物件。
    req = models.DescribeInstancesRequest()

    # 填充請求引數,這裡request物件的成員變數即對應介面的入參。
    # 你可以通過官網介面文件或跳轉到request物件的定義處檢視請求引數的定義。
    respFilter = models.Filter()  # 建立Filter物件, 以zone的維度來查詢cvm例項。
    respFilter.Name = "zone"
    respFilter.Values = ["ap-shanghai-1", "ap-shanghai-2"]
    req.Filters = [respFilter]  # Filters 是成員為Filter物件的列表

    # 通過client物件呼叫DescribeInstances方法發起請求。注意請求方法名與請求物件是對應的。
    # 返回的resp是一個DescribeInstancesResponse類的例項,與請求物件對應。
    resp = client.DescribeInstances(req)

    # 輸出json格式的字串回包
    print(resp.to_json_string(indent=2))

    # 也可以取出單個值。
    # 你可以通過官網介面文件或跳轉到response物件的定義處檢視返回欄位的定義。
    print(resp.TotalCount)
except TencentCloudSDKException as err:
    print(err)

更多示例

您可以在github中examples目錄下找到更詳細的示例。

相關配置

代理

如果是有代理的環境下,可通過兩種方式設定代理

  1. 在初始化HttpProfile時指定proxy,參考example
  2. 需要設定系統環境變數https_proxy

否則可能無法正常呼叫,丟擲連線超時的異常。

證書問題

在 Mac 作業系統安裝 Python 3.6 或以上版本時,可能會遇到證書錯誤:Error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1056).。這是因為在 Mac 作業系統下,Python 不再使用系統預設的證書,且本身也不提供證書。在進行 HTTPS 請求時,需要使用certifi庫提供的證書,但 SDK 不支援指定,所以只能使用sudo "/Applications/Python 3.6/Install Certificates.command"命令安裝證書才能解決此問題。

雖然 Python 2 版本不應該有同樣的問題,但是在個別使用者環境上確實也觀察到有類似的情況,也一樣可以通過sudo /Applications/Python 2.7/Install Certificates.command解決。