一次性迁移服务器
本文介绍如何通过服务器迁移中心SMC Java SDK调用CreateReplicationJob和StartReplicationJob创建并执行一次性迁移任务,再调用DescribeReplicationJobs查询迁移任务的信息。
前提条件
- 已导入迁移源,详情请参见步骤一:导入迁移源。
- 已安装SMC Python SDK,详情请参见安装Python SDK。
完整代码示例
from aliyunsdkcore.client import AcsClient
from aliyunsdksmc.request.v20190601 import CreateReplicationJobRequest
from aliyunsdksmc.request.v20190601 import StartReplicationJobRequest
from aliyunsdksmc.request.v20190601 import DescribeReplicationJobsRequest
import json
import time
import uuid
# 初始化AcsClient实例,设置地域ID及您的AccessKey信息
client = AcsClient('<accessKeyId>', '<accessSecret>', '<region-Id>')
# 创建迁移任务
def create_replication_job():
#创建API请求,并设置参数
request = CreateReplicationJobRequest.CreateReplicationJobRequest()
# 迁移源ID
request.set_SourceId('s-bp152mkfswvidyr3****')
# 目标阿里云服务器ECS的系统盘大小,单位为GiB
request.set_SystemDiskSize(80)
# 保证请求幂等性,您可以从客户端生成一个不超过64个ASCII字符的参数值,并将值赋予ClientToken
# request.set_ClientToken(uuid.uuid4())
# 迁移任务名
request.set_Name('smcName')
# 迁移任务描述
request.set_Description('setDescription')
# 已配置高速通道服务或者VPN网关的VPC的ID
request.set_VpcId('vpc-bp1vwnn14rqpyiczj****')
# 指定VPC下的交换机ID
request.set_VSwitchId('vsw-bp1ddbrxdlrcbim46****')
# 发送请求获取返回值
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
print('**********成功创建迁移任务**********')
return json.loads(response)['JobId']
# 启动迁移任务
def start_replication_job(job_id):
# 创建API请求,并设置参数
request = StartReplicationJobRequest.StartReplicationJobRequest()
# 迁移任务ID
request.set_JobId(job_id)
# 发送请求获取返回值
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
print('**********启动迁移任务**********')
# 查询迁移任务状态
def describe_replication_jobs(job_ids):
# 创建API请求,并设置参数
request = DescribeReplicationJobsRequest.DescribeReplicationJobsRequest()
# 设置迁移任务ID列表
jobIds = [job_ids]
request.set_JobIds(jobIds)
# 设置迁移任务的名称
request.set_Name('smcName')
# 设置迁移任务的页码
request.set_PageNumber(1)
# 设置每页行数
request.set_PageSize(10)
# 设置迁移源ID列表
sourceIds = ['s-bp152mkfswvidyr3****']
request.set_SourceIds(sourceIds)
# 发送请求获取返回值
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
print('**********查看迁移任务状态**********')
jobslist = json.loads(response)['ReplicationJobs']['ReplicationJob']
for i in jobslist:
return (i['Status'])
# 执行创建迁移任务方法
job_id = create_replication_job()
# 执行启动迁移任务方法
start_replication_job(job_id)
# 每隔10分钟执行一次查询迁移任务状态方法,判断是否迁移完成。
while True:
status = describe_replication_jobs(job_id)
print('迁移任务正在执行……')
time.sleep(600)
if status == 'Finished':
print('迁移完成!')
break
执行结果
{
"JobId": "j-bp15dpodoftnvm1s****",
"RequestId": "1042DD41-FEF1-4267-8733-C910B765B9CF"
}
**********成功创建迁移任务**********
{
"RequestId": "2A7930A1-56B2-4B5D-9874-4CB48F5C5095"
}
**********启动迁移任务**********
{
"PageNumber": 1,
"TotalCount": 1,
"PageSize": 10,
"ReplicationJobs": {
"ReplicationJob": [{
"Description": "setDescription",
"SystemDiskSize": 80,
"TargetType": "Image",
"VSwitchId": "vsw-bp1ddbrxdlrcbim46****",
"SourceId": "s-bp152mkfswvidyr3****",
"NetMode": 0,
"VpcId": "vpc-bp1vwnn14rqpyiczj****",
"Progress": 0.0,
"Name": "smcName",
"CreationTime": "2020-01-08T08:27:45Z",
"Status": "Running",
"BusinessStatus": "Preparing",
"JobId": "j-bp15dpodoftnvm1s****",
"RegionId": "cn-hangzhou",
"RunOnce": true,
"StartTime": "2020-01-08T08:27:46Z",
"ValidTime": "2020-02-07T08:27:45Z"
}]
},
"RequestId": "B62A8AEE-95AA-400F-8A6C-4822E3F4B690"
}
**********查看迁移任务状态**********
迁移任务正在执行……
{
"PageNumber": 1,
"TotalCount": 1,
"PageSize": 10,
"ReplicationJobs": {
"ReplicationJob": [{
"Description": "setDescription",
"SystemDiskSize": 80,
"TargetType": "Image",
"VSwitchId": "vsw-bp1ddbrxdlrcbim46****",
"SourceId": "s-bp152mkfswvidyr3****",
"NetMode": 0,
"VpcId": "vpc-bp1vwnn14rqpyiczj****",
"Progress": 0.0,
"Name": "smcName",
"CreationTime": "2020-01-08T08:27:45Z",
"Status": "Running",
"BusinessStatus": "Preparing",
"JobId": "j-bp15dpodoftnvm1s****",
"RegionId": "cn-hangzhou",
"RunOnce": true,
"StartTime": "2020-01-08T08:27:46Z",
"ValidTime": "2020-02-07T08:27:45Z"
}]
},
"RequestId": "B62A8AEE-95AA-400F-8A6C-4822E3F4B690"
}
**********查看迁移任务状态**********
迁移完成!
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论