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

Data Online Migration:ジョブ

最終更新日:Feb 07, 2026

このトピックでは、ソフトウェア開発キット(SDK)を使用してジョブ関連のメソッドを呼び出す方法について説明します。

ジョブの作成

説明
  • このメソッドは主に移行ジョブの作成に使用されます。

  • ジョブを作成した後は、ジョブの更新 を呼び出してジョブを開始してください。

以下のサンプルコードは、ジョブを作成する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import java.util.List;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ名を入力します。
      String jobName = "examplejob";
      // ソースデータアドレスの名前を入力します。
      String srcAddress = "examplesrcaddress";
      // 宛先データアドレスの名前を入力します。
      String destAddress = "exampledestaddress";

      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         CreateJobInfo info = new CreateJobInfo();
         info.name = jobName;
         info.srcAddress = srcAddress;
         info.destAddress = destAddress;
         /**
          overwriteMode と transferMode は併用する必要があります。組み合わせは以下のとおりです:
          always,all:すべてのファイルを上書きします。
          always,lastmodified:ファイルの最終変更時刻に基づいて上書きします。
          never,"":ファイルを一切上書きしません。
        */
         /* ファイル上書きモード。有効な値:1. never 2. always */
         info.overwriteMode = "always";
         /* ファイル転送モード。有効な値:1. changed 2. all 3. lastmodified */
         info.transferMode = "lastmodified";

         // maxImportTaskQps を 0 に設定するか空欄のままにすると、デフォルト値が使用されます。MaxBandWidth を 0 に設定するか空欄のままにしても、デフォルト値が使用されます。maxBandWidth の単位はビットです。
         ImportQos importQos = new ImportQos();
         // 必要に応じて maxBandWidth および maxImportTaskQps を設定します。
         importQos.maxBandWidth = 1073741824L;
         importQos.maxImportTaskQps = 1000L;
         info.setImportQos(importQos);

         // スケジューリングルールを設定します。パラメーターの詳細については、API ドキュメントをご参照ください。
         ScheduleRule scheduleRule = new ScheduleRule();
         // 必要に応じて maxScheduleCount、startCronExpression、suspendCronExpression を設定します。
         scheduleRule.maxScheduleCount = 2L;
         scheduleRule.startCronExpression = "0 0 10 * * ?";
         scheduleRule.suspendCronExpression = "0 0 14 * * ?";
         info.setScheduleRule(scheduleRule);

         // フィルタールールを設定します。パラメーターの詳細については、API ドキュメントをご参照ください。
         FilterRule filterRule = new FilterRule();
         // ファイルフィルター。必要に応じて値を設定します。
         KeyFilters keyFilters = new KeyFilters();
         KeyFilterItem includekeyFilterItem = new KeyFilterItem();
         List<String> includeRegex = new LinkedList<>();
         includeRegex.add(".*.jpg");
         includeRegex.add(".*.jpeg");
         includekeyFilterItem.setRegex(includeRegex);
         KeyFilterItem excludekeyFilterItem = new KeyFilterItem();
         List<String> excludeRegex = new LinkedList<>();
         excludeRegex.add(".*.txt");
         excludeRegex.add(".*.js");
         excludekeyFilterItem.setRegex(excludeRegex);
         keyFilters.setIncludes(includekeyFilterItem);
         keyFilters.setExcludes(excludekeyFilterItem);
         filterRule.setKeyFilters(keyFilters);

         // 時間フィルター。時間は UTC 形式である必要があります。必要に応じて値を設定します。
         LastModifiedFilters lastModifiedFilters = new LastModifiedFilters();
         LastModifyFilterItem includeLastModifyFilterItem = new LastModifyFilterItem();
         List<TimeFilter> includeRegexs = new LinkedList<>();
         TimeFilter includeTimeFilter = new TimeFilter();
         includeTimeFilter.startTime = "2006-01-01T00:00:00Z";
         includeTimeFilter.endTime = "2006-12-31T23:59:59Z";
         includeRegexs.add(includeTimeFilter);
         includeLastModifyFilterItem.setTimeFilter(includeRegexs);
         LastModifyFilterItem excludeLastModifyFilterItem = new LastModifyFilterItem();
         List<TimeFilter> excludeRegexs = new LinkedList<>();
         TimeFilter excludeTimeFilter = new TimeFilter();
         excludeTimeFilter.startTime = "2008-01-01T00:00:00Z";
         excludeTimeFilter.endTime = "2008-12-31T23:59:59Z";
         excludeRegexs.add(excludeTimeFilter);
         excludeLastModifyFilterItem.setTimeFilter(excludeRegexs);
         lastModifiedFilters.setIncludes(includeLastModifyFilterItem);
         lastModifiedFilters.setExcludes(excludeLastModifyFilterItem);
         filterRule.setLastModifiedFilters(lastModifiedFilters);
         info.setFilterRule(filterRule);

         CreateJobRequest request = new CreateJobRequest();
         request.setImportJob(info);
         client.createJob(userId, request);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

ジョブの更新

説明

ジョブを作成した後は、このメソッドを使用してジョブを開始、一時停止、または停止するほか、レート制限設定を調整できます。

以下のサンプルコードは、ジョブのステータスを更新する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;

public class Demo {
	/** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
	static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
	static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
	/** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
	static String userId = "11470***876***55";

	public static void main(String[] args) {
		// ジョブ名を入力します。
		String jobName = "examplejob";
		try {
			com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
			// この例では中国 (北京) リージョンを使用します。
			config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
			config.setAccessKeyId(accessKeyId);
			config.setAccessKeySecret(accessKeySecret);
			// HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
                        config.setProtocol("http");
			Client client = new Client(config);
			UpdateJobRequest updateJobRequest = new UpdateJobRequest();
			UpdateJobInfo updateJobInfo = new UpdateJobInfo();
			// 有効なステータス値は、IMPORT_JOB_LAUNCHING(ジョブ開始)、IMPORT_JOB_SUSPEND(ジョブ一時停止)、IMPORT_JOB_CLOSING(ジョブ終了)です。
			updateJobInfo.setStatus("IMPORT_JOB_LAUNCHING");
			updateJobRequest.setImportJob(updateJobInfo);
			client.updateJob(userId, jobName, updateJobRequest);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

以下のサンプルコードは、ジョブのレート制限設定を更新する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;

public class Demo {
	/** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
	static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
	static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
	/** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
	static String userId = "11470***876***55";

	public static void main(String[] args) {
		// ジョブ名を入力します。
		String jobName = "examplejob";
		try {
			com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
			// この例では中国 (北京) リージョンを使用します。
			config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
			config.setAccessKeyId(accessKeyId);
			config.setAccessKeySecret(accessKeySecret);
			// HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
                        config.setProtocol("http");
			Client client = new Client(config);
			UpdateJobRequest updateJobRequest = new UpdateJobRequest();
			UpdateJobInfo updateJobInfo = new UpdateJobInfo();
			// 必要に応じて maxBandWidth および maxImportTaskQps を設定します。
			long maxBandWidth = 1610612736L;
			long maxImportTaskQps = 1500L;
			ImportQos qos = new ImportQos();
			qos.setMaxBandWidth(maxBandWidth);
			updateJobInfo.setImportQos(qos);
			qos.setMaxImportTaskQps(maxImportTaskQps);
			updateJobRequest.setImportJob(updateJobInfo);
			client.updateJob(userId, jobName, updateJobRequest);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

ジョブの詳細情報の取得

説明

このメソッドは移行ジョブの詳細情報を取得します。

以下のサンプルコードは、ジョブ名を指定して特定のジョブの詳細情報を取得する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import com.google.gson.Gson;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ名を入力します。
      String jobName = "examplejob";
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         GetJobRequest request = new GetJobRequest();
         GetJobResponse resp = client.getJob(userId, jobName, request);
         System.out.println(new Gson().toJson(resp.getBody().getImportJob()));
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

以下のサンプルコードは、ジョブ ID を指定して特定のジョブの詳細情報を取得する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import com.google.gson.Gson;

public class Demo {
	/** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
	static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
	static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
	/** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
	static String userId = "11470***876***55";

	public static void main(String[] args) {
		// ジョブ ID を入力します。
		String version = "b4155550-****-4371-****-9c73373480211";
		try {
			com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
			// この例では中国 (北京) リージョンを使用します。
			config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
			config.setAccessKeyId(accessKeyId);
			config.setAccessKeySecret(accessKeySecret);
			// HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
                        config.setProtocol("http");
			Client client = new Client(config);
			GetJobRequest request = new GetJobRequest();
			GetJobResponse resp = client.getJob(userId, version, request);
			System.out.println(new Gson().toJson(resp.body.getImportJob()));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

正常終了時の応答例

{
  "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-31T23:59:59Z"
            }
          ]
        },
        "Excludes": {
          "TimeFilter": [
            {
              "StartTime": "2006-01-01T00:00:00Z",
              "EndTime": "2006-12-31T23:59:59Z"
            }
          ]
        }
      },
      "FileTypeFilters": {
        "ExcludeSymlink": true,
        "ExcludeDir": true
      }
    },
    "ImportQos": {
      "MaxBandWidth": 1073741824,
      "MaxImportTaskQps": 1000
    },
    "ScheduleRule": {
      "StartCronExpression": "0 0 * * * ?",
      "SuspendCronExpression": "0 0 * * * ?",
      "MaxScheduleCount": 1
    }
  }
}

ジョブの一覧表示

説明

このメソッドは、ご利用のアカウントに対してリージョン内で実行中のすべての移行ジョブを一覧表示します。

以下のサンプルコードは、アカウント配下のすべてのジョブを一覧表示する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import com.google.gson.Gson;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         ListJobRequest request = new ListJobRequest();
         // 必要に応じて marker および count を設定します。
         request.setCount(1);
         String marker = "";
         request.setMarker(marker);
         ListJobResponse resp = client.listJob(userId, request);
         System.out.println(new Gson().toJson(resp.getBody().getImportJobList()));
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

正常終了時の応答例

{
  "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-31T23:59:59Z"
                }
              ]
            },
            "Excludes": {
              "TimeFilter": [
                {
                  "StartTime": "2006-01-01T00:00:00Z",
                  "EndTime": "2006-12-31T23:59:59Z"
                }
              ]
            }
          },
          "FileTypeFilters": {
            "ExcludeSymlink": true,
            "ExcludeDir": true
          }
        },
        "ImportQos": {
          "MaxBandWidth": 1073741824,
          "MaxImportTaskQps": 1000
        },
        "ScheduleRule": {
          "StartCronExpression": "0 0 * * * ?",
          "SuspendCronExpression": "0 0 * * * ?",
          "MaxScheduleCount": 1
        }
      }
    ]
  }
}

ジョブのリトライ情報の取得

説明
  • ジョブが完了した後、一部のファイルが失敗することがあります。データオンライン移行では、これらの失敗ファイルのマニフェストが生成されます。以下のサンプルコードを使用して、特定の実行に対するマニフェストの詳細を取得します。応答で「Ready」と表示された場合、このマニフェストを使用して失敗したファイルを再実行できます。

  • ジョブの再実行時にパラメーターを設定する際に、このメソッドの結果を使用します。

  • このメソッドは、移行ジョブから失敗したファイルを再実行できるかどうかを確認します。

以下のサンプルコードは、特定のジョブ実行に対するリトライ情報を取得する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import com.google.gson.Gson;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ名を入力します。
      String jobName = "examplejob";
      // ジョブ実行 ID を入力します。
      int runtimeId = 1;
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         GetJobResultRequest request = new GetJobResultRequest();
         request.runtimeId = runtimeId;
         GetJobResultResponse resp = client.getJobResult(userId, jobName, request);
         System.out.println(new Gson().toJson(resp.body.importJobResult));
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

正常終了時の応答例

{
  "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 sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import com.google.gson.Gson;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ名を入力します。
      String jobName = "examplejob";
      // ジョブ実行 ID を入力します。runtimeId を指定しない場合、指定されたジョブのすべての実行履歴が一覧表示されます。
      int runtimeId = 1;
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         ListJobHistoryRequest request = new ListJobHistoryRequest();
         // 必要に応じて以下のパラメーター値を設定します。
         request.runtimeId = runtimeId;
         request.count = 1;
         request.marker = "";
         ListJobHistoryResponse resp = client.listJobHistory(userId, jobName, request);
         request.marker = resp.body.jobHistoryList.nextMarker;
         resp = client.listJobHistory(userId, jobName, request);
         System.out.println(new Gson().toJson(resp.body.jobHistoryList));
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

正常終了時の応答例

{
  "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 sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ名を入力します。
      String jobName = "examplejob";
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         DeleteJobRequest request = new DeleteJobRequest();
         client.deleteJob(userId, jobName, request);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

ジョブ移行レポートの作成

説明

これは非同期メソッドです。呼び出した後、バックエンドで移行レポートの準備が開始されます。移行レポートが準備できたかどうかを確認するには、「ジョブ移行レポートの取得」メソッドを使用します。

以下のサンプルコードは、特定のジョブに対して移行レポートを作成する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ名を入力します。このパラメーターは必須です。
      String jobName = "examplejob";
      // ジョブ ID を入力します。このパラメーターは必須です。
      String version = "b4155550-****-4371-****-9c7337348021";
      // ジョブ実行 ID を入力します。このパラメーターは必須です。
      int runtimeId = 1;
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         CreateReportRequest request = new CreateReportRequest();
         CreateReportInfo info = new CreateReportInfo();
         info.jobName = jobName;
         info.version = version;
         info.runtimeId = runtimeId;
         request.setCreateReport(info);
         client.createReport(userId, request);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

ジョブ移行レポートの取得

説明

このメソッドを呼び出して、特定のジョブに対する移行レポートを取得します。レポートが準備できたかどうかを確認し、レポートを取得するために使用します。

以下のサンプルコードは、特定のタスクに対して移行レポートを生成する方法を示しています。

package sample;

import com.aliyun.hcs_mgw20240626.Client;
import com.aliyun.hcs_mgw20240626.models.*;
import com.google.gson.Gson;

public class Demo {
   /** AccessKey ID および AccessKey Secret をプロジェクトのコード内に保存しないことを強く推奨します。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。*/
   static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
   static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
   /** ご利用の Alibaba Cloud アカウントの ID を入力します。*/
   static String userId = "11470***876***55";

   public static void main(String[] args) {
      // ジョブ ID を入力します。このパラメーターは必須です。
      String version = "b4155550-****-4371-****-9c7337348021";
      // ジョブ実行 ID を入力します。このパラメーターは必須です。
      int runtimeId = 1;
      try {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
         // この例では中国 (北京) リージョンを使用します。
         config.setEndpoint("cn-beijing.mgw.aliyuncs.com");
         config.setAccessKeyId(accessKeyId);
         config.setAccessKeySecret(accessKeySecret);
         // HTTP および HTTPS の両方がサポートされています。プロトコルを指定しない場合、デフォルトで HTTPS が使用されます。
         config.setProtocol("http");
         Client client = new Client(config);
         GetReportRequest request = new GetReportRequest();
         request.version = version;
         request.runtimeId = runtimeId;
         GetReportResponse resp = client.getReport(userId, request);
         System.out.println(new Gson().toJson(resp.body.getReportResponse));
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

正常終了時の応答例

{
  "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."
  }
}