batchReplaceClusterNodes method
Replaces specific nodes within a SageMaker HyperPod cluster with new
hardware. BatchReplaceClusterNodes terminates the specified
instances and provisions new replacement instances with the same
configuration but fresh hardware. The Amazon Machine Image (AMI) and
instance configuration remain the same.
This operation is useful for recovering from hardware failures or persistent issues that cannot be resolved through a reboot.
- Data Loss Warning: Replacing nodes destroys all instance volumes, including both root and secondary volumes. All data stored on these volumes will be permanently lost and cannot be recovered.
- To safeguard your work, back up your data to Amazon S3 or an FSx for Lustre file system before invoking the API on a worker node group. This will help prevent any potential data loss from the instance root volume. For more information about backup, see Use the backup script provided by SageMaker HyperPod.
- If you want to invoke this API on an existing cluster, you'll first need to patch the cluster by running the UpdateClusterSoftware API. For more information about patching a cluster, see Update the SageMaker HyperPod platform software of a cluster.
- You can replace up to 25 nodes in a single request.
May throw ResourceNotFound.
Parameter clusterName :
The name or Amazon Resource Name (ARN) of the SageMaker HyperPod cluster
containing the nodes to replace.
Parameter nodeIds :
A list of EC2 instance IDs to replace with new hardware. You can specify
between 1 and 25 instance IDs.
-
Either
NodeIdsorNodeLogicalIdsmust be provided (or both), but at least one is required. -
Each instance ID must follow the pattern
i-followed by 17 hexadecimal characters (for example,i-0123456789abcdef0). - For SageMaker HyperPod clusters using the Slurm workload manager, you cannot replace instances that are configured as Slurm controller nodes.
Parameter nodeLogicalIds :
A list of logical node IDs to replace with new hardware. You can specify
between 1 and 25 logical node IDs.
The NodeLogicalId is a unique identifier that persists
throughout the node's lifecycle and can be used to track nodes that are
still being provisioned and don't yet have an EC2 instance ID assigned.
- Replace operations destroy all instance volumes (root and secondary). Ensure you have backed up any important data before proceeding.
-
This parameter is only supported for clusters using
Continuousas theNodeProvisioningMode. For clusters using the default provisioning mode, useNodeIdsinstead. -
Either
NodeIdsorNodeLogicalIdsmust be provided (or both), but at least one is required.
Implementation
Future<BatchReplaceClusterNodesResponse> batchReplaceClusterNodes({
required String clusterName,
List<String>? nodeIds,
List<String>? nodeLogicalIds,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'SageMaker.BatchReplaceClusterNodes'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'ClusterName': clusterName,
if (nodeIds != null) 'NodeIds': nodeIds,
if (nodeLogicalIds != null) 'NodeLogicalIds': nodeLogicalIds,
},
);
return BatchReplaceClusterNodesResponse.fromJson(jsonResponse.body);
}