createDiskSnapshot method
Creates a snapshot of a block storage disk. You can use snapshots for backups, to make copies of disks, and to save data before shutting down a Lightsail instance.
You can take a snapshot of an attached disk that is in use; however, snapshots only capture data that has been written to your disk at the time the snapshot command is issued. This may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the disk long enough to take a snapshot, your snapshot should be complete. Nevertheless, if you cannot pause all file writes to the disk, you should unmount the disk from within the Lightsail instance, issue the create disk snapshot command, and then remount the disk to ensure a consistent and complete snapshot. You may remount and use your disk while the snapshot status is pending.
You can also use this operation to create a snapshot of an instance's
system volume. You might want to do this, for example, to recover data
from the system volume of a botched instance or to create a backup of the
system volume like you would for a block storage disk. To create a
snapshot of a system volume, just define the instance name
parameter when issuing the snapshot command, and a snapshot of the defined
instance's system volume will be created. After the snapshot is available,
you can create a block storage disk from the snapshot and attach it to a
running instance to access the data on the disk.
The create disk snapshot
operation supports tag-based access
control via request tags. For more information, see the Lightsail
Dev Guide.
May throw ServiceException. May throw InvalidInputException. May throw NotFoundException. May throw OperationFailureException. May throw AccessDeniedException. May throw AccountSetupInProgressException. May throw UnauthenticatedException.
Parameter diskSnapshotName
:
The name of the destination disk snapshot (e.g.,
my-disk-snapshot
) based on the source disk.
Parameter diskName
:
The unique name of the source disk (e.g., Disk-Virginia-1
).
Parameter instanceName
:
The unique name of the source instance (e.g.,
Amazon_Linux-512MB-Virginia-1
). When this is defined, a
snapshot of the instance's system volume is created.
Parameter tags
:
The tag keys and optional values to add to the resource during create.
Use the TagResource
action to tag a resource after it's
created.
Implementation
Future<CreateDiskSnapshotResult> createDiskSnapshot({
required String diskSnapshotName,
String? diskName,
String? instanceName,
List<Tag>? tags,
}) async {
ArgumentError.checkNotNull(diskSnapshotName, 'diskSnapshotName');
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'Lightsail_20161128.CreateDiskSnapshot'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'diskSnapshotName': diskSnapshotName,
if (diskName != null) 'diskName': diskName,
if (instanceName != null) 'instanceName': instanceName,
if (tags != null) 'tags': tags,
},
);
return CreateDiskSnapshotResult.fromJson(jsonResponse.body);
}