attachVolume method

Future<AttachVolumeOutput> attachVolume({
  1. required String gatewayARN,
  2. required String networkInterfaceId,
  3. required String volumeARN,
  4. String? diskId,
  5. String? targetName,
})

Connects a volume to an iSCSI connection and then attaches the volume to the specified gateway. Detaching and attaching a volume enables you to recover your data from one gateway to a different gateway without creating a snapshot. It also makes it easier to move your volumes from an on-premises gateway to a gateway hosted on an Amazon EC2 instance.

May throw InvalidGatewayRequestException. May throw InternalServerError.

Parameter gatewayARN : The Amazon Resource Name (ARN) of the gateway that you want to attach the volume to.

Parameter networkInterfaceId : The network interface of the gateway on which to expose the iSCSI target. Only IPv4 addresses are accepted. Use DescribeGatewayInformation to get a list of the network interfaces available on a gateway.

Valid Values: A valid IP address.

Parameter volumeARN : The Amazon Resource Name (ARN) of the volume to attach to the specified gateway.

Parameter diskId : The unique device ID or other distinguishing data that identifies the local disk used to create the volume. This value is only required when you are attaching a stored volume.

Parameter targetName : The name of the iSCSI target used by an initiator to connect to a volume and used as a suffix for the target ARN. For example, specifying TargetName as myvolume results in the target ARN of arn:aws:storagegateway:us-east-2:111122223333:gateway/sgw-12A3456B/target/iqn.1997-05.com.amazon:myvolume. The target name must be unique across all volumes on a gateway.

If you don't specify a value, Storage Gateway uses the value that was previously used for this volume as the new target name.

Implementation

Future<AttachVolumeOutput> attachVolume({
  required String gatewayARN,
  required String networkInterfaceId,
  required String volumeARN,
  String? diskId,
  String? targetName,
}) async {
  ArgumentError.checkNotNull(gatewayARN, 'gatewayARN');
  _s.validateStringLength(
    'gatewayARN',
    gatewayARN,
    50,
    500,
    isRequired: true,
  );
  ArgumentError.checkNotNull(networkInterfaceId, 'networkInterfaceId');
  ArgumentError.checkNotNull(volumeARN, 'volumeARN');
  _s.validateStringLength(
    'volumeARN',
    volumeARN,
    50,
    500,
    isRequired: true,
  );
  _s.validateStringLength(
    'diskId',
    diskId,
    1,
    300,
  );
  _s.validateStringLength(
    'targetName',
    targetName,
    1,
    200,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'StorageGateway_20130630.AttachVolume'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'GatewayARN': gatewayARN,
      'NetworkInterfaceId': networkInterfaceId,
      'VolumeARN': volumeARN,
      if (diskId != null) 'DiskId': diskId,
      if (targetName != null) 'TargetName': targetName,
    },
  );

  return AttachVolumeOutput.fromJson(jsonResponse.body);
}