연결 관점에서 "무언가"는 요청 (GET, POST, PUT 등)에 응답해야합니다. 우선 TCP 연결이 있고 "무언가"는 계층 7을 이해하고 클라이언트가 전송하는 바이트에서 의미가 있는지 확인해야합니다. 이 시점에서만 POST 요청과 다른 URL 또는 다른 URL과 다른 GET 요청을 처리 할 수 있습니다. 결국에는 HTTP를 이해하고 라우팅 할 수있는 서비스가 필요합니다. 다음과 같은 서비스가이를 수행 할 수 있습니다. CloudFront ELB / ALB API Gateway (제한은 나중에 제공)
API Gateway는 내부적으로 CloudFront를 사용하여 (실제로 CloudFront 수준에서 무엇이든 구성 할 수있는 기회를 제공하지 않음)-결국 CloudFront와 API Gateway를 나란히 실행할 수있는 방법이 없으므로 결국 CloudFront에서 CloudFront를 실행한다는 의미입니다 나란히.
CloudFront는 패턴에 따라 다른 원점을 선택할 수있는 기회를 제공하지만 Lambda 함수가 아닌 Lambda @ Edge 기능 외에 S3 또는 ELB / ALB 만 원점으로 선택할 수 있습니다.
ALB / ELB는 EC2 인스턴스 만 백엔드로 사용할 수 있습니다 (여기서는 Lambda 또는 S3 없음).
내가 생각할 수있는 유일한 방법은 다음과 같습니다.
- API Gateway를 사용하고 특정 "자산"경로를 S3에 대한 일종의 역방향 프록시 (따라서 정적 자산을 람다를 통해 파이프하는)를 수행하는 Lambda 함수로 라우팅하십시오. 여기에서 Lambda의 비용을 알고 있어야합니다!
- 동일한 작업을 수행 할 수 있지만 Lambda를 통해 자산을 파이핑하는 대신 Lambda 내에서 서명 된 URL을 생성하기 위해 S3로 직접 리디렉션합니다 (비용이 더 많이들 수 있음)
- 자산의 다른 응용 프로그램과 다른 하위 도메인을 사용하는 경우-DNS 수준에서 쉽게 분리하고 다양한 사용 사례 (자산에 대한 CloudFront 및 비 정적에 대한 API 게이트웨이)에 대해 서로 다른 서비스를 사용할 수 있으므로 매우 일반적인 패턴입니다 부속)
따라서 내 전화는 마지막 옵션이 될 것입니다. 그러나 모든 정적 자산 (또는 모든 POST 요청)에 대해 클라이언트 / 브라우저를 별도의 하위 도메인으로 지정해야합니다.
브라우저에서 진정한 API 중심의 애플리케이션을 구축하기 위해 AngularJS 또는 React와 같은 기술을 살펴보고 싶은 것 같습니다. 이 접근 방식을 사용하면 API 게이트웨이로 모든 "동적"요청을 처리하고 S3에서 애플리케이션 자체를 정적 자산으로 제공하는 실제 API를 실행합니다. 어쩌면 그것들을 보면 길을 찾는 데 도움이 될 수 있습니다-사용하지 않더라도 이와 같은 것을 만드는 방법에 대한 건축 패턴은 imho를 요구하는 것입니다.