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 eliminazioni condizionali
È possibile utilizzare le eliminazioni condizionali per valutare se l'oggetto esiste o è immutato prima di eliminarlo. Puoi eseguire eliminazioni condizionali utilizzando le operazioni DeleteObject o DeleteObjects API nei bucket di directory e di uso generico di S3. Per iniziare, quando si effettua una richiesta di eliminazione condizionale, è possibile utilizzare l'HTTP If-Matchintestazione con il valore di precondizione * per verificare se l'oggetto esiste o l'If-Matchintestazione con il valore fornito ETag per verificare se l'oggetto è stato modificato.
Puoi applicare le eliminazioni condizionali a livello di bucket per scopi generici utilizzando il bucket S3 o le policy di Identity and Access Management (IAM). Per ulteriori informazioni, consulta Applica le eliminazioni condizionali sui bucket Amazon S3.
Nota
Le valutazioni di eliminazione condizionale 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'HTTP If-Matchintestazione con il ETag valore per verificare se un oggetto è stato modificato. Se il ETag valore di un oggetto in un bucket S3 non corrisponde a ETag quello fornito durante l'operazione di eliminazione, l'operazione fallisce. Per eliminare in modo condizionale più oggetti utilizzando l'DeleteObjectsoperazione, è necessario fornire il ETag valore nell'ETagelemento 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'If-Matchintestazione con il ETag valore, è necessario disporre delle autorizzazioni and. s3:DeleteObject s3:GetObject
L'If-Matchintestazione con il ETag valore viene valutata in base agli oggetti esistenti in un bucket. Se esiste un oggetto esistente con lo stesso nome di chiave e la stessa corrispondenzaETag, la DeleteObject richiesta ha esito positivo e restituisce una risposta. 204 No content Se ETag non corrisponde, l'operazione di eliminazione ha esito negativo e viene generata una 412 Precondition Failed risposta. In caso di successo, l'DeleteObjectsAPI 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 DeleteObjects richiesta non sono soddisfatte, Amazon S3 elimina gli oggetti e restituisce Pre-condition una risposta di errore non riuscita.
Puoi anche ricevere una risposta di 409 Conflict errore in caso di richieste simultanee se una PUT richiesta DELETE or a un oggetto ha esito positivo prima del completamento di un'operazione di eliminazione condizionale 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 valore per quanto segueETag: 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 la sezione 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 la sezione 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'If-Matchintestazione 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.
I marker di eliminazione sono oggetti speciali contenuti nei bucket generici S3 con versione aggiornata che indicano che un oggetto è stato eliminato. Sono segnaposto che fanno apparire l'oggetto eliminato preservando le versioni precedenti. Pertanto, quando si utilizza If-Match:* con un'DeleteObjectAPI, l'operazione avrà esito positivo solo con a 204 No Content se l'oggetto esiste. Se l'ultima versione dell'oggetto è un marker di eliminazione, l'oggetto non esiste e l'DeleteObjectAPI avrà esito negativo e restituirà una 412 Precondition Failed risposta. Per ulteriori informazioni sui contrassegni di eliminazione, consulta Utilizzo dei contrassegni di eliminazione.
Per eliminare in modo condizionale più oggetti utilizzando l'DeleteObjectsoperazione, è possibile fornire l'ETagelemento * in nell'oggetto nel corpo della richiesta XML. Se la precondizione ha esito positivo, l'DeleteObjectsoperazione risponde con a 200 OK e fornisce lo stato di ogni oggetto nel corpo della risposta. Se la precondizione ha esito positivo, la risposta per quell'oggetto verrà acquisita nell'<Deleted>elemento del corpo della risposta. Se la precondizione fallisce, la risposta per quell'oggetto verrà catturata nell'<Error>elemento del corpo della risposta. Se l'oggetto non esiste durante la valutazione di nessuna delle precondizioni, S3 rifiuta la richiesta e restituisce una risposta di errore. Not Found
Nota
Per eseguire eliminazioni condizionali conIf-Match:*, devi 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 la sezione 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 la sezione delete-objects
Per informazioni su AWS CLI, vedere What is the AWS Command Line Interface? nella Guida AWS Command Line Interface per l'utente.