このトピックでは、Java 向け SDK のインストールおよび使用方法について説明します。本例では、ドメイン名の登録タスクを送信する API オペレーションを呼び出す方法を示します。
前提条件
RAM ユーザー向けに AccessKey ペアが作成済みである必要があります。Alibaba Cloud アカウント (root ユーザー) はすべてのリソースに対して完全な権限を持ちます。Alibaba Cloud アカウントの AccessKey ペアが漏洩した場合、関連するすべてのリソースが不正にアクセスされるリスクがあり、重大なセキュリティリスクを引き起こす可能性があります。そのため、Alibaba Cloud アカウントの AccessKey ペアの使用は推奨されません。代わりに、RAM ユーザーの AccessKey ペアを使用することを推奨します。AccessKey ペアの取得方法については、「AccessKey ペアの作成」をご参照ください。
RAM ユーザーにドメイン名関連リソースの管理権限が付与済みである必要があります。本例では、システム権限ポリシー `AliyunDomainFullAccess` を RAM ユーザーにアタッチしています。
以下のいずれかのシステム権限ポリシーを使用できます。
`AliyunDomainFullAccess`:ドメイン (Domain Names) サービスの管理権限を提供します。
`AliyunDomainReadonlyAccess`:ドメイン名の登録および管理に関する読み取り専用権限を提供します。
カスタムポリシーを使用することもできます。
カスタムポリシーの作成方法については、「カスタムポリシーの作成をご参照ください。
RAM ユーザーの AccessKey ペアが環境変数に設定済みである必要があります。詳細については、「Linux、macOS、Windows における環境変数の設定」をご参照ください。
SDK のインストール
Maven 構成ファイルに Maven リポジトリを作成します。
<repositories> <repository> <id>sonatype-nexus-staging</id> <name>Sonatype Nexus Staging</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>Maven プロジェクトの `pom.xml` ファイルを開き、`
<dependencies>` 内に依存関係の構成を追加し、Maven 構成をリフレッシュします。<dependency> <groupId>com.aliyun</groupId> <artifactId>domain20180129</artifactId> <version>3.15.1</version> </dependency>
SDK の使用
1. クライアントの初期化
Alibaba Cloud SDK では、AccessKey ペアや Security Token Service (STS) トークンなど、複数のアクセス認証情報を使用してクライアントを初期化できます。詳細については、「アクセス認証情報の管理」をご参照ください。本例では、AccessKey ペアを使用してクライアントを初期化します。
import com.aliyun.domain20180129.Client;
import com.aliyun.teaopenapi.models.Config;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// 必須。実行環境で ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。実行環境で ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// エンドポイントを指定します。エンドポイントの一覧については、https://api.aliyun.com/product/Domain をご参照ください。
.setEndpoint("domain.aliyuncs.com");
return new Client(config);
}
}2. API オペレーション用のリクエストオブジェクトの作成
リクエストオブジェクトを作成する前に、API リファレンスを参照し、呼び出す API オペレーションとそのパラメーターを確認してください。
リクエストオブジェクトの名前は `{API 名}Request` の形式である必要があります。たとえば、`SaveSingleTaskForCreatingOrderActivate` のリクエストオブジェクトは `SaveSingleTaskForCreatingOrderActivateRequest` です。
SaveSingleTaskForCreatingOrderActivateRequest request = new SaveSingleTaskForCreatingOrderActivateRequest()
.setDomainName("example.com");3. 呼び出しの実行
応答オブジェクトの名前は `{API 名}Response` の形式である必要があります。たとえば、`SaveSingleTaskForCreatingOrderActivate` の応答オブジェクトは `SaveSingleTaskForCreatingOrderActivateResponse` です。
// 実行時パラメーターを指定します。
RuntimeOptions runtime = new RuntimeOptions();
SaveSingleTaskForCreatingOrderActivateResponse response = client.saveSingleTaskForCreatingOrderActivateWithOptions(request, runtime);4. 例外の処理
Java 向け SDK を使用する際に発生する例外は、`TeaUnretryableException` および `TeaException` の 2 種類に分類されます。
`TeaUnretryableException`:ネットワーク障害などにより発生する例外です。リトライ回数が上限に達すると、この例外がスローされます。
`TeaException`:ビジネスエラー(業務上のエラー)により発生する例外です。
重要本例では、エラーメッセージの表示は参考用のみです。実際の業務シナリオでは、プロジェクト内で例外を無視しないでください。例外の報告、ログの記録、リトライなどの処理を適切に行い、システムの堅牢性および安定性を確保することを推奨します。
try {
Client client = createClient();
SaveSingleTaskForCreatingOrderActivateRequest request = new SaveSingleTaskForCreatingOrderActivateRequest()
.setDomainName("example.com");
// 実行時パラメーターを指定します。
RuntimeOptions runtime = new RuntimeOptions();
SaveSingleTaskForCreatingOrderActivateResponse response = client.saveSingleTaskForCreatingOrderActivateWithOptions(request, runtime);
} catch (TeaUnretryableException ue) {
// 実際の業務シナリオでは例外を慎重に処理し、プロジェクト内で例外を無視しないでください。本例では、参考用としてエラーメッセージを出力しています。
ue.printStackTrace();
// エラーメッセージを取得します。
System.out.println(ue.getMessage());
// エラー発生時のリクエストメッセージを取得し、リクエスト情報を照会します。
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// 実際の業務シナリオでは例外を慎重に処理し、プロジェクト内で例外を無視しないでください。本例では、参考用としてエラーメッセージを出力しています。
e.printStackTrace();
// エラーコードを取得します。
System.out.println(e.getCode());
// リクエスト ID を含むエラーメッセージを取得します。
System.out.println(e.getMessage());
// サーバーから返された詳細なエラー情報を取得します。
System.out.println(e.getData());
} catch (Exception e) {
// 実際の業務シナリオでは例外を慎重に処理し、プロジェクト内で例外を無視しないでください。本例では、参考用としてエラーメッセージを出力しています。
e.printStackTrace();
}5. 完全な例
import com.aliyun.domain20180129.Client;
import com.aliyun.domain20180129.models.SaveSingleTaskForCreatingOrderActivateRequest;
import com.aliyun.domain20180129.models.SaveSingleTaskForCreatingOrderActivateResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// 必須。実行環境で ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。実行環境で ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// エンドポイントを指定します。エンドポイントの一覧については、https://api.aliyun.com/product/Domain をご参照ください。
.setEndpoint("domain.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args_) {
try {
Client client = createClient();
SaveSingleTaskForCreatingOrderActivateRequest request = new SaveSingleTaskForCreatingOrderActivateRequest()
.setDomainName("example.com");
// 実行時パラメーターを指定します。
RuntimeOptions runtime = new RuntimeOptions();
SaveSingleTaskForCreatingOrderActivateResponse response = client.saveSingleTaskForCreatingOrderActivateWithOptions(request, runtime);
} catch (TeaUnretryableException ue) {
// 実際の業務シナリオでは例外を慎重に処理し、プロジェクト内で例外を無視しないでください。本例では、参考用としてエラーメッセージを出力しています。
ue.printStackTrace();
// エラーメッセージを取得します。
System.out.println(ue.getMessage());
// リクエストメッセージを取得します。
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// 実際の業務シナリオでは例外を慎重に処理し、プロジェクト内で例外を無視しないでください。本例では、参考用としてエラーメッセージを出力しています。
e.printStackTrace();
// エラーコードを取得します。
System.out.println(e.getCode());
// リクエスト ID を含むエラーメッセージを取得します。
System.out.println(e.getMessage());
// サーバーから返された詳細なエラー情報を取得します。
System.out.println(e.getData());
} catch (Exception e) {
// 実際の業務シナリオでは例外を慎重に処理し、プロジェクト内で例外を無視しないでください。本例では、参考用としてエラーメッセージを出力しています。
e.printStackTrace();
}
}
}