本文介绍如何通过SMC Java SDK调用CreateReplicationJob为迁移源创建一个迁移任务。

背景信息

您可以通过CreateReplicationJob接口为迁移源创建一个迁移任务,详情请参见CreateReplicationJob

说明
  • 您只能为在线(Available)状态的迁移源创建迁移任务。
  • 每个迁移源仅能关联一个未完成状态的迁移任务。未完成状态包括Ready(未开始)、Running(运行中)、Stopped(已暂停)、Waiting(等待中)、InError(出错)和Expired(已过期)。
  • 每个阿里云账号可创建100个迁移任务。
  • 迁移目标类型为镜像时,需指定ImageName、SystemDiskSize、DataDisk参数。
  • 使用VPC内网迁移时,VSwitchId参数为必填,VpcId参数为可选。

代码示例

以下代码用于创建一个已指定VPC、目标ECS实例系统盘大小为80 GiB的迁移任务,并且为迁移任务绑定usage:production标签:

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.aliyuncs.smc.model.v20190601.CreateReplicationJobRequest;
import com.aliyuncs.smc.model.v20190601.CreateReplicationJobResponse;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

public class CreateReplicationJob {
    public static void main(String[] args) {
        //初始化AcsClient实例,设置地域ID及您的AccessKey信息
        DefaultProfile profile = DefaultProfile.getProfile("<region-Id>", "<accessKeyId>", "<accessSecret>");
        IAcsClient client = new DefaultAcsClient(profile);

        //创建API请求,并设置参数
        CreateReplicationJobRequest request = new CreateReplicationJobRequest();
        //迁移源ID
        request.setSourceId("s-bp152mkfswviw7sd****");//专有网络VPC的ID
        request.setVpcId("vpc-bp1vwnn14rqpyiczj****");
        //指定VPC下的交换机ID
        request.setVSwitchId("vsw-bp1ddbrxdlrcbim46****");
        //目标阿里云服务器ECS的系统盘大小,单位为GiB
        request.setSystemDiskSize(80);
        //创建一次性迁移任务还是增量迁移任务
        request.setRunOnce(true);
        //迁移任务的标签键值对
        List<CreateReplicationJobRequest.Tag> tags = new ArrayList<>();
        CreateReplicationJobRequest.Tag tag = new CreateReplicationJobRequest.Tag();
        tag.setKey("usage");
        tag.setValue("production");
        tags.add(tag);
        request.setTags(tags);
        //迁移任务名
        //request.setName("MySourceServer");
        //迁移任务描述
        //request.setDescription("This_is_a_migration_task");
        //迁移任务的执行时间
        //request.setScheduledStartTime("2019-06-04T13:35:00Z");
        //迁移任务的过期时间
        //request.setValidTime("2019-06-04T13:35:00Z");
        //目标实例ID
        //request.setInstanceId("i-bp12uyz75shn6jsp****");
        //迁移任务交付的目标阿里云镜像名称
        //request.setImageName("smc-image");
        //保证请求幂等性,您可以从客户端生成一个不超过64个ASCII字符的参数值,并将值赋予ClientToken
        //request.setClientToken(UUID.randomUUID().toString());
        //增量迁移任务运行的时间间隔
        //request.setFrequency(12);
        //目标阿里云服务器ECS的数据盘顺序和大小
        //List<CreateReplicationJobRequest.DataDisk> datadisks = new ArrayList<>();
        //CreateReplicationJobRequest.DataDisk datadisk = new CreateReplicationJobRequest.DataDisk();
        //目标阿里云服务器ECS的数据盘顺序
        //datadisk.setIndex(1);
        //目标阿里云服务器ECS的数据盘大小
        //datadisk.setSize(100);
        //datadisks.add(datadisk);
        //request.setDataDisks(datadisks);
        //增量迁移任务默认保留的最大镜像数
        //request.setMaxNumberOfImageToKeep(10);
        //数据传输网络模式
        //request.setNetMode(0);
        //复制驱动器的参数信息
        //request.setReplicationParameters("{\"bandwidth_limit\":0,\"compress_level\":1,\"checksum\":true}");
        //迁移任务交付的目标类型
        //request.setTargetType("Image");

        //发送请求获取返回值或处理异常
        try {
            CreateReplicationJobResponse response = client.getAcsResponse(request);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}          

执行结果

{
    "RequestId":"C8B26B44-0189-443E-9816-D951F59623A9",
    "JobId":"j-bp152mkfswviwbqj****"
}