createTask method

Future<CreateTaskResponse> createTask({
  1. required String destinationLocationArn,
  2. required String sourceLocationArn,
  3. String? cloudWatchLogGroupArn,
  4. List<FilterRule>? excludes,
  5. List<FilterRule>? includes,
  6. ManifestConfig? manifestConfig,
  7. String? name,
  8. Options? options,
  9. TaskSchedule? schedule,
  10. List<TagListEntry>? tags,
  11. TaskMode? taskMode,
  12. TaskReportConfig? taskReportConfig,
})

Configures a task, which defines where and how DataSync transfers your data.

A task includes a source location, destination location, and transfer options (such as bandwidth limits, scheduling, and more).

May throw InternalException. May throw InvalidRequestException.

Parameter destinationLocationArn : Specifies the ARN of your transfer's destination location.

Parameter sourceLocationArn : Specifies the ARN of your transfer's source location.

Parameter cloudWatchLogGroupArn : Specifies the Amazon Resource Name (ARN) of an Amazon CloudWatch log group for monitoring your task.

For Enhanced mode tasks, you don't need to specify anything. DataSync automatically sends logs to a CloudWatch log group named /aws/datasync.

Parameter excludes : Specifies exclude filters that define the files, objects, and folders in your source location that you don't want DataSync to transfer. For more information and examples, see Specifying what DataSync transfers by using filters.

Parameter includes : Specifies include filters that define the files, objects, and folders in your source location that you want DataSync to transfer. For more information and examples, see Specifying what DataSync transfers by using filters.

Parameter manifestConfig : Configures a manifest, which is a list of files or objects that you want DataSync to transfer. For more information and configuration examples, see Specifying what DataSync transfers by using a manifest.

When using this parameter, your caller identity (the role that you're using DataSync with) must have the iam:PassRole permission. The AWSDataSyncFullAccess policy includes this permission.

Parameter name : Specifies the name of your task.

Parameter options : Specifies your task's settings, such as preserving file metadata, verifying data integrity, among other options.

Parameter schedule : Specifies a schedule for when you want your task to run. For more information, see Scheduling your task.

Parameter tags : Specifies the tags that you want to apply to your task.

Tags are key-value pairs that help you manage, filter, and search for your DataSync resources.

Parameter taskMode : Specifies one of the following task modes for your data transfer:

  • ENHANCED - Transfer virtually unlimited numbers of objects with higher performance than Basic mode. Enhanced mode tasks optimize the data transfer process by listing, preparing, transferring, and verifying data in parallel. Enhanced mode is currently available for transfers between Amazon S3 locations, transfers between Azure Blob and Amazon S3 without an agent, and transfers between other clouds and Amazon S3 without an agent.
  • BASIC (default) - Transfer files or objects between Amazon Web Services storage and all other supported DataSync locations. Basic mode tasks are subject to quotas on the number of files, objects, and directories in a dataset. Basic mode sequentially prepares, transfers, and verifies data, making it slower than Enhanced mode for most workloads.
For more information, see Understanding task mode differences.

Parameter taskReportConfig : Specifies how you want to configure a task report, which provides detailed information about your DataSync transfer. For more information, see Monitoring your DataSync transfers with task reports.

When using this parameter, your caller identity (the role that you're using DataSync with) must have the iam:PassRole permission. The AWSDataSyncFullAccess policy includes this permission.

Implementation

Future<CreateTaskResponse> createTask({
  required String destinationLocationArn,
  required String sourceLocationArn,
  String? cloudWatchLogGroupArn,
  List<FilterRule>? excludes,
  List<FilterRule>? includes,
  ManifestConfig? manifestConfig,
  String? name,
  Options? options,
  TaskSchedule? schedule,
  List<TagListEntry>? tags,
  TaskMode? taskMode,
  TaskReportConfig? taskReportConfig,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'FmrsService.CreateTask'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'DestinationLocationArn': destinationLocationArn,
      'SourceLocationArn': sourceLocationArn,
      if (cloudWatchLogGroupArn != null)
        'CloudWatchLogGroupArn': cloudWatchLogGroupArn,
      if (excludes != null) 'Excludes': excludes,
      if (includes != null) 'Includes': includes,
      if (manifestConfig != null) 'ManifestConfig': manifestConfig,
      if (name != null) 'Name': name,
      if (options != null) 'Options': options,
      if (schedule != null) 'Schedule': schedule,
      if (tags != null) 'Tags': tags,
      if (taskMode != null) 'TaskMode': taskMode.value,
      if (taskReportConfig != null) 'TaskReportConfig': taskReportConfig,
    },
  );

  return CreateTaskResponse.fromJson(jsonResponse.body);
}