putResourceAttributes method

Future<void> putResourceAttributes({
  1. required String migrationTaskName,
  2. required String progressUpdateStream,
  3. required List<ResourceAttribute> resourceAttributeList,
  4. bool? dryRun,
})

Provides identifying details of the resource being migrated so that it can be associated in the Application Discovery Service repository. This association occurs asynchronously after PutResourceAttributes returns.

  • Keep in mind that subsequent calls to PutResourceAttributes will override previously stored attributes. For example, if it is first called with a MAC address, but later, it is desired to add an IP address, it will then be required to call it with both the IP and MAC addresses to prevent overriding the MAC address.
  • Note the instructions regarding the special use case of the ResourceAttributeList parameter when specifying any "VM" related value.

May throw AccessDeniedException. May throw ThrottlingException. May throw InternalServerError. May throw ServiceUnavailableException. May throw DryRunOperation. May throw UnauthorizedOperation. May throw InvalidInputException. May throw ResourceNotFoundException. May throw HomeRegionNotSetException.

Parameter migrationTaskName : Unique identifier that references the migration task. Do not store personal data in this field.

Parameter progressUpdateStream : The name of the ProgressUpdateStream.

Parameter resourceAttributeList : Information about the resource that is being migrated. This data will be used to map the task to a resource in the Application Discovery Service repository.

  • If any "VM" related value is set for a ResourceAttribute object, it is required that VM_MANAGER_ID, as a minimum, is always set. If VM_MANAGER_ID is not set, then all "VM" fields will be discarded and "VM" fields will not be used for matching the migration task to a server in Application Discovery Service repository. See the Example section below for a use case of specifying "VM" related values.
  • If a server you are trying to match has multiple IP or MAC addresses, you should provide as many as you know in separate type/value pairs passed to the ResourceAttributeList parameter to maximize the chances of matching.

Parameter dryRun : Optional boolean flag to indicate whether any effect should take place. Used to test if the caller has permission to make the call.

Implementation

Future<void> putResourceAttributes({
  required String migrationTaskName,
  required String progressUpdateStream,
  required List<ResourceAttribute> resourceAttributeList,
  bool? dryRun,
}) async {
  ArgumentError.checkNotNull(migrationTaskName, 'migrationTaskName');
  _s.validateStringLength(
    'migrationTaskName',
    migrationTaskName,
    1,
    256,
    isRequired: true,
  );
  ArgumentError.checkNotNull(progressUpdateStream, 'progressUpdateStream');
  _s.validateStringLength(
    'progressUpdateStream',
    progressUpdateStream,
    1,
    50,
    isRequired: true,
  );
  ArgumentError.checkNotNull(resourceAttributeList, 'resourceAttributeList');
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSMigrationHub.PutResourceAttributes'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'MigrationTaskName': migrationTaskName,
      'ProgressUpdateStream': progressUpdateStream,
      'ResourceAttributeList': resourceAttributeList,
      if (dryRun != null) 'DryRun': dryRun,
    },
  );
}