Python 스크립트를 사용하여 S3에 직접 zip 파일을 업로드하려고하지만 일부 유니 코드 디코드 오류가 발생합니다.Python urllib2를 사용하여 AWS S3에 직접 zip 파일 업로드
내가하는 일은 Pre-Signed S3 Link를 생성 한 다음 데이터를 업로드하는 것입니다. 나는이 아래의 코드를 사용하여 파이썬에서 시도 할 때
curl -v -H "Content-Type: application/zip" -T /Path/To/Local/File.zip https://MySignedAWSS3Link
그러나, 나는 오류가 발생 : 나는 이런 식으로 할 컬 사용할 때 업로드 작동하기 때문에 링크가 잘 작동 알고있다.
infile2 = open('/Path/To/Local/File.zip', 'rb')
filedata2 = infile2.read()
request2 = urllib2.Request("https://MySignedAWSS3Link",data=filedata2)
request2.add_header('Content-Type', 'application/zip')
request2.get_method = lambda: 'PUT'
url2 = opener.open(request2)
는 파이썬에서 다음과 같은 오류/역 추적을 얻을 :
> Traceback (most recent call last):
File "putFiles.py", line 44, in <module>
url2 = opener.open(request2)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1222, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1181, in do_open
h.request(req.get_method(), req.get_selector(), req.data, headers)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 973, in request
self._send_request(method, url, body, headers)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1007, in _send_request
self.endheaders(body)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 969, in endheaders
self._send_output(message_body)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 827, in _send_output
msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xca in position 10: ordinal not in range(128)
은 내가 잘못 여기서 뭐하는 거지?
[BOTO] (HTTP : //docs.pythonboto.org/ko/latest/)? –
@DmitryNedbaylo 내가 아는 바로는 AWS 자격 증명을 boto에게 제공해야합니다. 이 스크립트는 배포되므로 AWS 자격 증명을 입력 할 수 없습니다. 따라서 나는 내 웹 사이트에서 가져온 미리 서명 된 URL을 사용하고 있습니다. AWS Secret Key 배포를 피하는 다른 아이디어를 사용할 수 있습니다. – SudoKill
나를 예외 추적 할 수 있겠습니까? –