현재 s3에서 비디오를 하나의 버킷에서 다른 버킷으로 복사/이동하려고하는 레일 애플리케이션을 개발 중입니다. 그러나 난 내 레일 응용 프로그램에서 프록시 오류 502 계속. mongrel 로그에 "메모리를 할당하지 못했습니다."라고 표시됩니다. 이 오류가 발생하면 응용 프로그램이 종료되고 다시 시작해야합니다.레일 애플리케이션에서 s3을 사용하여 버킷간에 파일을 복사하려면 어떻게해야합니까?
3
A
답변
6
코드가 전체 리소스를 메모리로 읽는 것과 같고, 메모리 부족으로 인해 응용 프로그램이 읽히는 것 같습니다. 이것을하기위한 순진한 방법 (그리고 당신의 설명에서 이미 이와 같은 일을하고있는 것)은 파일을 다운로드하고 다시 업로드하는 것입니다. 메모리에 다운로드하지 말고 로컬 파일로 다운로드하십시오. 그러나 아마존 엔지니어는이 특정 사례를 처리 할 수있는 API를 제공하고 있습니다.
# With s3 being an S3 object acquired via S3Interface.new
# Copies key1 from bucket b1 to key1_copy in bucket b2:
s3.copy('b1', 'key1', 'b2', 'key1_copy')
을 그리고 당신은 벌거 벗은 S3의 HTTP 인터페이스를 사용하는 경우에만 사용하는 솔루션을 amazon's object copy docs를 참조하십시오
당신이 RightAWS 보석 같은 것을 사용하는 경우, 당신과 같이 그 S3Interface을 사용할 수 있습니다 하나의 물체에서 다른 물통으로 한 객체를 복사하는 HTTP입니다.
0
메모리로 전체 파일을로드 한 다음 파일로 작업하는 대신 파일을 스트리밍 해 봅니다. 당신은 AWS-S3 보석을 사용하는 경우
예를 들어, 사용하지 않는 :
data = open(file)
S3Object.store file_name, data, BUCKET
를 사용하는 대신 다음
S3Object.store file_name, open(file), BUCKET
하지 않도록 방법을 정확하게에 "스트림 다운로드"를 파일.
0
boto이 잘 작동합니다. this thread을 참조하십시오. boto를 사용하면 객체를 로컬 시스템으로 다운로드 한 다음 다른 버킷에 업로드하는 대신 한 버킷에서 다른 버킷으로 바로 복사 할 수 있습니다.
0
fog 보석을 사용하여 버킷을 버켓으로 직접 복사 할 수 있습니다.
s3 = Fog::Storage.new(your_aws_credentials)
s3.copy_object('source-bucket', 'source/path', 'dest-bucket', 'dest/path')
관련 문제
- 1. Windows 배치를 사용하여 파일을 복사하려면 어떻게합니까?
- 2. 숫자가 증가하는 파일을 다른 위치에 복사하려면 어떻게해야합니까?
- 3. VMS에서 Windows로 파일을 복사하고 다시 복사하려면 어떻게해야합니까?
- 4. iPhone SDK : Xcode를 사용하여 iPhone 시뮬레이터에 파일을 복사하려면 어떻게해야합니까?
- 5. NetStream 객체를 복사하려면 어떻게해야합니까?
- 6. MSBuild를 사용하여 파일을 다른 디렉토리에 복사하려면 어떻게합니까?
- 7. 레일 애플리케이션에서 FQL의 구문
- 8. 파일을 복사하려면 Excel에서 단추를 만드시겠습니까?
- 9. sudo없이/var/www에 파일을 복사하려면
- 10. 레일 애플리케이션에서 레일스의 로컬 복사본
- 11. 레일 애플리케이션에서 클래스는 어디에 연장합니까?
- 12. 배치 파일을 사용하여 디렉토리의 "최신 서브 디렉토리"에 파일을 복사하려면 어떻게해야합니까?
- 13. 특정 파일 형식을 제외하고 폴더간에 파일을 복사하려면 어떻게해야합니까?
- 14. 저장소에 fleximage gem과 s3을 사용하고 싶지만 dev/qa/test envs에서 s3을 사용하지 않으려 고합니다.
- 15. 레일 애플리케이션에서 일부 기능을 제거하는 방법
- 16. 레일 애플리케이션에서 REST API 사용하기
- 17. 레일 3 애플리케이션에서 URL 숨기기
- 18. git 저장소를 새로운 svn repostory로 복사하려면 어떻게해야합니까?
- 19. AppleScript Terminal.app을 사용하여 화면의 현재 텍스트를 복사하려면 어떻게해야합니까?
- 20. MSBuild를 사용하여 암호가 필요한 네트워크 공유에 파일을 복사하려면 어떻게합니까?
- 21. asp.net 애플리케이션에서 POST를 수신하려면 어떻게해야합니까?
- 22. 입력란의 일부를 다른 입력란에 복사하려면 어떻게해야합니까?
- 23. Teamcity의 이슈를 다른 서버로 복사하려면 어떻게해야합니까?
- 24. 하나의 레일 애플리케이션에서 다른 레일 애플리케이션으로 데이터 제출
- 25. 레일 애플리케이션에서 advImage 플러그인을 사용하여 미리보기 이미지를 얻는 방법
- 26. 동일한 iOS 기기에서 한 애플리케이션에서 다른 애플리케이션으로 파일을 전송하려면 어떻게해야합니까?
- 27. 하나의 레일 애플리케이션에서 다른 레일 애플리케이션으로 인증 요청 보내기
- 28. 레일 애플리케이션에서 외부 오라클 db 쿼리하기
- 29. 레일 애플리케이션에서 보낸 사람 주소 사용자 정의
- 30. 레일 애플리케이션에서 xml 코드를 아름답게 만드는 방법
s3.copy (...)에 인수를 전달하여 새 파일의 사용 권한을 지정할 수 있습니까? – deb