Copia di oggetti da o verso un bucket di directory - Amazon Simple Storage Service

Copia di oggetti da o verso un bucket di directory

L'operazione di copia crea una copia di un oggetto già memorizzato in Amazon S3. Puoi copiare oggetti tra bucket di directory e bucket per uso generico. È inoltre possibile copiare gli oggetti all'interno di un bucket e tra bucket dello stesso tipo, ad esempio da un bucket directory a un altro.

Nota

La copia di oggetti tra diversi Regioni AWS non è supportata se il bucket di origine o di destinazione si trova in una delle Zone locali AWS. I bucket di origine e di destinazione devono avere lo stesso Regione AWS padre. I bucket di origine e di destinazione possono essere di tipo diverso (zona di disponibilità o zona locale).

È possibile creare una copia di un oggetto fino a 5 GB in una singola operazione atomica. Tuttavia, per copiare un oggetto di dimensioni superiori a 5 GB, è necessario utilizzare le operazioni API di caricamento multiparte. Per ulteriori informazioni, consulta Utilizzo dei caricamenti multiparte con i bucket di directory.

Autorizzazioni

Per copiare oggetti, è necessario disporre delle seguenti autorizzazioni:

  • Per copiare gli oggetti da un bucket di directory a un altro bucket di directory, è necessario disporre dell'autorizzazione s3express:CreateSession.

  • Per copiare gli oggetti dai bucket di directory ai bucket per uso generico, è necessario disporre dell'autorizzazione s3express:CreateSession e dell'autorizzazione s3:PutObject per scrivere la copia dell'oggetto nel bucket di destinazione.

  • Per copiare oggetti da bucket per uso generico a bucket di directory, è necessario disporre dei permessi s3express:CreateSession e s3:GetObject per leggere l'oggetto di origine che si sta copiando.

    Per ulteriori informazioni, consulta CopyObject nel Riferimento API di Amazon Simple Storage Service.

Crittografia

Amazon S3 esegue automaticamente la crittografa di tutti i nuovi oggetti caricati in un bucket S3. La configurazione di crittografia predefinita di un bucket S3 è sempre abilitata ed è impostata come minimo sulla crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3).

Per i bucket di directory, sono supportati SSE-S3 e la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS). Quando il bucket di destinazione è un bucket di directory, si consiglia di utilizzare la configurazione di crittografia desiderata come crittografia predefinita per il bucket di destinazione e di non sostituire la crittografia predefinita del bucket. I nuovi oggetti vengono quindi crittografati automaticamente con le impostazioni di crittografia desiderate. Inoltre, le chiavi dei bucket S3 non sono supportate quando si copiano oggetti con crittografia SSE-KMS da bucket per uso generico a bucket di directory, da bucket di directory a bucket per uso generico o tra bucket di directory, tramite CopyObject. In questo caso, Amazon S3 effettua una chiamata a AWS KMS ogni volta che viene effettuata una richiesta di copia per un oggetto crittografato da KMS. Per ulteriori informazioni sui comportamenti di sovrascrittura della crittografia nei bucket di directory, consulta Specifica della crittografia lato server con AWS KMS per il caricamento di nuovi oggetti.

Per i bucket per uso generico, è possibile utilizzare SSE-S3 (l'impostazione predefinita), la crittografia lato server con chiavi AWS Key Management Service (AWS KMS) (SSE-KMS), la crittografia lato server dual-layer con chiavi AWS KMS (DSSE-KMS) o la crittografia lato server con chiavi fornite dal cliente (SSE-C).

Se si effettua una richiesta di copia che specifica di utilizzare DSSE-KMS o SSE-C per un bucket di directory (sia quello di origine che quello di destinazione), la risposta restituisce un errore.

Tag

I bucket delle directory non supportano i tag. Se si copia un oggetto con tag da un bucket per uso generico a un bucket di directory, si riceve una risposta HTTP 501 (Not Implemented). Per ulteriori informazioni, consulta CopyObject nel Riferimento API di Amazon Simple Storage Service.

ETag

I tag entità (ETag) per S3 Express One Zone sono stringhe alfanumeriche casuali e non sono checksum MD5. Per garantire l'integrità degli oggetti, utilizza checksum aggiuntivi.

Checksum aggiuntivi

S3 Express One Zone offre la possibilità di scegli l'algoritmo di checksum utilizzato per convalidare i dati durante il caricamento o il download. È possibile selezionare uno dei seguenti algoritmi di controllo dell'integrità dei dati Secure Hash Algorithms (SHA) o Cyclic Redundancy Check (CRC): CRC32, CRC32C, SHA-1 e SHA-256. I checksum basati su MD5 non sono supportati con la classe di storage S3 Express One Zone.

Per ulteriori informazioni, consulta Best practice per il checksum S3 aggiuntivo.

Caratteristiche supportate

Per ulteriori informazioni sulle caratteristiche di Amazon S3 supportate da S3 Express One Zone, consulta Differenze per i bucket di directory.

Nota

Le restrizioni e le limitazioni quando si copia un oggetto in un bucket di directory con la console sono le seguenti:

  • L'azione Copy si applica a tutti gli oggetti all'interno delle cartelle (prefissi) specificate. Gli oggetti aggiunti a queste cartelle mentre l'azione è in corso potrebbero essere interessati.

  • Gli oggetti crittografati con chiavi di crittografia fornite dal cliente (SSE-C) non possono essere copiati utilizzando la console S3. Per copiare oggetti crittografati con SSE-C, utilizza AWS CLI, l'SDK AWS o la REST API di Amazon S3.

  • Gli oggetti copiati non manterranno le impostazioni di Object Lock dagli oggetti originali.

  • Se il bucket da cui si stanno copiando gli oggetti utilizza l'impostazione del proprietario del bucket per la proprietà degli oggetti S3, le ACL degli oggetti non verranno copiate nella destinazione specificata.

  • Se desideri copiare gli oggetti in un bucket che utilizza l'impostazione bucket owner enforced per S3 Object Ownership, assicurati che anche il bucket di origine utilizzi l'impostazione bucket owner enforced, oppure rimuovi eventuali concessioni ACL degli oggetti ad altri account e gruppi AWS.

  • Gli oggetti copiati da un bucket per uso generico a un bucket di directory non manterranno i tag degli oggetti, le ACL o i valori ETag. I valori di checksum possono essere copiati, ma non sono equivalenti a un ETag. Il valore del checksum può cambiare rispetto a quando è stato aggiunto.

  • Tutti gli oggetti copiati in un bucket della directory saranno con il proprietario del bucket impostato per la proprietà degli oggetti S3.

Per copiare un oggetto da un bucket per uso generico o da un bucket di directory a un bucket di directory
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel riquadro di navigazione sinistro, scegli Bucket.

  3. Scegli il bucket da cui copiare gli oggetti:

    • Per copiare da un bucket per uso generico, scegli la scheda Bucket per uso generico.

    • Per copiare da un bucket di directory, scegli la scheda Bucket di directory.

  4. Scegli il bucket per uso generico o il bucket della directory che contiene gli oggetti da copiare.

  5. Scegli la scheda Oggetti. Nella pagina Oggetti, seleziona la casella di controllo a sinistra dei nomi degli oggetti da copiare.

  6. Nel menu Azioni, scegli Copia.

    Viene visualizzata la pagina Copia.

  7. In Destinazione, scegli Directory bucket per il tipo di destinazione. Per specificare il percorso di destinazione, scegli Sfoglia S3, navigare fino alla destinazione e scegli il pulsante di opzione a sinistra della destinazione. Seleziona Scegli destinazione nell'angolo in basso a destra.

    In alternativa, inserisci il percorso di destinazione.

  8. In Impostazioni di copia aggiuntive, scegli se eseguire Copia impostazioni dell'origine, Non specificare le impostazioni o Specifica le impostazioni. Copia impostazioni dell'origine è l'opzione predefinita. Se desideri copiare solo l'oggetto senza gli attributi delle impostazioni dell'origine, scegli Non specificare le impostazioni. Scegli Specifica impostazioni per specificare le impostazioni di crittografia lato server, checksum e metadati.

  9. Scegli Copia nell'angolo in basso a destra. Amazon S3 copia gli oggetti nella destinazione.

Nota

Le restrizioni e le limitazioni quando si copia un oggetto in un bucket per uso generico con la console sono le seguenti:

  • L'azione Copy si applica a tutti gli oggetti all'interno delle cartelle (prefissi) specificate. Gli oggetti aggiunti a queste cartelle mentre l'azione è in corso potrebbero essere interessati.

  • Gli oggetti crittografati con chiavi di crittografia fornite dal cliente (SSE-C) non possono essere copiati utilizzando la console S3. Per copiare oggetti crittografati con SSE-C, utilizza AWS CLI, l'SDK AWS o la REST API di Amazon S3.

  • Gli oggetti copiati non manterranno le impostazioni di Object Lock dagli oggetti originali.

  • Se il bucket da cui si stanno copiando gli oggetti utilizza l'impostazione del proprietario del bucket per la proprietà degli oggetti S3, le ACL degli oggetti non verranno copiate nella destinazione specificata.

  • Se desideri copiare gli oggetti in un bucket che utilizza l'impostazione bucket owner enforced per S3 Object Ownership, assicurati che anche il bucket di origine utilizzi l'impostazione bucket owner enforced, oppure rimuovi eventuali concessioni ACL degli oggetti ad altri account e gruppi AWS.

Per copiare un oggetto da un bucket di directory a un bucket generico
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel riquadro di navigazione sinistro, scegli Bucket.

  3. Scegli la scheda Bucket di directory.

  4. Scegli il bucket della directory che contiene gli oggetti da copiare.

  5. Scegli la scheda Oggetti. Nella pagina Oggetti, seleziona la casella di controllo a sinistra dei nomi degli oggetti da copiare.

  6. Nel menu Azioni, scegli Copia.

  7. Alla voce Destinazione, scegli il Bucket per uso generico per il tipo di destinazione. Per specificare il percorso di destinazione, scegli Sfoglia S3, naviga fino alla destinazione e scegli il pulsante di opzione a sinistra della destinazione. Seleziona Scegli destinazione nell'angolo in basso a destra.

    In alternativa, inserisci il percorso di destinazione.

  8. In Impostazioni di copia aggiuntive, scegli se eseguire Copia impostazioni dell'origine, Non specificare le impostazioni o Specifica le impostazioni. Copia impostazioni dell'origine è l'opzione predefinita. Se desideri copiare solo l'oggetto senza gli attributi delle impostazioni dell'origine, scegli Non specificare le impostazioni. Scegli Specifica le impostazioni per specificare le impostazioni per la classe di storage, le ACL, i tag degli oggetti, i metadati, la crittografia lato server e i checksum aggiuntivi.

  9. Scegli Copia nell'angolo in basso a destra. Amazon S3 copia gli oggetti nella destinazione.

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Il seguente esempio di comando copy-object mostra come si può usare AWS CLI per copiare un oggetto da un bucket a un altro bucket. È possibile copiare gli oggetti tra i tipi di bucket. Per eseguire questo comando, sostituisci i segnaposto inseriti dall'utente con le tue informazioni.

aws s3api copy-object --copy-source SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

Per ulteriori informazioni, consulta copy-object nel Riferimento ai comandi AWS CLI.