すべてのプロダクト
Search
ドキュメントセンター

Data Online Migration:ジョブ

最終更新日:Feb 07, 2026

このトピックでは、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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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 の単位はビットです。
    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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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
    }

    // 必要に応じて 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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで HTTPS が使用されます。
    protocol := "http"
    // ジョブ名を入力します。
    jobName := "examplejob"
    // ジョブ実行 ID を入力します。
    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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで HTTPS が使用されます。
    protocol := "http"
    // ジョブ名を入力します。
    jobName := "examplejob"
    // ジョブ実行 ID を入力します。省略した場合、ジョブのすべての実行がリストされます。
    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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで 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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで HTTPS が使用されます。
    protocol := "http"
    // ジョブ名を入力します。
    jobName := "examplejob"
    // ジョブ ID を入力します。このパラメーターは必須です。
    version := "b4155550-****-4371-****-9c7337348021"
    // ジョブ実行 ID を入力します。このパラメーターは必須です。
    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 をプロジェクトコードに保存しないでください。そうしないと、認証情報が漏洩し、アカウントのすべてのリソースが危険にさらされる可能性があります。 */
var accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
var accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

/** ご利用の Alibaba Cloud アカウント ID を入力します。 */
var userId = "11470***876***55"

func main() {
    // この例では、中国 (北京) リージョンを使用します。
    endpoint := "cn-beijing.mgw.aliyuncs.com"
    // HTTP と HTTPS がサポートされています。指定しない場合、デフォルトで HTTPS が使用されます。
    protocol := "http"
    // ジョブ ID を入力します。このパラメーターは必須です。
    version := "b4155550-****-4371-****-9c7337348021"
    // ジョブ実行 ID を入力します。このパラメーターは必須です。
    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."
  }
}