pub async fn move_object(
client: &Client,
src_bucket: &str,
src_key: &str,
dest_bucket: &str,
dest_key: &str,
options: &CopyOptions,
) -> Result<MoveResult, AppError>Expand description
Move src_bucket/src_key to dest_bucket/dest_key.
Implemented as copy then delete. If the copy succeeds but the delete
fails, returns AppError::Internal with a notice that the copy already
landed and cleanup of the source is needed.
§Atomicity
S3 does not provide native atomic rename. The copy + delete sequence is atomic from the caller’s perspective only in the happy path: the source is visible until the delete completes. Callers that require strict isolation must hold a lock on the source prefix.