Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Come eseguire le eliminazioni condizionali
È possibile utilizzare le eliminazioni condizionali per valutare se l’oggetto esiste o è immutato prima di eliminarlo. È possibile eseguire le eliminazioni condizionali utilizzando le operazioni API DeleteObject o DeleteObjects nei bucket di directory e per uso generico S3. Per effettuare una richiesta di eliminazione condizionale, è possibile utilizzare l’intestazione HTTP If-Match con il valore di precondizione * per verificare se l’oggetto esiste o l’intestazione If-Match con il valore fornito ETag per verificare se l’oggetto è stato modificato.
Puoi applicare le eliminazioni condizionali a livello di bucket per uso generico utilizzando i bucket S3 o le policy Identity and Access Management (IAM). Per ulteriori informazioni, consulta Applicazione delle eliminazioni condizionali sui bucket Amazon S3.
Nota
Le valutazioni delle eliminazioni condizionali si applicano solo alla versione corrente dell’oggetto.
Argomenti
Come verificare se l’oggetto è stato modificato prima di eliminarlo
Con le eliminazioni condizionali, è possibile proteggere l’applicazione dall’eliminazione accidentale di oggetti. È possibile utilizzare l’intestazione HTTP If-Match con il valore ETag per verificare se un oggetto è stato modificato. Se il valore ETag di un oggetto in un bucket S3 non corrisponde al valore ETag fornito durante l’operazione di eliminazione, l’operazione non riesce. Per eliminare in modo condizionale più oggetti utilizzando l’operazione DeleteObjects, è necessario fornire il valore ETag nell’elemento ETag dell’oggetto nel corpo della richiesta XML. Per ulteriori informazioni, consulta Utilizzo di Content- MD5 and the ETag per verificare gli oggetti caricati.
Nota
Per eseguire eliminazioni condizionali con l’intestazione If-Match con il valore ETag, è necessario disporre delle autorizzazioni s3:DeleteObject e s3:GetObject.
L’intestazione If-Match con il valore ETag viene valutata rispetto agli oggetti esistenti in un bucket. Se non è presente un oggetto con lo stesso nome di chiave ed ETag corrispondente, la richiesta DeleteObject ha esito positivo e restituisce una risposta 204 No content. Se ETag non corrisponde, l’operazione di eliminazione non riesce con una risposta 412 Precondition Failed. In caso di esito positivo, l’API DeleteObjects risponde con un messaggio 200 OK e fornisce lo stato di ogni oggetto nel corpo della risposta della richiesta di eliminazione in batch. Se le condizioni preliminari per una richiesta DeleteObjects non sono soddisfatte, Amazon S3 elimina gli oggetti e restituisce una risposta di errore di Pre-condition non riuscita.
È inoltre possibile ricevere una risposta di errore 409 Conflict nel caso di richieste concorrenti, se una richiesta DELETE o PUT per un oggetto ha esito positivo prima che un’operazione di eliminazione condizionale sia stata completata su quell’oggetto. Si riceverà una risposta 404 Not
Found se una richiesta di cancellazione concorrente di un oggetto riesce prima che un'operazione di scrittura condizionale su quell'oggetto sia completata, poiché la chiave dell'oggetto non esiste più.
È possibile utilizzare l'If-Matchintestazione con il ETag valore per quanto segue: APIs
Il comando di delete-object esempio seguente tenta di eseguire un'eliminazione condizionale con il ETag valore 6805f2cfc46c0f04559748bb039d69al fornito.
aws s3api delete-object --bucketamzn-s3-demo-bucket--key dir-1/my_images.tar.bz2--if-match "6805f2cfc46c0f04559748bb039d69al"
Per ulteriori informazioni, consulta delete-object
Il comando di delete-objects esempio seguente tenta di eseguire un'eliminazione condizionale con il valore fornito ETag . 6805f2cfc46c0f04559748bb039d69al
aws s3api delete-objects --bucketamzn-s3-demo-bucket--delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "6805f2cfc46c0f04559748bb039d69al"}]}'
Per ulteriori informazioni, consulta delete-objects
Per informazioni su AWS CLI, vedere What is the AWS Command Line Interface? nella Guida AWS Command Line Interface per l'utente.
Come verificare se l’oggetto esiste prima di eliminarlo
È possibile utilizzare l’intestazione If-Match con il valore * per verificare se l’oggetto esiste prima di tentare di eliminarlo. Il valore * indica che l’operazione deve procedere solo se l’oggetto esiste, indipendentemente dal fatto che sia stato modificato o meno.
Gli indicatori di eliminazione sono oggetti speciali contenuti nei bucket per uso generico S3 con controllo delle versioni che indicano che un oggetto è stato eliminato. Sono segnaposto che fanno apparire l’oggetto eliminato, conservando le versioni precedenti. Pertanto, quando si utilizza If-Match:* con un’API DeleteObject, l’operazione avrà esito positivo con 204 No Content solo se l’oggetto esiste. Se l’ultima versione dell’oggetto è un indicatore di eliminazione, l’oggetto non esiste e l’API DeleteObject non riesce e restituisce una risposta 412 Precondition Failed. Per ulteriori informazioni sui contrassegni di eliminazione, consulta Utilizzo dei contrassegni di eliminazione.
Per eliminare in modo condizionale più oggetti utilizzando l’operazione DeleteObjects, è possibile fornire * nell’elemento ETag dell’oggetto nel corpo della richiesta XML. Se la precondizione ha esito positivo, l’operazione DeleteObjects risponde con 200 OK e fornisce lo stato di ogni oggetto nel corpo della risposta. Se la precondizione ha esito positivo, la risposta per l’oggetto verrà acquisita nell’elemento <Deleted> del corpo della risposta. Se la precondizione non riesce, la risposta per l’oggetto verrà acquisita nell’elemento <Error> del corpo della risposta. Se l’oggetto non esiste durante la valutazione delle precondizioni, S3 rifiuta la richiesta e restituisce una risposta di errore Not Found.
Nota
Per eseguire eliminazioni condizionali con If-Match:*, è necessario disporre delle autorizzazioni s3:DeleteObject.
È possibile utilizzare l'If-Matchintestazione con il * valore per quanto segue: APIs
Il comando di delete-object esempio seguente tenta di eseguire un'eliminazione condizionale per un oggetto il cui nome chiave ha un valore my_images.tar.bz2* che rappresenta qualsiasi ETag.
aws s3api delete-object --bucketamzn-s3-demo-bucket--key dir-1/my_images.tar.bz2--if-match "*"
Per ulteriori informazioni, consulta delete-object
Il comando di delete-objects esempio seguente tenta di eseguire un'eliminazione condizionale per un oggetto il cui nome chiave ha un valore my_images.tar.bz2* che rappresenta qualsiasi. ETag
aws s3api delete-objects --bucketamzn-s3-demo-bucket--delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "*"}]}'
Per ulteriori informazioni, consulta delete-objects
Per informazioni su AWS CLI, vedere What is the AWS Command Line Interface? nella Guida AWS Command Line Interface per l'utente.