背景情報
次の表に、SMS APIに関する背景情報を示します。
このトピックでは、 SendMessageToGlobe API操作を例として、SMS APIを説明します。 ワークフロー:
アカウントに権限を付与する
開発環境のデプロイ
SMS APIを使用する
アカウントの設定
RAM ユーザーへの権限付与
重要 RAMユーザーに権限を付与し、RAMユーザーを使用してAPI呼び出しを行い、毎日のO&Mを実行することを推奨します。RAMユーザーについては、「RAMユーザーの概要」をご参照ください。
RAM ユーザーの作成
Resource Access Management (RAM) コンソールの [ユーザーの作成] に移動し、RAMユーザー名を指定し、Access ModeパラメーターをOpenAPI Accessに設定して、[OK] をクリックします。 AccessKey情報を記録します。
RAM ユーザーへの権限の付与
RAMコンソールの [ユーザー] ページに移動し、RAMユーザーを見つけて、[操作] 列の [権限の追加] をクリックします。 表示されるパネルの [ポリシー] セクションで、AliyunDysmsFullAccessポリシーを検索して選択し、[権限の付与] をクリックします。
説明 カスタムポリシーの作成方法の詳細については、 RAM権限付与を行います。
開発環境のデプロイDeploy a development environment
このトピックでは、例としてJavaを使用します。 他のプログラミング言語でSMS SDKを使用する方法については、「SDKリファレンス」をご参照ください。
Java環境のデプロイ
Javaのバージョンは8以降でなければなりません。 ターミナルで次のコマンドを実行して、Javaのバージョンを確認します。
java -version
Java環境をデプロイしていない場合、またはJavaバージョンが8より前の場合は、「WindowsでのJava開発環境の構築」をご参照ください。
SDKの設定
Maven依存関係を使用してSDKをインストールできます。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20180501</artifactId>
<version>1.0.7</version>
</dependency>
クライアントの初期化
Alibaba Cloud SDKは、クライアントを初期化するために、AccessKeyペアやSTS (Security Token Service) トークンなどの複数のアクセス資格情報をサポートしています。 詳細については、「アクセス資格情報の管理」をご参照ください。 この例では、AccessKeyペアを使用してクライアントを初期化します。
AccessKey ペアの設定
ハードコーディングによりAccessKeyペアが漏洩しないようにするには、環境変数を設定してAccessKeyペアを取得する必要があります。 環境変数の設定方法の詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
説明 RAMユーザーのAccessKey IDを表示するには、RAMコンソールの [ユーザー] ページに移動し、RAMユーザーの名前をクリックします。 AccessKeyシークレットは、作成時にのみ表示および記録できます。 それ以外の場合は、新しいAccessKeyペアを作成する必要があります。 詳細については、「AccessKeyペアの作成」をご参照ください。
この例では、環境変数ALIBABA_CLOUD_ACCESS_KEY_ID
およびALIBABA_CLOUD_ACCESS_KEY_SECRET
が使用されます。 サンプルコード:
Config config = new Config()
// Make sure that the environment variables are configured for code execution.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
エンドポイントの設定
サンプルコード:
config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";
ネットワークタイプとリージョンに基づいてエンドポイントを使用します。 詳細については、次をご参照ください: エンドポイント
API操作の呼び出し
APIリクエストの作成
APIリクエストを作成し、ビジネス要件に基づいてパラメーターを指定します。
説明 リクエストオブジェクトの名前は {API name} request
形式です。 たとえば、SendSms
操作のリクエストオブジェクトはSendSmsRequest
です。
SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
. setTo("<YOUR_VALUE>")
. setMessage("<YOUR_VALUE>");
APIリクエストの送信
を使用します。Use the APIリクエストを送信するSendMessageToGlobe操作。
説明 レスポンスオブジェクトの名前は {API name} response
形式です。 たとえば、SendSms
操作の応答オブジェクトはSendSmsResponse
です。
SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);
サンプルコード
サンプルコード:
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()
// Configure the AccessKey ID. Make sure that the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is configured.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Configure the AccessKey secret. Make sure that the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is configured.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
Configure the endpoint
config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) throws Exception {
// Initialize the client
Client client = Sample.createClient();
// Construct the request object and specify the request parameters
SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
.setTo("<YOUR_VALUE>")
.setMessage("<YOUR_VALUE>");
// Obtain the response object
SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);
// Response body and headers
System.out.println(toJSONString(sendSmsResponse));
}
}
よくある質問
HTTPリクエストをカプセル化し、curl
コマンドまたはPostmanを使用してAPI操作を呼び出すにはどうすればよいですか?
Alibaba Cloud SDKは、署名、タイムアウト、および再試行の設定をカプセル化しています。 開発コストを削減するためにAlibaba Cloud SDKを使用することを推奨します。 APIテストのリクエストをカプセル化する方法については、「リクエスト構文と署名メソッドV3」をご参照ください。
次に何をすべきか