本文介紹如何使用SDK調用任務相關的方法。
建立任務
說明
該方法主要用於建立遷移任務。
建立任務完成後,可以調用更新任務來啟動任務。
以下範例程式碼用於建立任務。
package main
import (
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
// 填寫源端資料位址名稱。
srcAddress := "examplesrcaddress"
// 填寫目的端資料位址名稱。
destAddress := "exampledestaddress"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
/**
overwriteMode和transferMode需要組合使用,具體組合含義如下
always,all 全覆蓋
always,lastmodified 根據檔案最後修改時間覆蓋
never,"" 不覆蓋
*/
/* 檔案覆蓋方式, 可能的值 1.never 2.always */
overwriteMode := "always"
/* 檔案傳輸的方式, 可能的值為 1.changed 2.all 3.lastmodified */
transferMode := "lastmodified"
// maxBandWidth,maxImportTaskQps 根據實際需求值填寫。
maxImportTaskQps := int64(1000)
maxBandWidth := int64(2147483648)
// 如果maxImportTaskQps值為0或者不設定,會被設定為預設值;MaxBandWidth值為0或者不設定,會被設定為預設值,maxBandWidth值單位為bits。
importQos := mgwpackage.ImportQos{
MaxImportTaskQps: &maxImportTaskQps,
MaxBandWidth: &maxBandWidth,
}
// 配置過濾規則,包含檔案類型過濾器、檔案過濾器、時間過濾器,具體參數含義請參看API文檔。
// 檔案類型過濾器,適用於localfs。
excludeSymlink := false
excludeDir := false
fileTypeFilters := &mgwpackage.FileTypeFilters{
&excludeDir, &excludeSymlink,
}
// 檔案過濾器,根據實際需求值填寫。
var includeRegex []*string
var excludeRegex []*string
jpgFile := ".*.jpg"
gifFile := ".*.gif"
txtFile := ".*.txt"
jsFile := ".*.js"
includeRegex = append(includeRegex, &jpgFile, &gifFile)
excludeRegex = append(excludeRegex, &txtFile, &jsFile)
KeyFilters := &mgwpackage.KeyFilters{
Excludes: &mgwpackage.KeyFilterItem{
excludeRegex,
}, Includes: &mgwpackage.KeyFilterItem{
includeRegex,
},
}
// 時間過濾器, 時間格式遵循UTC時間格式,根據實際需求值填寫。
includeStartTime := "2006-01-01T00:00:00Z"
includeEndTime := "2007-01-01T00:00:00Z"
excludeStartTime := "2009-01-01T00:00:00Z"
excludeEndTime := "2010-01-01T00:00:00Z"
includeTimeFilter := []*mgwpackage.TimeFilter{{
&includeStartTime, &includeEndTime,
}}
includeLastModifyFilters := &mgwpackage.LastModifyFilterItem{
includeTimeFilter,
}
excludeTimeFilter := []*mgwpackage.TimeFilter{{
EndTime: &excludeStartTime, StartTime: &excludeEndTime,
}}
excludeLastModifyFilters := &mgwpackage.LastModifyFilterItem{
TimeFilter: excludeTimeFilter,
}
lastModifiedFilters := &mgwpackage.LastModifiedFilters{
Excludes: excludeLastModifyFilters, Includes: includeLastModifyFilters,
}
filterRule := mgwpackage.FilterRule{
LastModifiedFilters: lastModifiedFilters,
KeyFilters: KeyFilters,
FileTypeFilters: fileTypeFilters,
}
// 配置調度規則,具體參數含義請參看API文檔。
maxScheduleCount := int64(5)
startCronExpression := "0 0 10 * * ?"
suspendCronExpression := "0 0 14 * * ?"
scheduleRule := mgwpackage.ScheduleRule{
MaxScheduleCount: &maxScheduleCount,
StartCronExpression: &startCronExpression,
SuspendCronExpression: &suspendCronExpression,
}
_, err = client.CreateJob(&userId, &mgwpackage.CreateJobRequest{ImportJob: &mgwpackage.CreateJobInfo{
Name: &jobName,
TransferMode: &transferMode,
OverwriteMode: &overwriteMode,
SrcAddress: &srcAddress,
DestAddress: &destAddress,
ImportQos: &importQos,
FilterRule: &filterRule,
ScheduleRule: &scheduleRule,
}})
if err != nil {
log.Printf("create job failed: %v", err)
return
}
}
更新任務
說明
建立任務後,您可以通過該方法來啟動任務、暫停任務以及關閉任務,也可以通過該方法來調整任務限流資訊。
以下範例程式碼用於更新任務狀態。
package main
import (
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
// 允許的狀態值有IMPORT_JOB_LAUNCHING(啟動任務), IMPORT_JOB_SUSPEND(暫停任務),IMPORT_JOB_CLOSING(關閉任務)。
status := "IMPORT_JOB_LAUNCHING"
_, err = client.UpdateJob(&userId, &jobName, &mgwpackage.UpdateJobRequest{
&mgwpackage.UpdateJobInfo{Status: &status},
})
if err != nil {
log.Printf("update job failed, %v", err)
return
}
}
以下範例程式碼用於更新任務限流。
package main
import (
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務ID,必填。
jobName := "examplejob"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
// maxBandWidth、maxImportTaskQps請根據需求填寫。
maxBandWidth := int64(1610612736)
maxImportTaskQps := int64(1500)
_, err = client.UpdateJob(&userId, &jobName, &mgwpackage.UpdateJobRequest{
&mgwpackage.UpdateJobInfo{
ImportQos: &mgwpackage.ImportQos{
MaxBandWidth: &maxBandWidth,
MaxImportTaskQps: &maxImportTaskQps,
},
},
})
if err != nil {
log.Printf("update job failed: %v", err)
return
}
}
擷取任務詳情
說明
該方法主要用於擷取遷移任務詳情。
以下範例程式碼用於擷取指定任務的詳情(通過任務名稱)。
package main
import (
"encoding/json"
"fmt"
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
resp, err := client.GetJob(&userId, &jobName, &mgwpackage.GetJobRequest{})
if err != nil {
log.Printf("get job failed: %v", err)
return
}
jsonBytes, err := json.Marshal(resp)
if err != nil {
log.Printf("covert failed: %v", err)
return
}
fmt.Println(string(jsonBytes))
}
以下範例程式碼用於擷取指定任務的詳情(通過任務ID)。
package main
import (
"encoding/json"
"fmt"
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務ID,必填。
jobId := "b4155550-****-4371-****-9c7337348021"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
byVersion := ""
resp, err := client.GetJob(&userId, &jobId, &mgwpackage.GetJobRequest{
ByVersion: &byVersion,
})
if err != nil {
log.Printf("get job failed: %v", err)
return
}
jsonBytes, err := json.Marshal(resp)
if err != nil {
log.Printf("covert failed: %v", err)
return
}
fmt.Println(string(jsonBytes))
}
正常返回樣本
{
"ImportJob": {
"Name": "test_name",
"SrcAddress": "test_src_address",
"DestAddress": "test_dest_address",
"Status": "IMPORT_JOB_DOING",
"EnableMultiVersioning": false,
"CreateTime": "2024-05-01T12:00:00.000Z",
"ModifyTime": "2024-05-01T12:00:00.000Z",
"Version": "test_id",
"Audit": {
"LogMode": "off"
},
"OverwriteMode": "always",
"TransferMode": "all",
"Tags": "K1:V1,K2:V2",
"ParentName": "test_parent_name",
"ParentVersion": "7db93837-a5ee-4e3a-b3c8-800e7947dabc",
"ConvertSymlinkTarget": false,
"CreateReport": false,
"Owner": "test_owner",
"FilterRule": {
"KeyFilters": {
"Includes": {
"Regex": [
".*\\.jpg$"
]
},
"Excludes": {
"Regex": [
".*\\.jpg$"
]
}
},
"LastModifiedFilters": {
"Includes": {
"TimeFilter": [
{
"StartTime": "2006-01-01T00:00:00Z",
"EndTime": "2006-12-31T59:59:59Z"
}
]
},
"Excludes": {
"TimeFilter": [
{
"StartTime": "2006-01-01T00:00:00Z",
"EndTime": "2006-12-31T59:59:59Z"
}
]
}
},
"FileTypeFilters": {
"ExcludeSymlink": true,
"ExcludeDir": true
}
},
"ImportQos": {
"MaxBandWidth": 1073741824,
"MaxImportTaskQps": 1000
},
"ScheduleRule": {
"StartCronExpression": "0 0 * * * ?",
"SuspendCronExpression": "0 0 * * * ?",
"MaxScheduleCount": 1
}
}
}列舉任務
說明
該方法主要用於列舉使用者在該地區下的遷移任務。
以下範例程式碼用於列舉帳號下所有任務。
package main
import (
"encoding/json"
"fmt"
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
// 根據實際填寫marker,count。
count := int32(1)
marker := ""
resp, err := client.ListJob(&userId, &mgwpackage.ListJobRequest{
Count: &count,
Marker: &marker,
})
if err != nil {
log.Printf("list job failed: %v", err)
return
}
jsonBytes, err := json.Marshal(resp)
if err != nil {
log.Printf("covert failed: %v", err)
return
}
fmt.Println(string(jsonBytes))
}
正常返回樣本
{
"ImportJobList": {
"NextMarker": "test_nex_marker",
"Truncated": true,
"ImportJob": [
{
"Name": "test_name",
"SrcAddress": "test_src_address",
"DestAddress": "test_dest_address",
"Status": "IMPORT_JOB_DOING",
"EnableMultiVersioning": false,
"CreateTime": "2024-05-01T12:00:00.000Z",
"ModifyTime": "2024-05-01T12:00:00.000Z",
"Version": "test_id",
"Audit": {
"LogMode": "off"
},
"OverwriteMode": "always",
"TransferMode": "all",
"Tags": "K1:V1,K2:V2",
"ParentName": "test_parent_name",
"ParentVersion": "7db93837-a5ee-4e3a-b3c8-800e7947dabc",
"ConvertSymlinkTarget": false,
"CreateReport": false,
"Owner": "test_owner",
"FilterRule": {
"KeyFilters": {
"Includes": {
"Regex": [
".*\\.jpg$"
]
},
"Excludes": {
"Regex": [
".*\\.jpg$"
]
}
},
"LastModifiedFilters": {
"Includes": {
"TimeFilter": [
{
"StartTime": "2006-01-01T00:00:00Z",
"EndTime": "2006-12-31T59:59:59Z"
}
]
},
"Excludes": {
"TimeFilter": [
{
"StartTime": "2006-01-01T00:00:00Z",
"EndTime": "2006-12-31T59:59:59Z"
}
]
}
},
"FileTypeFilters": {
"ExcludeSymlink": true,
"ExcludeDir": true
}
},
"ImportQos": {
"MaxBandWidth": 1073741824,
"MaxImportTaskQps": 1000
},
"ScheduleRule": {
"StartCronExpression": "0 0 * * * ?",
"SuspendCronExpression": "0 0 * * * ?",
"MaxScheduleCount": 1
}
}
]
}
}擷取任務重試資訊
說明
任務運行完成後,可能存在失敗檔案,線上遷移服務會對這些失敗檔案構造一份清單。通過以下範例程式碼擷取指定輪次失敗檔案的清單資訊,如返回結果為Ready,可用該清單重試失敗檔案。
該方法的結果主要用於重試任務的參數配置中。
該方法主要用於當遷移任務有失敗檔案時,擷取失敗檔案是否能重試的資訊。
以下範例程式碼用於擷取指定輪次的任務重試資訊。
package main
import (
"encoding/json"
"fmt"
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
// 填寫任務輪次。
runtimeId := int32(1)
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
resp, err := client.GetJobResult(&userId, &jobName, &mgwpackage.GetJobResultRequest{
RuntimeId: &runtimeId,
})
if err != nil {
log.Printf("get job result failed: %v", err)
return
}
jsonBytes, err := json.Marshal(resp)
if err != nil {
log.Printf("covert failed: %v", err)
return
}
fmt.Println(string(jsonBytes))
}
正常返回樣本
{
"ImportJobResult": {
"ReadyRetry": "Ready",
"InvPath": "mainfest.json",
"InvBucket": "test_sys_bucket",
"InvDomain": "test_domain",
"InvLocation": "oss",
"InvAccessId": "test_access_id",
"InvAccessSecret": "test_secret_key",
"InvRegionId": "test_region_id",
"AddressType": "ossinv",
"TotalObjectCount": 1000,
"CopiedObjectCount": 800,
"FailedObjectCount": 200,
"SkippedObjectCount": 200,
"TotalObjectSize": 1000,
"CopiedObjectSize": 800,
"SkippedObjectSize": 800,
"Version": "test_job_id"
}
}列舉任務記錄
說明
該方法主要用於查詢指定任務記錄。
以下範例程式碼用於列舉指定任務的記錄。
package main
import (
"encoding/json"
"fmt"
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
// 填寫任務輪次。runtimeId可以不指定,不指定表示列舉指定任務所有輪記錄。
runtimeId := int32(1)
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
// 下列參數值請根據實際需求填寫。
count := int32(1)
marker := ""
resp, err := client.ListJobHistory(&userId, &jobName, &mgwpackage.ListJobHistoryRequest{
Count: &count,
Marker: &marker,
RuntimeId: &runtimeId,
})
if err != nil {
log.Printf("list job history failed: %v", err)
return
}
jsonBytes, err := json.Marshal(resp)
if err != nil {
log.Printf("covert failed: %v", err)
return
}
fmt.Println(string(jsonBytes))
}
正常返回樣本
{
"JobHistoryList": {
"Truncated": "true",
"NextMarker": "test_next_marker",
"JobHistory": [
{
"Name": "test_name",
"JobVersion": "test_id",
"RuntimeId": "1",
"CommitId": "2",
"StartTime": "2024-05-01T12:00:00.000Z",
"EndTime": "2024-05-01T12:00:00.000Z",
"Status": "IMPORT_JOB_DOING",
"TotalCount": 1000,
"CopiedCount": 900,
"FailedCount": 100,
"TotalSize": 5368709120,
"CopiedSize": 4294967296,
"SkippedCount": 0,
"SkippedSize": 0,
"RuntimeState": "Normal",
"Message": "test error msg.",
"Operator": "user",
"ListStatus": "Listing"
}
]
}
}刪除任務
說明
該方法主要用於刪除遷移任務。
以下範例程式碼用於刪除指定任務。
package main
import (
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
_, err = client.DeleteJob(&userId, &jobName, &mgwpackage.DeleteJobRequest{})
if err != nil {
log.Printf("delete job failed: %v", err)
return
}
}
建立任務遷移報告
說明
該方法為非同步方法呼叫,調用該方法後後端開始準備產生遷移報告,是否產生完畢需要通過擷取任務遷移報告方法來完成。
以下範例程式碼用於建立指定任務遷移報告。
package main
import (
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務名稱。
jobName := "examplejob"
// 填寫任務ID,必填。
version := "b4155550-****-4371-****-9c7337348021"
// 填寫任務輪次,必填。
runtimeId := int32(1)
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
_, err = client.CreateReport(&userId, &mgwpackage.CreateReportRequest{
CreateReport: &mgwpackage.CreateReportInfo{
JobName: &jobName,
RuntimeId: &runtimeId,
Version: &version,
},
})
if err != nil {
log.Printf("create report failed: %v", err)
return
}
}
擷取任務遷移報告
說明
調用該方法可以查詢到指定任務的遷移報告,可根據該方法判斷遷移報告是否產生完畢以及擷取產生的遷移報告。
以下範例程式碼用於查詢指定任務遷移報告。
package main
import (
"encoding/json"
"fmt"
"log"
"os"
openapipackage "github.com/alibabacloud-go/darabonba-openapi/v2/client"
mgwpackage "github.com/alibabacloud-go/hcs-mgw-20240626/client"
)
/** 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。*/
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
/** 填寫主帳號ID。*/
var userId = "11470***876***55"
func main() {
// 這裡以北京地區為例。
endpoint := "cn-beijing.mgw.aliyuncs.com"
// 支援 HTTPS、HTTP, 未指定時預設採用 HTTPs。
protocol := "http"
// 填寫任務ID,必填。
version := "b4155550-****-4371-****-9c7337348021"
// 填寫任務輪次,必填。
runtimeId := int32(1)
config := openapipackage.Config{
AccessKeyId: &accessKeyId,
AccessKeySecret: &accessKeySecret,
Endpoint: &endpoint,
Protocol: &protocol,
}
client, err := mgwpackage.NewClient(&config)
if err != nil {
log.Printf("create client failed: %v", err)
return
}
resp, err := client.GetReport(&userId, &mgwpackage.GetReportRequest{
RuntimeId: &runtimeId,
Version: &version,
})
if err != nil {
log.Printf("get report failed: %v", err)
return
}
jsonBytes, err := json.Marshal(resp)
if err != nil {
log.Printf("covert failed: %v", err)
return
}
fmt.Println(string(jsonBytes))
}
正常返回樣本
{
"GetReportResponse": {
"Status": "Running",
"ReportCreateTime": "2024-05-01T12:00:00.000Z",
"ReportEndTime": "2024-05-01T12:00:00.000Z",
"TotalCount": 1000,
"CopiedCount": 800,
"SkippedCount": 100,
"FailedCount": 100,
"JobCreateTime": "2024-05-01T12:00:00.000Z",
"JobEndTime": "2024-05-01T12:00:00.000Z",
"JobExecuteTime": "1000",
"TotalListPrefix": "test_total_prefix/",
"SkippedListPrefix": "test_skipped_prefix/",
"FailedListPrefix": "test_failed_prefix/",
"ErrorMessage": "test error msg."
}
}