阿里雲官方提供的 Python 語言 SDK,用於便捷、安全地調用阿里雲簡訊發送等核心 API。該 SDK 基於阿里雲 OpenAPI 規範構建,封裝了認證、請求籤名、HTTP 通訊、錯誤處理等底層邏輯,使開發人員能夠專註於商務邏輯,快速整合簡訊能力。
安裝
系統要求
Python 版本:3.7 及以上。
作業系統:Windows / macOS / Linux(無特殊限制)。
其他依賴:
alibabacloud_tea_openapi(核心運行時)、alibabacloud_tea_util(工具庫)、urllib3(HTTP 用戶端)。
使用 pip 安裝
pip install alibabacloud_dysmsapi20180501驗證安裝
import alibabacloud_dysmsapi20180501
# 輸出SDK具體版本號碼代表安裝成功
print("SDK Version:", alibabacloud_dysmsapi20180501.__version__)
認證配置
步驟一:建立RAM使用者並完成授權
阿里雲主帳號擁有較高許可權,建議您通過RAM使用者進行API調用和日常營運。有關RAM使用者的更多資訊,請參見RAM使用者概覽。
建立RAM使用者:訪問建立RAM使用者,完成相關名稱設定,並選擇訪問配置為使用永久 AccessKey 訪問,單擊確認後即可完成RAM使用者的建立。請及時儲存AccessKey資訊。
為RAM使用者授權:訪問RAM使用者列表,找到您所建立的RAM使用者,單擊操作列的新增授權。在權限策略文本搜尋方塊中輸入AliyunDysmsFullAccess後選中此策略,單擊確認新增授權,即可完成授權操作。
AliyunDysmsFullAccess:管理簡訊服務的許可權。
AliyunDysmsReadOnlyAccess:唯讀訪問簡訊服務的許可權。
如果您需要建立自訂許可權,請參見授權資訊。
步驟二:擷取訪問憑證
請配置環境變數,通過環境變數讀取存取金鑰(AccessKey)。環境變數配置方法,請參見在Linux、macOS和Windows系統配置環境變數。
為避免在代碼中寫入程式碼AccessKey而造成泄露,請通過配置環境變數的方式,來擷取AccessKey。
本文程式碼範例以環境變數名
ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET為例,進行後續操作。
安全最佳實務
使用環境變數或Key Management Service儲存憑證。
定期輪換存取金鑰。
遵循最小許可權原則,為RAM使用者指派最小必要許可權。
不要在日誌中列印憑證資訊。
在生產環境中使用RAM角色而非主帳號憑證。
快速開始
程式碼範例
使用SDK調用傳送簡訊API的程式碼範例如下,請根據注釋完成參數填寫。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
import json
from typing import List
from alibabacloud_dysmsapi20180501.client import Client as Dysmsapi20180501Client
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20180501 import models as dysmsapi_20180501_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
def create_client() -> Dysmsapi20180501Client:
"""
使用憑據初始化帳號 Client
@return: Client
@throws Exception
"""
# 工程代碼建議使用更安全的無 AK 方式,憑據配置方式請參見:https://www.alibabacloud.com/help/document_detail/378659.html。
credential = CredentialClient()
config = open_api_models.Config(
credential=credential
)
# Endpoint 請參考 https://api.aliyun.com/product/Dysmsapi
config.endpoint = f'dysmsapi.aliyuncs.com'
return Dysmsapi20180501Client(config)
def main(
args: List[str],
) -> None:
client = create_client()
batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
to='your_value',
from_='your_value',
message='your_value'
)
try:
resp = client.batch_send_message_to_globe_with_options(batch_send_message_to_globe_request, util_models.RuntimeOptions())
print(json.dumps(resp, default=str, indent=2))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
async def main_async(
args: List[str],
) -> None:
client = create_client()
batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
to='your_value',
from_='your_value',
message='your_value'
)
try:
resp = await client.batch_send_message_to_globe_with_options_async(batch_send_message_to_globe_request, util_models.RuntimeOptions())
print(json.dumps(resp, default=str, indent=2))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
if __name__ == '__main__':
main(sys.argv[1:])
下載範例程式碼
也可以下載範例程式碼,直接運行。
在左側的參數配置頁簽,填寫需要的參數資訊,填寫樣本如下:
To 參數輸入樣本值:88691567****
Message 參數輸入樣本值:這是一條測試簡訊
最佳實務總結
效能最佳化
啟用串連池:SDK 預設使用
urllib3串連池,確保max_idle_conns配置合理(預設 50),避免頻繁建立 TCP 串連。非同步非阻塞:在高並發情境下,可結合
asyncio和aiohttp(需自行封裝)實現真正的非同步呼叫。
安全建議
HTTPS 強制:始終使用
https://開頭的endpoint,禁止降級到 HTTP。輸入驗證:嚴格校正
phone_numbers(正則匹配)、template_param(JSON 解析)、sign_name(白名單)等所有使用者輸入。日誌脫敏:在日誌中列印
phone_numbers時,應進行掩碼處理(如138****0000)。
資源管理
用戶端複用:
Client執行個體是安全執行緒的,應在整個應用生命週期內全域複用,避免頻繁建立銷毀。及時關閉:雖然 SDK 未提供顯式的
close()方法,但其底層 HTTP 用戶端會在程式退出時自動清理資源。
相關文檔
GitHub 倉庫:Alibaba Cloud Dysmsapi SDK for Python。
查看OpenAPI文檔:
在調用OpenAPI前,建議您先閱讀對應的介面文檔SendMessageToGlobe,瞭解、學習調用該介面所需要的參數及許可權等,更多資訊請參見API概覽。
調用OpenAPI:
SDK是最易於整合,且支援度最好的OpenAPI調用方式。本文以Python語言SDK調用OpenAPI,其他語言SDK的用法類似,更多資訊請參見簡訊服務SDK。