Alibaba Cloud Short Message Service (SMS) SDK for Java は、SMS API を呼び出すための Alibaba Cloud 公式 SDK です。開発者がアプリケーションに迅速に SMS 機能を統合できるよう支援します。
インストール
システム要件
Java バージョン:Java 8 以降。Java 環境の設定手順については、「Windows における Java 開発環境の構築」をご参照ください。
オペレーティングシステム:Windows、Linux、macOS(特別な要件はありません)。
その他の依存関係:Maven 3.0 以降(プロジェクトのビルドに使用)。
Maven を使用したインストール
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20180501</artifactId>
<!-- 'the-latest-version' を https://mvnrepository.com/artifact/com.aliyun/dysmsapi20180501 から取得した最新バージョンに置き換えます -->
<version>the-latest-version</version>
</dependency>認証の設定
ステップ 1:RAM ユーザーの作成と権限付与
Alibaba Cloud アカウント (root ユーザー) は高度な権限を持ちます。セキュリティ上の観点から、API 呼び出しおよび日常的な操作には Resource Access Management (RAM) ユーザーを使用することを推奨します。RAM ユーザーの詳細については、「RAM ユーザーの概要」をご参照ください。
RAM ユーザーを作成します。[ユーザーの作成] に移動します。「ユーザー名」を設定し、Access Configuration を Permanent AccessKey に設定します。はい をクリックします。作成直後に AccessKey ペアを保存してください。
RAM ユーザーに権限を付与します: [ユーザー] に移動します。作成した RAM ユーザーを見つけ、Actions をクリックし、次に Attach Policy をクリックします。Policy 検索ボックスに AliyunDysmsFullAccess を入力し、ポリシーを選択して、Grant permissions をクリックします。
AliyunDysmsFullAccess:Alibaba Cloud SMS の完全管理権限を付与します。
AliyunDysmsReadOnlyAccess:Alibaba Cloud SMS の読み取り専用権限を付与します。
カスタムポリシーを作成する場合は、「RAM 権限付与」をご参照ください。
ステップ 2:アクセス認証情報の取得
AccessKey ペア を環境変数に設定します。詳細については、「Linux、macOS、Windows における環境変数の設定」をご参照ください。
AccessKey ペアが漏洩しないよう、アプリケーション内にハードコードしないでください。代わりに環境変数を使用します。
本例では、環境変数名として
ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRETを使用します。
セキュリティに関するベストプラクティス
認証情報を環境変数または Key Management Service (KMS) に保存します。
AccessKey ペアを定期的にローテーションします。
最小権限の原則に従います。各 RAM ユーザーには、必要な最小限の権限のみを付与します。
認証情報に関するログ出力を行わないでください。
本番環境では、root アカウントの認証情報ではなく RAM ロールを使用します。
クイックスタート
コード例
このサンプルコードでは、SDK を使用して SendSms API を呼び出す方法を示します。コメントに従って、必要なパラメーターを入力してください。
package com.aliyun.sample;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20180501.Client;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeRequest;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeResponse;
import static com.aliyun.teautil.Common.toJSONString;
public class Sample {
public static Client createClient() throws Exception {
Config config = new Config()
// AccessKey ID を設定します。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// AccessKey シークレットを設定します。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントを設定します。
config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) throws Exception {
// クライアントを初期化します。
Client client = Sample.createClient();
// リクエストオブジェクトを作成し、パラメーター値を設定します。
SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
.setTo("<YOUR_VALUE>")
.setMessage("<YOUR_VALUE>");
// 応答オブジェクトを取得します。
SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);
// 応答オブジェクトには、サーバーから返された本文およびヘッダーが含まれます。
System.out.println(toJSONString(sendSmsResponse));
}
}サンプルコードのダウンロード
完全なサンプルプロジェクトをダウンロードして実行することもできます。
SendMessageToGlobe にアクセスします。
左側の パラメーター タブで、必要なパラメーターを入力します。例:
To:88691567****
メッセージ: これはテストメッセージです
右側の SDK サンプルコード タブで、SDK 生成 を V2.0 に設定し、Java を選択します(必要に応じて同期版または非同期版を選択できます)。**[プロジェクトのダウンロード]** をクリックします。
ダウンロードしたパッケージを展開し、IDE でプロジェクトを読み込みます。IDE が依存関係を読み込んだ後、
src/main/java/com/aliyun/sample/Sample.javaを開きます。
プロジェクトの実行
プロジェクトを実行すると、以下の出力が返されます:
{
"headers": {
"date": "Tue, 24 Oct 2023 07:47:17 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "263",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
"x-acs-trace-id": "29c11fe4c778b74774d5f5602f0e7975",
"etag": "2a+mcDRTDkXqx9VF7b6U57Q3"
},
"statusCode": 200,
"body": {
"ResponseCode": "OK",
"NumberDetail": {
"Region": "Taiwan",
"Country": "Taiwan, Province of China",
"Carrier": "FarEasTone"
},
"RequestId": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
"Segments": "1",
"ResponseDescription": "OK",
"To": "88691567****",
"MessageId": "191921698133637273"
}
}ベストプラクティスのまとめ
パフォーマンス最適化
接続オーバーヘッドを削減するため、接続プールを使用して HTTP 接続を再利用します。
高頻度の呼び出しには、非同期呼び出しを検討します。
ビジネスパフォーマンスへの影響を防ぐため、適切なタイムアウト値を設定します。
一括処理を行う場合、API のバッチ処理機能を利用します。
セキュリティに関する推奨事項
API との通信には常に HTTPS を使用します。
電話番号や検証コードなどの機微な情報をログ出力しないでください。
悪意ある入力を防止するため、電話番号のフォーマットを検証します。
長期的な認証情報の代わりに、Alibaba Cloud Security Token Service (STS) の一時認証情報を使用します。
リソース管理
未使用のクライアント接続は速やかにクローズします。
高並列性のリクエストに対しては、スレッドプールサイズを適切に設定します。
QPS 制限を超えないよう、API 呼び出し頻度を監視します。
参考
GitHub リポジトリ:
OpenAPI ドキュメントの参照:
API を呼び出す前に、API リファレンス(SendMessageToGlobe)を確認し、必須パラメーター、権限、その他の詳細情報を確認してください。サポートされるすべての API の一覧については、「API 概要」をご参照ください。
OpenAPI の呼び出し:
SDK を使用した呼び出しが、OpenAPI を呼び出す最も簡単かつ十分にサポートされた方法です。本トピックでは Java SDK を例として説明しますが、他の言語でも同様のプロセスとなります。詳細については、「Short Message Service SDK」をご参照ください。