Alibaba Cloud SMS SDK for Python は、メッセージ送信やなどのコア API 向けに、シンプルで安全なインターフェースを提供します。認証、リクエスト署名、HTTP 通信の複雑さを抽象化するため、ご利用のビジネスロジックに集中し、SMS 機能をより迅速に統合できます。
インストール
システム要件
Python バージョン: V3.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__)
認証情報の設定
ステップ 1: RAM ユーザーの作成と権限付与
ご利用のルートアカウントは高い権限を持つため、API 呼び出しや日常的な運用保守には Resource Access Management (RAM) ユーザーを使用することを推奨します。詳細については、「RAM ユーザーの概要」をご参照ください。
RAM ユーザーを作成します:「ユーザーの作成」ページに移動します。必要な情報を指定し、Permanent AccessKey を Access Configuration として選択し、はい をクリックします。後で使用するために AccessKey を保存します。
RAM ユーザーに権限を付与します。「ユーザー」ページへ移動します。作成した RAM ユーザーを見つけ、「Attach Policy」を「Actions」列でクリックします。「Policy」検索ボックスで「AliyunDysmsFullAccess」と入力し、ポリシーを選択してから、「Grant permissions」をクリックします。
AliyunDysmsFullAccess: SMS サービスを管理するためのフル権限を付与します。
AliyunDysmsReadOnlyAccess: SMS サービスへの読み取り専用権限を付与します。
カスタムポリシーを作成する必要がある場合は、「RAM 認証」をご参照ください。
ステップ 2: アクセス認証情報の取得
AccessKey ペアを環境変数を使用して設定します。環境変数の設定方法については、「AccessKey ペア」および「Linux、macOS、および Windows で環境変数を設定する」をご参照ください。
セキュリティリスクを防ぐため、AccessKey ペアのハードコーディングは避けてください。代わりに、環境変数から取得してください。
このトピックのサンプルコードでは、環境変数
ALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRETを使用しています。
セキュリティのベストプラクティス
環境変数またはキー管理サービスを使用して認証情報を保存します。
AccessKey ペアを定期的にローテーションします。
RAM ユーザーに最小限必要な権限を付与することで、最小権限の原則に従います。
ログに認証情報を出力しないでください。
本番環境では、ルートアカウントの認証情報の代わりに RAM ロールを使用します。
クイックスタート
サンプルコード
このサンプルコードは、SMS API を呼び出してメッセージを送信する方法を示しています。コードコメントの指示に従って、プレースホルダー値を置き換えてください。
# -*- coding: utf-8 -*-
# このファイルは自動生成されたものです。編集しないでください。
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:
"""
# 認証情報を使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# 本番環境では、AccessKey ペアに依存しない、より安全な認証方式を推奨します。
credential = CredentialClient()
config = open_api_models.Config(
credential=credential
)
# エンドポイント。https://api.alibabacloud.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:
# このコードはデモンストレーションのみを目的としています。本番環境では、例外を適切に処理し、無視しないでください。
# エラーメッセージ
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:
# このコードはデモンストレーションのみを目的としています。本番環境では、例外を適切に処理し、無視しないでください。
# エラーメッセージ
print(error.message)
# 診断アドレス
print(error.data.get("Recommend"))
if __name__ == '__main__':
main(sys.argv[1:])
サンプルコードのダウンロード
サンプルコードをダウンロードして直接実行することもできます。
SendMessageToGlobe に移動します。
左側の [パラメーター] タブで、必須パラメーターを指定します。以下は例の値です。
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
API リファレンス:
OpenAPI オペレーションを呼び出す前に、関連 API リファレンス (例: SendMessageToGlobe) を読み、必須パラメーター、権限、その他の詳細を理解することを推奨します。詳細については、「API 概要」をご参照ください。
API の呼び出し:
SDK は API を呼び出すための推奨される方法です。このトピックでは Python SDK を例として使用しています。他の言語での SDK の使用方法も同様です。詳細については、「SMS SDK」をご参照ください。