2015-01-23 2 views
3

아마존 EC2에 탄력적 인 beanstalk 인스턴스를 사용하여 PHP 응용 프로그램을 배포했습니다. 내 응용 프로그램의 파일 시스템 구조는 다음과 같습니다.Amazon EC2, Elastic Beanstalk : 내 이미지가 사라짐

MyApp 
|-css 
| |-... 
|-js 
| |-... 
|-uploads 
| |- image.png 
| |- file.pdf 
| |- ... 
|-index.php 
|-... 

내 앱을 사용하면 이미지를 업로드 할 수 있습니다. 그것은 웹에 대한 간단한 응용 프로그램을 일부 파일을 관리하고 현재 내 클라이언트에 의해서만 사용됩니다. 따라서 파일 업로드시 위의 그림과 같이 uploads 폴더에 파일을 저장합니다. 내 파일이이 폴더에 오래 동안 보관되지 않는 문제가 있습니다. 하루나 이틀 후, 내가 ssh이고 업로드 폴더가 비어 있음을 알 수 있습니다. 나는 무슨 일이 일어날 지 모르지만 나는 탄력있는 콩팥 괴물이 새로운 인스턴스를 만들고 결과적으로 uploads 폴더 내용을 덮어 쓴다고 생각합니다.

이 상황을 어떻게 수정합니까?

감사합니다.

답변

5

Elastic Beanstalk에 배포 된 응용 프로그램은 무국적이어야합니다. 나는. EC2 인스턴스에 파일 또는 메모리 HTTP 세션과 같은 상태를 저장하면 안됩니다.

AWS Elastic Beanstalk은 응용 프로그램 작업 부하에 따라 풀에서 인스턴스를 추가하거나 제거하기 위해 장면 뒤에서 자동 확장을 사용합니다.

AWS Elastic Beanstalk 구성을 변경하면 인스턴스가 새 인스턴스로 바뀔 수 있습니다.

최상의 방법은 모든 인스턴스에서 사용할 수있는 공유 저장소에 응용 프로그램 상태를 저장하는 것입니다.

아마존 S3는 매우 좋은 후보입니다. 사용자 브라우저가 파일을 S3에 안전하게 업로드 할 수 있도록 응용 프로그램을 약간 수정해야합니다.

자세한 내용은이 질문에 대한 답변을보십시오. Amazon S3 direct file upload from client browser - private key disclosure

브라우저에서 Amazon Javascript SDK를 직접 사용하여 양식을 사용하지 않고 클라이언트 측 업로드를 구현할 수도 있습니다.

+0

통찰력을 가져 주셔서 감사합니다. 파일에 액세스하는 방법은 어떻게됩니까? 현재 사용자는 http://myapp.elasticbeanstalk.com/myapp/uploads/file.pdf를 통해 액세스해야합니다. 동일한 URL을 통해 액세스 할 수 있도록 S3 파일을 어떻게 연결합니까? – nmvictor

+0

@ MyApplynx 당신은 그 URL을 s3 위치로 전달하는 PHP 컨트롤러를 생성합니다. –

+0

컨트롤러가 앱 링크 대신 S3에 대한 링크가있는 웹 페이지를 작성할 수 있습니다. 컨트롤러는 S3 서명 된 URL을 사용하여 유효한 사용자 만 S3에 액세스 할 수 있도록합니다. –

관련 문제