2014-09-10 2 views
0

같은 다운로드 파일의 URL을 감안할 때 : POST에 방법이 있나요POST URL이 직접

http://zannee-docs.s3.amazonaws.com/rockefeller-summary.pdf 

을/S3에 직접이 PUT?

# download the file 
requests.get(url, stream=True) 

# save the file locally 

# upload the local file to S3 
s3.upload_file() 

(다운로드 및 S3에 다시 업로드 할 필요없이) S3에 직접 업로드 할 수있는 방법이 있다면, 어떻게 이런 짓을 했을까 : 아니면 내가 할 필요가있다?

답변

3

예, 소스 URL도 S3에서 호스팅되고 S3 키가 액세스 할 수있는 경우에만 해당합니다. (문서는 명시 적으로이 말을하지 않습니다,하지만 난 소스 객체뿐만 아니라 같은 지역에 저장해야합니다 생각합니다.)

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html

당신이 BOTO 사용하고 있기 때문에, 당신은거야 특정 API를 원하는 것은 boto.s3.key.Key.copy()입니다.

+0

덕분에, 객체가 다른 사람이 소유하는 경우, 그래서 그것을 할 수 없을 것이다? – David542

+0

복사하려면 원본 개체에 대한 읽기 권한이 있어야합니다. 자신이 소유하지 않았고 특별히 읽을 수있는 권한이없고 공개되지 않은 경우 카피 할 수 없습니다. – duskwuff

0

PUT 객체를 S3에 직접 서명하기 위해 미리 서명 된 URL을 사용할 수 있습니다. 나는 POST가 요청의 본문을 인코딩해야하기 때문에 POST로 작동하도록 할 수 있다고 믿지는 않지만 그렇게 할 수있는 방법이있을 수도 있습니다. 이 SO 스레드 유용합니다

How to generate a temporary url to upload file to Amazon S3 with boto library?

+0

이미 액세스 권한이있는 파일에서 임시 파일을 생성하는 것이 아닙니까? – David542

+0

그건 사실입니다. 죄송합니다. 귀하의 질문을 신중하게 읽지 않았습니다. 이 경우, 불행히도 대답은 '아니오'입니다. 자세한 내용은 http://stackoverflow.com/questions/7586533/is-it-possible-to-upload-to-s3-directly-from-url-using-post?rq=1을 참조하십시오. – garnaat