回答
您可以在本地執行MD5校驗和,然後根據S3上的對象的MD5校驗和來驗證數據完整性。 Here is a guide
當上傳到S3,還有一個可選的請求頭(這在我看來應該不是可選的,但我離題),Content-MD5
。如果您將此值設置爲請求正文的MD5散列的base64編碼,S3將在發生不匹配時徹底拒絕您的上載,從而防止上載損壞的數據。
將ETag
標頭設置爲對象的單獨部分上傳(某些類型的服務器端加密除外)的對象的十六進制編碼的MD5哈希。
對於分段上傳,Content-MD5
標頭設置爲相同的值,但是對於每個部分。
當S3將多部分上傳的部分組合到最終對象中時,ETag
頭部設置爲每個部分的級聯二進制編碼(原始字節)MD5散列的十六進制編碼的MD5散列,加上-
加上部件數量。
當您要求S3完成多部分上傳的組合部分的最後一步時,您必須將它在上傳原始部分期間提供給您的ETags還原,這應該可以確保S3是結合是你認爲它合併的結果。不幸的是,您可以向S3詢問有關您上傳的部分的API請求,一些懶惰的開發人員只會要求S3列出此列表,然後將其發回給該文檔部門,但是嘿,它「似乎去工作「,對嗎?
5GB以上的對象需要分段上傳,5MB以上的上傳需要分頁上傳。
正確使用,這些功能保證了完整的上傳。
如果您使用的簽名版本4(在舊版區域中也是可選的)還有一個額外的完整性機制,而且這不是可選的(如果您實際使用V4):上傳必須有請求標頭x-amz-content-sha256
,設置爲有效負載的十六進制編碼的SHA-256哈希,如果這裏存在不匹配,請求將被拒絕。
我的看法:由於其中一些功能是可選的,因此除非您審覈其代碼,否則您不能相信任何工具都正確執行此操作。
我不信任任何人使用我的數據,所以出於我自己的目的,我編寫了自己的工具,內部稱爲「迂腐上傳器」,它不使用SDK並直接對REST API說話。它計算文件的sha256並將其作爲x-amz-meta-...
元數據添加,以便可以將其與對象一起提取以進行比較。當我上傳壓縮文件(gzip/bzip2/xz)時,我將壓縮和未壓縮的sha存儲在元數據中,並且也將壓縮和未壓縮的大小以字節的形式存儲在元數據中。
請注意,Content-MD5
和x-amz-content-sha256
是請求標題。它們不會在下載時返回。如果您想將此信息保存在對象元數據中,如我在此處所述。
在EC2中,您可以輕鬆下載一個對象,而無需實際將其保存到磁盤中,以驗證其完整性。如果EC2實例與存儲區位於同一區域,則如果您使用具有公共IPv4或IPv6地址,NAT實例,S3 VPC端點或通過IPv6出口網關的實例,則不會收取數據傳輸費用。 (如果您通過NAT網關訪問S3 over IPv4,您將收取NAT網關數據吞吐量的費用)。顯然有辦法自動執行此,但手動,如果您選擇在控制檯中的對象,選擇下載,右鍵單擊它複製到URL,那麼這樣做:
$ curl -v '<url from console>' | md5sum # or sha256sum etc.
剛剛從控制檯會將網址在單個'
的引號中,因爲它將被預先簽名,並且將在查詢字符串中包含&
,您不希望shell解釋該字符串。
我一直在使用瀏覽器上傳文件。看起來像cli執行校驗和(http://docs.aws.amazon.com/cli/latest/topic/s3-faq.html)。有誰知道瀏覽器是否也執行校驗和? –
- 1. AWS S3 transferutility上傳從未上傳但顯示完整無錯
- 2. 上傳到AWS S3失敗
- 3. 上傳到AWS S3限制
- 4. 流星上傳到AWS S3
- 5. AWS Windows EC2從S3上傳
- 6. AWS S3 CLI分段上傳
- 7. AWS SDK S3上傳Credentails
- 8. AWS S3 PreSignedUrl上傳出錯
- 9. 從aws lambda上傳到aws s3
- 10. 適用於C++的AWS開發工具包:完整性檢查S3傳輸
- 11. AWS S3桶上傳/傳輸與boto3
- 12. AWS S3在ios上分段上傳
- 13. 上傳調整圖像S3
- 14. 上傳一個URL圖像s3 aws
- 15. 壓縮並上傳到AWS S3
- 16. AWS Lambda C#將對象上傳到S3
- 17. aws s3上傳優化,使用java sdk
- 18. AWS S3使用簽名的URL上傳
- 19. AWS S3文件上傳通過Laravel
- 20. reactJS文件上傳到AWS S3
- 21. 無法上傳圖像到AWS s3的
- 22. 從URL上傳到AWS S3的背景
- 23. iOS - 同步上傳到AWS S3
- 24. 將視頻從Android上傳到AWS S3
- 25. 問題whille上傳到AWS S3存儲
- 26. boto3 S3使用aws密鑰上傳
- 27. Brightcove的AWS S3上傳ColdFusion的
- 28. PDF上傳到AWS S3損壞
- 29. AWS S3 SDK:中止putObject上傳進度
- 30. IOS AWS s3桶圖像上傳問題
檢查'Content-MD5'標頭這裏http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html – moondaisy