공개 입구는 CloudFront 하나, 리전 선택은 Edge에서, 절체 스위치는 데이터 플레인에
CloudFront-Viewer-Country-Region)cf.createRequestOriginGroup()import cf from 'cloudfront';
const kvs = cf.kvs();
async function handler(event) {
const req = event.request;
const pin = req.cookies['mr-region']; // affinity
const region = pin ? pin.value
: (await kvs.get('routing', { format: 'json' })).active;
const ids = region === 'us-west-2'
? ['alb-usw2', 'alb-use1'] : ['alb-use1', 'alb-usw2'];
cf.createRequestOriginGroup({
originIds: ids.map(id => ({ originId: id })),
failoverCriteria: { statusCodes: [500, 502, 503, 504] }
});
return req;
}
동적 API: 캐시 끄고, 함수가 리전을 고른 origin group으로
버전이 붙은 정적 자산: 길게 캐시, S3는 OAC로만
SPA 라우팅: custom error response 대신 함수로 rewrite
CloudFront-VPCOrigins-Service-SG를 소스로. 내 distribution 트래픽으로만 제한되어 가장 엄격 (VPC origin 생성 후 가능, 이 SG는 편집 금지)com.amazonaws.global.cloudfront.origin-facing (dual-stack은 ipv6 목록도). 모든 CloudFront 고객의 origin-facing IP라 더 넓음| 항목 | VPC origin에서 | 대응 |
|---|---|---|
| gRPC | 미지원 | gRPC는 별도 경로 설계 (예외 심사) |
| Lambda@Edge origin request/response | 미지원 | origin 선택은 viewer request CloudFront Function으로 |
updateRequestOrigin() | 요청 실패 | selectRequestOriginById(), createRequestOriginGroup() |
| NACL | inbound 미평가, outbound는 평가 | 반환 경로용 ephemeral TCP 1024~65535 outbound 허용 |
internal. internet-facing LB는 생성 자체를 IaC 정책 검사에서 차단AWSManagedRulesAntiDDoSRuleSet, 상단 배치, scope-down 금지bot:verified label만 붙임. web bot auth label은 v4.0 이상SignalNonBrowserUserAgent는 기본 Block. 앱의 비브라우저 User-Agent가 막힘"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesBotControlRuleSet",
"ManagedRuleGroupConfigs": [
{ "AWSManagedRulesBotControlRuleSet": { "InspectionLevel": "COMMON" } }
],
"RuleActionOverrides": [
{ "Name": "SignalNonBrowserUserAgent", "ActionToUse": { "Count": {} } }
]
}
// 다음 규칙: label awswaf:managed:aws:bot-control:signal:non_browser_user_agent
// AND NOT (앱 User-Agent) → Block
| 항목 | ||
|---|---|---|
| 계층, 프로토콜 | L7 HTTP(S), WebSocket | L4 TCP, UDP |
| 입구 주소 | DNS 이름 (Anycast static IP 옵션 있음) | 고정 anycast IPv4 2개 |
| 캐시, WAF | Edge 캐시, WAF를 Edge에서 적용 | 캐시 없음, WAF는 뒤쪽 ALB에 붙임 |
| 리전 분배 | origin group, CloudFront Function | traffic dial, endpoint weight, 자동 failover |
| private origin | VPC origin (ALB, NLB, EC2) | internal ALB endpoint (client IP 보존) |
| 과금 | 요청 + 전송량, AWS origin fetch 무료 | $0.025/시간 + DT-Premium (미국→미국 $0.015/GB) + public IPv4 |
createRequestOriginGroup(), DNS latency는 내부 이름에