2017-12-03 21 views
0

나는 읽고 AWS 람다, S3CloudFront를 (CF)에 대한 비디오를보고 있었다. 나는 여기서 구름의 정면과 더 일반적인 CDN의 개념을 이해하고 있는지 (또는 아님) 확인하고 싶다.CloudFront가 제대로 작동합니까? labmda는, S3, CloudFront를

목표 : 저는 CF를 통해 내 응용 프로그램의 이미지를 제공하고 싶습니다. 내가 aws 람다 함수를 배포 할 예정이다. 내가 묘사하는 시나리오에서 - 나의 람다 함수는 단 하나의 끝 점이있는 간단한 플라스크 앱입니다. 이미지 업로드를 구현하는 POST 끝점 (파일에서 checsum을 만들고, 파일 체크섬이 이미 s3에 있는지 확인 - 저장 여부 및 이미지 반환). 이미지 크기 조정은 쿼리 문자열을 통해 인수가 제공된 경우에만 실행됩니다. 모든 이미지는 저장됩니다 (원본, 크기 조정, 회전 등). S3는 CF의 근원입니다.

배포본 : 저는 Python을 사용하기 때문에 배포 도구로 zappa을 사용하고 싶습니다.

예를 들어 문제 :

8시 : 사용자가 호주에서 이미지를 업로드합니다. 이전에 이미지가 없었기 때문에 S3에 저장되어 반환되었습니다.

9:00 동일한 사용자가 이미지의 미리보기 이미지를 요구하고 있습니다. 이미지 크기가 조정되어 반환됩니다. 여기서는 이미지 크기 조정 요청 (예 : https://app.org/resize/image1.jpeg?width=80&height=80)이 응답 (image.jpg 80x80)과 함께 클라우드 프론트의 호주 에지 노드에 저장된다고 가정합니다.

10:00 사용자가 동일한 쿼리 문자열을 사용하여 동일한 미리보기 이미지를 요구하는 경우 - 사용자가 오스트레일리아 클라우드 프런트 에지 캐시에서 image.jpg 80x80을 가져옵니다.

맞았습니까?

답변

2

정확하게는 아닙니다. 첫 번째 문장과 마지막 문장 사이의 목표 단락에서 설명하는 내용은 CDN과 완전히 관련이 없으며 신청서에 의해 처리되어야합니다. (즉, 이미 업로드 된 내용을 추적하고 동일한 파일의 후속 업로드를 다르게 처리하며 첫 요청시 축소판 크기 만 생성하는 등)

CloudFront의 유일한 책임은 요청한 리소스가 최적의 에지 위치에 있는지 확인하는 것입니다 , 만약 그렇다면 제공하고, 그렇지 않으면 원산지에 존재하는지 확인하고 다운로드하고 가장자리가있는 경우 복사하여 제공하십시오. 그렇지 않으면 오류로 응답합니다.

9:00 동일한 사용자가 이미지의 미리보기 이미지를 요구하고 있습니다. 이미지의 크기가 으로 변경되고 반환됩니다. 요청 된 썸네일이 존재하지 않고 S3 분명히 할 수 없습니다 때문에 (내가 제대로 이해하고 이미지가 CF에서 요청 원산지는 S3와 같은 정적 저장 장치 인 경우)

지금 여기에 문제가있을 그것을 생성하십시오. 이를 위해 원점은 CF의 요청을 처리 할 수있는 응용 프로그램 서버 여야합니다. 광고를 게재하는 것이 아니라 일부 논리를 실행하고 CF에 게재되기 전에 누락 된 미리보기 이미지를 생성 할 수 있습니다.

또는 업로드 할 때 이미지에 필요한 모든 버전을 생성하고 S3에 모두 저장해야합니다.

+0

확인.나는 당신의 요점을 부분적으로 얻었지만 아직 어떤 것들은 여전히 ​​그늘 지요. – scagbackbone

+0

aws lambda (aws api gateway를 통한 플라스크 응용 프로그램)는 다음과 같이 계산됩니다. ''출처는 CF의 요청을 처리 할 수있는 응용 프로그램 서버 여야합니까? ' 그래서 두 개의 끝점이 있습니다. 하나는 업로드하고 두 번째는 이미지가있을 경우 반환하거나 축소판을 요청하면 크기를 조정하고 반환하는 '그늘진'GET입니다. – scagbackbone