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à.
Tutorial: carica un oggetto tramite caricamento in più parti e verifica l'integrità dei dati
Il caricamento in più parti consente di caricare un singolo oggetto come un insieme di parti. Ciascuna parte è una parte contigua dei dati dell'oggetto. È possibile caricare queste parti dell'oggetto in modo indipendente e in qualsiasi ordine. Se la trasmissione di una parte non riesce, è possibile ritrasmettere tale parte senza influire sulle altre. Una volta caricate tutte le parti dell'oggetto, Amazon S3 le assembla e crea l'oggetto. In generale, quando la dimensione dell'oggetto raggiunge i 100 MB, si consiglia di valutare la possibilità di eseguire caricamenti in più parti anziché caricare l'oggetto in una singola operazione. Per ulteriori informazioni sui caricamenti in più parti, consulta. Caricamento e copia di oggetti utilizzando il caricamento in più parti Per i limiti relativi ai caricamenti in più parti, consulta. Limiti del caricamenti in più parti di Amazon S3
Puoi utilizzare i checksum per verificare che le risorse non vengano alterate quando vengono copiate. L'esecuzione di un checksum consiste nell'utilizzare un algoritmo per iterare in sequenza su ogni byte di un file. Amazon S3 offre diverse opzioni di checksum per verificare l'integrità dei dati. Ti consigliamo di eseguire questi controlli di integrità come best practice di durabilità e per confermare che ogni byte venga trasferito senza alterazioni. Amazon S3 supporta anche i seguenti algoritmi: SHA -1, SHA -256 e. CRC32 CRC32C Amazon S3 utilizza uno o più di questi algoritmi per calcolare un valore di checksum aggiuntivo e archiviarlo come parte dei metadati dell'oggetto. Per ulteriori informazioni sui checksum, consulta Verifica dell'integrità degli oggetti.
Obiettivo
In questo tutorial, imparerai come caricare un oggetto su Amazon S3 utilizzando un caricamento in più parti e un checksum SHA -256 aggiuntivo tramite l'interfaccia a riga di AWS comando ().AWS CLI Imparerai anche come verificare l'integrità dei dati dell'oggetto calcolando l'MD5hash e il checksum SHA -256 dell'oggetto caricato.
Argomenti
- Prerequisiti
- Passaggio 1: creare un file di grandi dimensioni
- Passaggio 2: suddividere il file in più file
- Fase 3: Creare il caricamento multiparte con un checksum aggiuntivo
- Fase 4: Caricate le parti del caricamento in più parti
- Passaggio 5: Elenca tutte le parti del caricamento in più parti
- Fase 6: Completa il caricamento multiparte
- Passaggio 7: Conferma che l'oggetto sia caricato nel tuo bucket
- Fase 8: Verificare l'integrità dell'oggetto con un MD5 checksum
- Fase 9: Verifica l'integrità dell'oggetto con un checksum aggiuntivo
- Fase 10: eliminare le risorse
Prerequisiti
-
Prima di iniziare questo tutorial, assicurati di avere accesso a un bucket Amazon S3 su cui caricare. Per ulteriori informazioni, consulta Creazione di un bucket.
-
È necessario averlo AWS CLI installato e configurato. Se non lo hai AWS CLI installato, consulta Installare o aggiornare alla versione più recente AWS CLI nella Guida per l'AWS Command Line Interface utente.
-
In alternativa, puoi eseguire AWS CLI comandi dalla console utilizzando AWS CloudShell. AWS CloudShell è una shell preautenticata basata su browser che è possibile avviare direttamente da. AWS Management ConsolePer ulteriori informazioni, consulta Cos'è? CloudShell e Guida introduttiva AWS CloudShell nella Guida AWS CloudShell per l'utente.
Passaggio 1: creare un file di grandi dimensioni
Se hai già un file pronto per il caricamento, puoi utilizzarlo per questo tutorial. Altrimenti, crea un file da 15 MB utilizzando i seguenti passaggi. Per i limiti relativi ai caricamenti in più parti, consulta. Limiti del caricamenti in più parti di Amazon S3
Per creare un file di grandi dimensioni
Utilizza uno dei seguenti comandi per creare il file, a seconda del sistema operativo in uso.
Linux o macOS:
Per creare un file da 15 MB, apri il terminale locale ed esegui il seguente comando:
dd if=/dev/urandom of=census-data.bin bs=1M count=15
Questo comando crea un file denominato census-data.bin
riempito con byte casuali, con una dimensione di 15 MB.
Windows
Per creare un file da 15 MB, apri il terminale locale ed esegui il seguente comando:
fsutil file createnew census-data.bin 15728640
Questo comando crea un file denominato census-data.bin
con una dimensione di 15 MB di dati arbitrari (15728640 byte).
Passaggio 2: suddividere il file in più file
Per eseguire il caricamento in più parti, devi dividere il file di grandi dimensioni in parti più piccole. Puoi quindi caricare le parti più piccole utilizzando il processo di caricamento in più parti. Questo passaggio dimostra come suddividere il file di grandi dimensioni creato nel passaggio 1 in parti più piccole. L'esempio seguente utilizza un file da 15 MB denominatocensus-data.bin
.
Per dividere un file di grandi dimensioni in parti
Linux o macOS:
Per dividere il file di grandi dimensioni in parti da 5 MB, usa il split
comando. Apri il tuo terminale ed esegui quanto segue:
split -b 5M -d census-data.bin census-part
Questo comando census-data.bin
si divide in parti da 5 MB denominatecensus-part**
, dove **
è un suffisso numerico a partire da. 00
Windows
Per dividere il file di grandi dimensioni, usa. PowerShell Apri Powershell
$inputFile = "census-data.bin" $outputFilePrefix = "census-part" $chunkSize = 5MB $fs = [System.IO.File]::OpenRead($inputFile) $buffer = New-Object byte[] $chunkSize $fileNumber = 0 while ($fs.Position -lt $fs.Length) { $bytesRead = $fs.Read($buffer, 0, $chunkSize) $outputFile = "{0}{1:D2}" -f $outputFilePrefix, $fileNumber $fileStream = [System.IO.File]::Create($outputFile) $fileStream.Write($buffer, 0, $bytesRead) $fileStream.Close() $fileNumber++ } $fs.Close()
Questo PowerShell script legge il file di grandi dimensioni in blocchi di 5 MB e scrive ogni blocco in un nuovo file con un suffisso numerico.
Dopo aver eseguito il comando appropriato, dovresti vedere le parti nella directory in cui hai eseguito il comando. Ogni parte avrà un suffisso corrispondente al relativo numero di parte, ad esempio:
census-part00 census-part01 census-part02
Fase 3: Creare il caricamento multiparte con un checksum aggiuntivo
Per iniziare il processo di caricamento in più parti, devi creare la richiesta di caricamento in più parti. Questo passaggio prevede l'avvio del caricamento in più parti e la specificazione di un checksum aggiuntivo per l'integrità dei dati. L'esempio seguente utilizza il checksum -256. SHA Se desiderate fornire dei metadati che descrivano l'oggetto da caricare, dovete fornirli nella richiesta per avviare il caricamento in più parti.
Nota
In questo passaggio e nei passaggi successivi, questo tutorial utilizza l'SHAalgoritmo aggiuntivo -256. Facoltativamente, è possibile utilizzare un altro checksum aggiuntivo per questi passaggi, ad esempio CRC32CRC32C, o -1. SHA Se utilizzi un algoritmo diverso, devi utilizzarlo durante i passaggi del tutorial.
Per avviare il caricamento in più parti
Nel tuo terminale, usa il seguente create-multipart-upload
comando per avviare un caricamento in più parti per il tuo bucket.
Sostituiscilo con il nome effettivo del bucket. Inoltre, sostituiscilo amzn-s3-demo-bucket1
census_data_file
con il nome di file che hai scelto. Questo nome di file diventa la chiave dell'oggetto al termine del caricamento.
aws s3api create-multipart-upload --bucket
amzn-s3-demo-bucket1
--key 'census_data_file
' --checksum-algorithm sha256
Se la richiesta ha esito positivo, verrà visualizzato un JSON output simile al seguente:
{ "ServerSideEncryption": "AES256", "ChecksumAlgorithm": "SHA256", "Bucket": "
amzn-s3-demo-bucket1
", "Key": "census_data_file", "UploadId": "cNV6KCSNANFZapz1LUGPC5XwUVi1n6yUoIeSP138sNOKPeMhpKQRrbT9k0ePmgoOTCj9K83T4e2Gb5hQvNoNpCKqyb8m3.oyYgQNZD6FNJLBZluOIUyRE.qM5yhDTdhz" }
Nota
Quando invii una richiesta di avvio di un caricamento in più parti, Amazon S3 restituisce una risposta con un ID di caricamento, che è un identificativo univoco per il caricamento in più parti. È necessario includere questo ID di caricamento ogni volta che si caricano o si elencano le parti oppure ogni volta che si completa o si interrompe un caricamento. Dovrai utilizzare i Bucket
valori UploadId
Key
, e per i passaggi successivi, quindi assicurati di salvarli.
Inoltre, se utilizzi il caricamento in più parti con checksum aggiuntivi, i codici articolo devono essere consecutivi. Se utilizzi numeri di parte non consecutivi, la complete-multipart-upload
richiesta può generare un. HTTP 500
Internal Server Error
Fase 4: Caricate le parti del caricamento in più parti
In questo passaggio, caricherai le parti del caricamento in più parti nel tuo bucket S3. Usa il upload-part
comando per caricare ogni parte singolarmente. Questo processo richiede di specificare l'ID di caricamento, il numero di parte e il file da caricare per ogni parte.
Per caricare le parti
-
Quando si carica una parte, oltre all'ID di caricamento, è necessario specificare un numero di parte utilizzando l'
--part-number
argomento. È possibile scegliere qualsiasi numero compreso tra 1 e 10.000. Il numero della parte identifica in modo univoco una parte e la relativa posizione nell'oggetto che si sta caricando. Il numero di parte scelto deve essere in una sequenza consecutiva (ad esempio, può essere 1, 2 o 3). Se si carica una nuova parte che utilizza lo stesso numero di una parte caricata in precedenza, quest'ultima viene sovrascritta. -
Utilizzate il
upload-part
comando per caricare ogni parte del caricamento in più parti.--upload-id
È lo stesso dell'output creato dalcreate-multipart-upload
comando nel passaggio 3. Per caricare la prima parte dei tuoi dati, usa il seguente comando:aws s3api upload-part --bucket
amzn-s3-demo-bucket1
--key 'census_data_file
' --part-number1
--bodycensus-part00
--upload-id "cNV6KCSNANFZapz1LUGPC5XwUVi1n6yUoIeSP138sNOKPeMhpKQRrbT9k0ePmgoOTCj9K83T4e2Gb5hQvNoNpCKqyb8m3.oyYgQNZD6FNJLBZluOIUyRE.qM5yhDTdhz
" --checksum-algorithmSHA256
Al completamento di ogni
upload-part
comando, dovresti vedere un output simile al seguente esempio:{ "ServerSideEncryption": "AES256", "ETag": "\"e611693805e812ef37f96c9937605e69\"", "ChecksumSHA256": "QLl8R4i4+SaJlrl8ZIcutc5TbZtwt2NwB8lTXkd3GH0=" }
-
Per le parti successive, incrementate il numero della parte di conseguenza:
aws s3api upload-part --bucket
amzn-s3-demo-bucket1
--key 'census_data_file
' --part-number<part-number>
--body <file-path> --upload-id "<your-upload-id>" --checksum-algorithm SHA256Ad esempio, utilizzate il comando seguente per caricare la seconda parte:
aws s3api upload-part --bucket
amzn-s3-demo-bucket1
--key 'census_data_file' --part-number 2 --body census-part01 --upload-id "cNV6KCSNANFZapz1LUGPC5XwUVi1n6yUoIeSP138sNOKPeMhpKQRrbT9k0ePmgoOTCj9K83T4e2Gb5hQvNoNpCKqyb8m3.oyYgQNZD6FNJLBZluOIUyRE.qM5yhDTdhz" --checksum-algorithm SHA256Amazon S3 restituisce un tag di entità (ETag) e checksum aggiuntivi per ogni parte caricata come intestazione nella risposta.
-
Continua a utilizzare il
upload-part
comando fino a caricare tutte le parti dell'oggetto.
Passaggio 5: Elenca tutte le parti del caricamento in più parti
Per completare il caricamento in più parti, avrai bisogno di un elenco di tutte le parti che sono state caricate per quello specifico caricamento in più parti. L'output del list-parts
comando fornisce informazioni come il nome del bucket, la chiave, l'ID di caricamento, il numero di parteeTag, checksum aggiuntivi e altro ancora. È utile salvare questo output in un file in modo da poterlo utilizzare per il passaggio successivo al completamento del processo di caricamento in più parti. È possibile creare un file JSON di output richiamato parts.json
utilizzando il metodo seguente.
Per creare un file che elenchi tutte le parti
-
Per generare un JSON file con i dettagli di tutte le parti caricate, utilizzate il seguente
list-parts
comando. Sostituiscilo
con il nome effettivo del bucket eamzn-s3-demo-bucket1
<your-upload-id>
con l'ID di caricamento che hai ricevuto nel passaggio 3. Per ulteriori informazioni sullist-parts
comando, vedere list-parts nella Guida per l'utente di AWS Command Line Interface .aws s3api list-parts --bucket
amzn-s3-demo-bucket1
--key 'census_data_file
' --upload-id<your-upload-id>
--query '{Parts: Parts[*].{PartNumber: PartNumber, ETag: ETag, ChecksumSHA256: ChecksumSHA256}}' --output json > parts.jsonparts.json
Viene generato un nuovo file chiamato. Il file contiene le informazioni JSON formattate per tutte le parti caricate. Ilparts.json
file include informazioni essenziali per ogni parte del caricamento in più parti, come i numeri di parte e i ETag valori corrispondenti, necessari per completare il processo di caricamento in più parti. -
Apri
parts.json
utilizzando qualsiasi editor di testo o tramite il terminale. Ecco l'output di esempio:{ "Parts": [ { "PartNumber": 1, "ETag": "\"3c3097f89e2a2fece47ac54b243c9d97\"", "ChecksumSHA256": "fTPVHfyNHdv5VkR4S3EewdyioXECv7JBxN+d4FXYYTw=" }, { "PartNumber": 2, "ETag": "\"03c71cc160261b20ab74f6d2c476b450\"", "ChecksumSHA256": "VDWTa8enjOvULBAO3W2a6C+5/7ZnNjrnLApa1QVc3FE=" }, { "PartNumber": 3, "ETag": "\"81ae0937404429a97967dffa7eb4affb\"", "ChecksumSHA256": "cVVkXehUlzcwrBrXgPIM+EKQXPUvWist8mlUTCs4bg8=" } ] }
Fase 6: Completa il caricamento multiparte
Dopo aver caricato tutte le parti del caricamento in più parti e averle elencate, il passaggio finale consiste nel completare il caricamento in più parti. Questo passaggio unisce tutte le parti caricate in un unico oggetto nel bucket S3.
Nota
Puoi calcolare il checksum dell'oggetto prima della chiamata complete-multipart-upload
--checksum-sha256
includendolo nella richiesta. Se i checksum non corrispondono, Amazon S3 non riesce a completare la richiesta. Per ulteriori informazioni, consulta complete-multipart-upload nella Guida per l'utente di AWS Command Line Interface .
Per completare il caricamento in più parti
Per finalizzare il caricamento in più parti, usa il comando. complete-multipart-upload
Questo comando richiede il parts.json
file creato nel passaggio 5, il nome del bucket e l'ID di caricamento. <
Sostituiscilo con il nome del bucket e amzn-s3-demo-bucket1
><your-upload-id>
con l'ID di caricamento di. parts.json
aws s3api complete-multipart-upload --multipart-upload file://parts.json --bucket
amzn-s3-demo-bucket1
--key 'census_data_file' --upload-id <your-upload-id>
Ecco l'output di esempio:
{ "ServerSideEncryption": "AES256", "Location": "https://
amzn-s3-demo-bucket1
.s3.us-east-2.amazonaws.com/census_data_file", "Bucket": "amzn-s3-demo-bucket1
", "Key": "census_data_file", "ETag": "\"f453c6dccca969c457efdf9b1361e291-3\"", "ChecksumSHA256": "aI8EoktCdotjU8Bq46DrPCxQCGuGcPIhJ51noWs6hvk=-3" }
Nota
Non eliminate ancora i singoli file delle parti. Avrete bisogno delle singole parti in modo da poter eseguire dei checksum su di esse per verificare l'integrità dell'oggetto unito.
Passaggio 7: Conferma che l'oggetto sia caricato nel tuo bucket
Dopo aver completato il caricamento multiparte, puoi verificare che l'oggetto sia stato caricato correttamente nel tuo bucket S3. Per elencare gli oggetti nel bucket e confermare la presenza del file appena caricato, usa il comando list-objects-v2
Per elencare l'oggetto caricato
Per elencare gli oggetti presenti nel tuo, usa il bucket di list-objects-v2
comandi. Sostituisci
con il nome effettivo del bucket: amzn-s3-demo-bucket1
aws s3api list-objects-v2 --bucket
amzn-s3-demo-bucket1
Questo comando restituisce un elenco di oggetti nel bucket. Cerca il file caricato (ad esempio,census_data_file
) nell'elenco degli oggetti.
Per ulteriori informazioni, consultate la sezione Esempi relativa al list-objects-v2
comando nella Guida per l'AWS Command Line Interface utente.
Fase 8: Verificare l'integrità dell'oggetto con un MD5 checksum
Quando carichi un oggetto, puoi specificare un algoritmo di checksum da utilizzare in Amazon S3. Per impostazione predefinita, Amazon S3 memorizza il MD5 digest di byte come oggetto. ETag Per i caricamenti in più parti, non ETag è il checksum per l'intero oggetto, ma piuttosto un insieme di checksum per ogni singola parte.
Per verificare l'integrità dell'oggetto utilizzando un checksum MD5
-
Per recuperare l'ETagoggetto caricato, esegui una
head-object
richiesta:aws s3api head-object --bucket
amzn-s3-demo-bucket1
--keycensus_data_file
Ecco l'output di esempio:
{ "AcceptRanges": "bytes", "LastModified": "2024-07-26T19:04:13+00:00", "ContentLength": 16106127360, "ETag": "\"f453c6dccca969c457efdf9b1361e291-3\"", "ContentType": "binary/octet-stream", "ServerSideEncryption": "AES256", "Metadata": {} }
Questo etag ha «-3" aggiunto alla fine. Ciò indica che l'oggetto è stato caricato in tre parti utilizzando il caricamento in più parti.
-
Quindi, calcola il MD5 checksum di ogni parte usando il
md5sum
comando. Assicuratevi di fornire il percorso corretto ai file delle parti:md5sum census-part*
Ecco l'output di esempio:
e611693805e812ef37f96c9937605e69 census-part00 63d2d5da159178785bfd6b6a5c635854 census-part01 95b87c7db852451bb38b3b44a4e6d310 census-part02
-
Per questo passaggio, combina manualmente gli MD5 hash in un'unica stringa. Quindi, esegui il comando seguente per convertire la stringa in binario e calcolare il MD5 checksum del valore binario:
echo "
e611693805e812ef37f96c9937605e6963d2d5da159178785bfd6b6a5c63585495b87c7db852451bb38b3b44a4e6d310
" | xxd -r -p | md5sumEcco l'output di esempio:
f453c6dccca969c457efdf9b1361e291 -
Questo valore hash deve corrispondere al valore hash del ETag valore originale nel passaggio 1, che convalida l'integrità dell'oggetto.
census_data_file
Quando chiedi ad Amazon S3 di utilizzare checksum aggiuntivi, Amazon S3 calcola il valore del checksum per ogni parte e archivia i valori. Se desideri recuperare i valori di checksum per singole parti di caricamenti multiparte ancora in corso, puoi utilizzare. list-parts
Per ulteriori informazioni su come funzionano i checksum con oggetti di caricamento in più parti, consulta. Verifica dell'integrità degli oggetti
Fase 9: Verifica l'integrità dell'oggetto con un checksum aggiuntivo
In questo passaggio, questo tutorial utilizza SHA -256 come checksum aggiuntivo per convalidare l'integrità dell'oggetto. Se hai utilizzato un checksum aggiuntivo diverso, usa invece quel valore di checksum.
Per verificare l'integrità dell'oggetto con SHA256
-
Esegui il seguente comando nel tuo terminale, incluso l'
--checksum-mode enabled
argomento, per visualizzare ilChecksumSHA256
valore del tuo oggetto:aws s3api head-object --bucket
amzn-s3-demo-bucket1
--key census_data_file --checksum-mode enabledEcco l'output di esempio:
{ "AcceptRanges": "bytes", "LastModified": "2024-07-26T19:04:13+00:00", "ContentLength": 16106127360, "ChecksumSHA256": "aI8EoktCdotjU8Bq46DrPCxQCGuGcPIhJ51noWs6hvk=-3", "ETag": "\"f453c6dccca969c457efdf9b1361e291-3\"", "ContentType": "binary/octet-stream", "ServerSideEncryption": "AES256", "Metadata": {} }
-
Utilizzate i seguenti comandi per decodificare i
ChecksumSHA256
valori delle singole parti in base64 e salvarli in un file binario chiamato.outfile
Questi valori possono essere trovati nel tuo file.parts.json
Sostituisci le stringhe base64 di esempio con i tuoi valori effettivi.ChecksumSHA256
echo "
QLl8R4i4+SaJlrl8ZIcutc5TbZtwt2NwB8lTXkd3GH0=
" | base64 --decode >> outfile echo "xCdgs1K5Bm4jWETYw/CmGYr+m6O2DcGfpckx5NVokvE=
" | base64 --decode >> outfile echo "f5wsfsa5bB+yXuwzqG1Bst91uYneqGD3CCidpb54mAo=
" | base64 --decode >> outfile -
Eseguite il comando seguente per calcolare il SHA256 checksum di:
outfile
sha256sum outfile
Ecco l'output di esempio:
688f04a24b42768b6353c06ae3a0eb3c2c50086b8670f221279d67a16b3a86f9 outfile
Nel passaggio successivo, prendi il valore hash e convertilo in un valore binario. Questo valore binario deve corrispondere al
ChecksumSHA256
valore del passaggio 1. -
echo "688f04a24b42768b6353c06ae3a0eb3c2c50086b8670f221279d67a16b3a86f9" | xxd -r -p | base64
Ecco l'output di esempio:
aI8EoktCdotjU8Bq46DrPCxQCGuGcPIhJ51noWs6hvk=
Questo output dovrebbe confermare che l'output base64 corrisponde al
ChecksumSHA256
valore dell'output delhead-object
comando. Se l'output corrisponde al valore del checksum, l'oggetto è valido.
Importante
-
Quando si richiede ad Amazon S3 di utilizzare checksum aggiuntivi, Amazon S3 calcola i valori di checksum per ogni parte e li memorizza.
-
Se desideri recuperare i valori di checksum per singole parti di caricamenti multiparte ancora in corso, puoi usare il comando.
list-parts
Fase 10: eliminare le risorse
Se vuoi ripulire i file creati in questo tutorial, usa il seguente metodo. Per istruzioni su come eliminare i file caricati nel bucket S3, consulta. Eliminazione di oggetti Amazon S3
Eliminare i file locali creati nel passaggio 1:
Per rimuovere i file che hai creato per il caricamento in più parti, esegui il comando seguente dalla tua directory di lavoro:
rm
census-data.bin
census-part* outfile parts.json