2012-09-05 4 views
0

서로 다른 유형의 자산/파일을 별도의 S3 버킷에 저장하거나 모두 버킷에 넣을 권장 전략이 있는지 궁금한가요? 내가 가지고있는 다양한 유형의 자산에는 정적 사이트 이미지, 사용자 프로필 이미지, 문서, 파일 및 비디오와 같은 사용자 생성 콘텐츠가 포함됩니다.S3 버킷 유형

+0

당신이 제공하는 S3 URL의 직접 또는 버킷에서 원점 풀과 CDN으로 CloudFront를를 사용하는 ? –

+0

또한 어떻게 파일을 S3에 저장하고 메타 데이터를 설정합니까? –

+0

URL을 올리는 곳을 결정하지 않았지만 CloudFront쪽으로 기울고 있습니다. Heroku에서 호스팅 한 사이트와 사용자는 클립으로 양식을 통해 비디오를 추가 할 수 있습니다. 메타 데이터는 Postgres에 저장됩니다. – hugo

답변

0

파일을 버킷으로 그룹화하는 방법. 콘텐츠에 서로 다른 도메인 이름이나 CNAME을 사용하려는 경우가 아니면 사용하려는 각 도메인 이름에 대해 별도의 버킷이 필요합니다.

나는 기능별로 그룹화하는 경향이 있습니다. 어쩌면 사용자가 완전히 제어 할 수있는 응용 프로그램에서 사용되는 정적 파일은 사용자가 생성하려고하는 내용과 별도의 버킷에 배포 할 수 있습니다. 또는 이미지와 다른 버킷에 비디오를 넣고 싶을 수도 있습니다.

S3 메타 데이터에 대한 이전 코멘트에 추가하십시오. S3/Cloudfront에서 콘텐츠를 서버하는 방법을 최적화하는 데 중요한 부분이 될 것입니다.

기본적으로 S3 메타 데이터는 키 - 값 쌍으로 구성됩니다. 예를 들어 파일이 .jpg 인 경우 Content-Type을 키로 사용하여 image/jpeg 값을 가질 수 있습니다. 이렇게하면 S3 URL 또는 Cloudfront를 통해 직접 요청한 사용자의 값에 해당하는 적절한 Content-Type 헤더가 자동으로 전송됩니다. Cache-Control 메타 태그도 마찬가지입니다. 자신 만의 메타 태그를 사용할 수도 있습니다. 예를 들어, x-amz-meta-md5이라는 사용자 지정 메타 태그를 사용하여 파일의 md5 해시를 저장합니다. 리비전 제어 시스템에 저장된 컨텐트에 대한 간단한 버킷 비교에 사용되므로 버킷에서 각 파일의 체크섬을 즉시 수행 할 필요가 없습니다. 차등 콘텐츠 업데이트를 버킷에 푸시하는 데 사용합니다 (즉, 변경된 푸시 버튼 만 푸시).

수정 제어가 어떻게 진행되는지. 버전 화 된 파일 이름을 사용하는 것이 좋습니다. 즉, bigimage.jpg가 있고 업데이트를하고 bigimage1.jpg라고하고 코드를 변경하여이를 반영하고 싶다고 해봅시다. 왜? 최적으로, Cache-Control 헤더에 긴 만료 시간 프레임을 설정하려고합니다. 불행하게도 같은 이름의 파일을 배포하려는 경우 Cloudfront를 사용하면 가장자리 캐싱 위치를 무효화하는 것이 문제가됩니다. 새로운 파일 이름이있는 경우 Cloudfront는 가장자리 노드를 채우기 시작하고 캐시 무효화에 대해 걱정할 필요가 없습니다.

마찬가지로 사용자 제작 콘텐츠의 경우 각 비디오/이미지가 고유 한 파일 이름을 가지고 캐시에 저장 될 수 있도록 md5 또는 기타 (대부분) 고유 한 식별자 체계를 포함 할 수 있습니다. 여기에 참고로

는 CloudFront를 스트리밍 설정에서의 AWS 문서에 대한 링크입니다

http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/CreatingStreamingDistributions.html