すべてのプロダクト
Search
ドキュメントセンター

Short Message Service:Python SDK

最終更新日:Mar 05, 2026

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 AccessKeyAccess 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_IDALIBABA_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:])

サンプルコードのダウンロード

サンプルコードをダウンロードして直接実行することもできます。

  1. SendMessageToGlobe に移動します。

  2. 左側の [パラメーター] タブで、必須パラメーターを指定します。以下は例の値です。

  • To: 88691567****

  • Message: これはテストメッセージです。

ベストプラクティス

パフォーマンス最適化

  • コネクションプーリングの有効化: SDK はデフォルトで urllib3 接続プールを使用します。max_idle_conns の設定が適切であることを確認し (デフォルトは 50)、TCP 接続の頻繁な作成を回避してください。

  • 非同期呼び出しの使用: 高並行シナリオでは、asyncioaiohttp を使用して真の非同期呼び出しを実装できます (カスタムパッケージングが必要です)。

セキュリティに関する推奨事項

  • 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」をご参照ください。