Alibaba Cloud Short Message Service (SMS) の Java SDK は、SMS API 操作を呼び出すための公式 SDK です。
インストール
システム要件
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 アカウントは広範な権限を持っています。API 操作の呼び出しや日常の運用保守 (O&M) には、Resource Access Management (RAM) ユーザーを使用することを推奨します。RAM ユーザーの詳細については、「RAM ユーザーの概要」をご参照ください。
RAM ユーザーの作成:「ユーザーの作成」にアクセスし、ユーザー情報を設定します。アクセス設定 を プログラムによるアクセス に設定し、OK をクリックして RAM ユーザーを作成します。AccessKey 情報を保存してください。
RAM ユーザーへの権限付与:「ユーザー一覧」にアクセスし、作成した RAM ユーザーを検索します。操作 をクリックし、次に 権限の追加 をクリックします。ポリシー の検索ボックスに AliyunDysmsFullAccess を入力します。該当ポリシーを選択し、OK をクリックして権限を付与します。
AliyunDysmsFullAccess:SMS の完全管理権限を付与します。
AliyunDysmsReadOnlyAccess:SMS の読み取り専用権限を付与します。
カスタムポリシーを作成する場合は、「権限付与情報」をご参照ください。
ステップ 2:アクセス認証情報の取得
環境変数を設定して、AccessKey ペアを取得します。環境変数の設定方法については、「Linux、macOS、Windows で環境変数を設定する」をご参照ください。
AccessKey ペアの漏洩を防ぐため、コードにハードコーディングしないでください。代わりに、環境変数を設定して AccessKey ペアを取得してください。
このトピックのコード例では、環境変数名として
ALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRETを使用しています。
セキュリティのベストプラクティス
環境変数または Key Management Service (KMS) を使用して認証情報を保存します。
AccessKey ペアを定期的にローテーションします。
最小権限の原則に従い、RAM ユーザーには必要最小限の権限のみを付与します。
ログに認証情報を出力しないでください。
本番環境では、Alibaba Cloud アカウントの認証情報の代わりに RAM ロールを使用します。
クイックスタート
コード例
以下のサンプルコードは、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 Secret を設定します。実行環境に環境変数 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 を選択し (Java または Java 非同期オプションを選択できます)、[完全なプロジェクトのダウンロード] をクリックしてサンプルコードパッケージをダウンロードします。
パッケージを解凍し、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 操作を呼び出す前に、対応するドキュメントを読んで、必須パラメーター、権限、その他の詳細について学習してください。この例については、「SendMessageToGlobe」をご参照ください。詳細については、「API 概要」をご参照ください。
API 操作の呼び出し:
API 操作の呼び出しには、SDK の使用が推奨されます。 この Topic では、Java SDK を例として使用します。 プロセスは他の言語でも同様です。 詳細については、「Short Message Service SDK」をご参照ください。