이 문제를 해결하려면 패러다임을 전환해야합니다. EC2 인스턴스에서 웹 응용 프로그램과 별도로 바니시 또는 nginx와 같은 역방향 프록시를 실행하여 http://www.somedomain.com/api/ *의 트래픽을 웹 응용 프로그램에 라우팅합니다 (요청 URL을 다시 작성하여 "/ api"접두사 제거)하고 다른 모든 트래픽 S3로. 이 작업을 수행하기 위해 nginx 또는 varnish를 구성하는 것은 매우 간단합니다 (몇 일, 며칠이 아닌).
그런 다음 www.somedomain.com DNS 레코드를 S3 대신 ec2 인스턴스를 가리 키도록 전환하십시오.
비 linted VCL 니스이 할 수 있도록 샘플이 후
backend s3 {
.host = "s3.amazonaws.com";
.port = "80";
}
backend app {
.host = "localhost";
.port = "8080";
}
sub vcl_recv {
if (req.url ~ "^/api/.*") {
set req.backend = app;
set req.url = regsub(req.url, "^/api", "");
set req.http.Host = "api.somedomain.com"; /* If your web app cares about host */
}
else {
set req.backend = s3;
}
}
을, 당신은 당신이 좋아하는 경우에, 공상 얻을 건강에 경로 (53)를 사용하여 예를 들어 당신의 EC2 인스턴스를 확인하고 DNS 조회를 통해 실패 할 수 있습니다 s3 버킷에 연결하고 맞춤 캐싱 규칙을 구성하는 등의 작업을 수행 할 수 있습니다. 그러나 원하는 동작을 달성하는 데 필요한 것은 없습니다.
당신은 그렇게 할 수 없을 것입니다. S3는 단지 객체 저장소 시스템입니다. ec2 인스턴스 인 사용자 지정 원본을 사용할 수 있으므로 클라우드 프론트에서이 작업을 수행 할 수 있습니다. – datasage
예. 이해해. 그러나 S3에는 mod_rewrite와 비슷한 사용자 지정 라우팅 규칙이 있습니다. 그들이 포워딩 할 수도 있다는 것을 알았습니다. = (Cloudfront를 종료했지만 비용은 더 많이 듭니다. – kungfoo