本文介绍如何使用数据传输服务DTS(Data Transmission Service)的Java开发者工具包(SDK),并提供示例供您参考。
前提条件
已经创建了AccessKey,详情请参见创建AccessKey。
说明为避免主账号泄露AccessKey带来的安全风险,建议您创建RAM用户,授予RAM用户访问DTS资源的权限,再使用RAM用户的AccessKey来调用SDK。详情请参见账号访问控制。
已下载DTS的SDK安装包,详情请参见SDK下载。
安装方法
您可以通过添加Maven依赖或者导入Jar文件来安装Java SDK,详情请参见添加 SDK 依赖。
您可以在SDK中心中查看DTS的Maven依赖信息。
过添加Maven依赖下载SDK包时,请选择最新版本的SDK。
请求步骤
设置地域AccessKey信息(即AccessKey ID和AccessKey Secret)。
重要建议您通过配置环境变量或者读取配置文件的方式获取AccessKey信息(代码里的accessKeyId和accessSecret),不建议您直接传入AccessKey信息。
通过读取配置文件的方法获取AccessKey信息
Properties properties = new Properties(); BufferedReader bufferedReader = new BufferedReader(new FileReader("{配置文件的绝对路径}")); properties.load(bufferedReader); String accessKeyId = properties.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID"); String accessKeySecret = properties.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); IClientProfile profile = DefaultProfile.getProfile("<RegionId>",accessKeyId,accessKeySecret);
通过Java自带的System方法获取AccessKey信息
使用此方法需要先配置环境变量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
,配置方法如下:Linux和macOS系统配置方法
执行以下命令:
export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
<access_key_id>
需替换为已准备好的AccessKey ID,<access_key_secret>
替换为AccessKey Secret。Windows系统配置方法
新建环境变量文件,添加环境变量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
,并写入已准备好的AccessKey ID和AccessKey Secret。重启Windows系统。
然后使用如下代码:
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); IClientProfile profile = DefaultProfile.getProfile("<RegionId>",accessKeyId,accessKeySecret);
说明<RegionId>:地域ID,详情请参见支持的地域列表。
<accessKeyId>: RAM账号的AccessKey ID。
<accessSecret>:RAM账号AccessKey Secret。
可选:设置Endpoint信息。
Endpoint是阿里云服务的API服务端地址。针对不同的地域,单个服务可能有不同的Endpoint。阿里云SDK内置了Endpoint寻址模块,当您调用SDK对一个服务发起请求时,SDK会自动根据您在创建SDK client时指定的地域ID和产品ID来找到Endpoint,所以该步骤为可选。
DefaultProfile.addEndpoint("<endpointName>","<RegionId>", "dts", "<domain>");
初始化客户端。
DefaultAcsClient client = new DefaultAcsClient(profile);
创建API请求并设置参数。
下述代码以购买迁移实例(购买数据迁移任务)为例。
CreateMigrationJobResponse request = new CreateMigrationJobRequest(); request.setRegion("cn-hangzhou"); request.setMigrationJobClass("large");
发起请求并处理应答或异常。
try { CreateMigrationJobResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); }
完整请求示例
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.dts.model.v20180801.*;
public class CreateMigrationJob {
public static void main(String[] args) {
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
IClientProfile profile = DefaultProfile.getProfile("<RegionId>",accessKeyId,accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
CreateMigrationJobRequest request = new CreateMigrationJobRequest();
request.setRegionId("cn-hangzhou");
request.setRegion("cn-hangzhou");
request.setMigrationJobClass("large");
try {
CreateMigrationJobResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
返回示例
{"MigrationJobId":"dts********","Success":true}
更多信息
在线调试和生成SDK示例。
OpenAPI Explorer提供在线调用云产品API、动态生成SDK示例代码和快速检索接口等功能,能显著降低使用API的难度,推荐您使用。
更多SDK相关说明,请参见Java SDK使用说明。