attachVolume method
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);
}