boto/s3 모듈에는 md5 해시를 매개 변수로 사용하는 것으로 보이는 set_contents_from_filename
이라는 기능이 있습니다.Boto 라이브러리를 사용하여 s3 업로드의 md5 해시를 계산하는 방법 /시기
그러나 해시 계산시기 및 방법에 대한 문서가 명확하지 않습니다. 누군가가 이걸 도와 줄 수 있니? 또한 어떻게 해시 정보를 파일에 저장할 수 있습니까?
boto/s3 모듈에는 md5 해시를 매개 변수로 사용하는 것으로 보이는 set_contents_from_filename
이라는 기능이 있습니다.Boto 라이브러리를 사용하여 s3 업로드의 md5 해시를 계산하는 방법 /시기
그러나 해시 계산시기 및 방법에 대한 문서가 명확하지 않습니다. 누군가가 이걸 도와 줄 수 있니? 또한 어떻게 해시 정보를 파일에 저장할 수 있습니까?
set_contents_from_filename
메서드는 자동으로 MD5 체크섬을 계산합니다. 이 방법에 대한 옵션 인 md5
이 있습니다.이 매개 변수를 사용하면 응용 프로그램에서 이미 계산 한 경우 MD5를 전달할 수 있지만 값을 전달하지 않으면 boto가 계산합니다.
@ garnatt가 이미 말했듯이 set_contents_from_filename
메서드는 자동으로 MD5 체크섬을 계산합니다.
당신이 문서를 보면, 그것은 무엇을 인 아마존에 전송하는 (당신이 md5sum
를 사용하여 콘솔에 얻고 무엇을) 또한 base64 인코딩 hexdigest의 MD5 체크섬을 포함하는 튜플을 반환 compute_md5
라는 방법이있다 너의 머리에서 너를 보아라.
set_contents_from_filename
메서드의 md5
매개 변수는 튜플 형식의 MD5 체크섬을 취합니다. compute_md5
이 반환합니다. 수동으로 계산해야하는 경우 가장 좋은 방법은 compute_md5
방법을 사용하는 것입니다. 그렇지 않으면 md5
매개 변수에 전달하기 전에 올바른 형식으로 튜플을 빌드해야합니다.
boto에 의한 MD5 계산은 체크섬의 기본 64 인 코드입니다. 헤더 :
import hashlib, base64
conn = S3Connection(access_key, secret_key)
bucket = conn.get_bucket('bucket_name')
#If you want to calculate MD5 of a file already uploaded
obj_key = bucket.get_key('file_name_in_s3')
content = obj_key.get_contents_as_string()
m = hashlib.md5()
m.update(content)
value = m.digest()
remote_md5 = base64.b64encode(value)
#To calculate md5 of a file to be uploaded to S3
cur_md5 = base64.b64encode(hashlib.md5(open('Local/Path/To/File').read()).digest())
, 이것은 내가 "DEBUG이 내가 법 로그 파일을 때 : 주어진 파일에 대한 헤더의 '콘텐츠-MD5는'이미 계산할 수 있습니다 업로드/업로드 할 { 'X- 'Content-Length': '35250', 'Expect': '100-Continue', 'Content-MD5': 'dzci3KDIAPWMdzWDaBaaJg ==', 'Content-Type' : 'application/octet-stream', 'User-Agent': 'Boto/2.6.0-dev (win32)'} ". content-md5가 md5 값입니까? 같은 파일에 대해 콘솔에서 md5 할 때 내 값은 "dde831f630d056bb79d7d236f52135ff" – rakesh
boto에 의해 계산 된 MD5입니다. 요청에 MD5를 전송하면 S3에서 수신 한 MD5를 S3에서 계산할 수 있고 일치하지 않으면 S3에서 프로세스에서 손상된 부분이 있음을 나타내는 오류를 반환합니다. 이는 중요한 무결성 검사입니다. MD5가 콘솔에서 왜 다른 것 같아요. 유일한 이유는 콘텐츠 자체가 어떤 이유로 인해 다를 수 있다는 것입니다. boto의 MD5 계산이 정확하다고 확신합니다. – garnaat