Ravindra BagaleCourses & study guides English

CloudFront Origins सोप्या भाषेत: S3, ALB, EC2 आणि Custom Origins

Amazon CloudFront म्हणजे काय मध्ये पाहिलं की cache miss वर CloudFront origin कडून आणतो. आता प्रत्येक origin type बघू: S3 bucket, S3 website endpoint, Application Load Balancer, EC2 आणि कोणताही custom HTTP server. Failover साठी origin groups, protocol policy, timeouts आणि custom headers पण, मग दोन origins असलेलं एक distribution बनवू.

या chapter मध्ये तुम्ही काय शिकाल

  • Origin म्हणजे काय आणि एका distribution ला अनेक का
  • Origin म्हणून S3 bucket vs S3 website endpoint
  • ALB, EC2 आणि custom origins, आणि ते lock कसे करायचे
  • Origin groups, protocol policy, timeouts, custom headers
  • Lab: /static/* S3 मधून आणि app ALB मधून

1. गोष्ट: एक दुकान, दोन kitchens

एका restaurant ला एकच counter. Cold drinks मागच्या fridge मधून. Hot food kitchen मधून. Customers ना फक्त counter दिसतो. CloudFront हा counter. S3 म्हणजे कधी न बदलणाऱ्या files चा fridge. App server म्हणजे प्रत्येक order शिजवणारं kitchen.

2. Origin म्हणजे काय?

हे का लागतं?

CloudFront स्वतः काही ठेवत नाही. Miss वर खरी file किंवा उत्तर कुठे आहे ते त्याला माहीत असायला हवं.

हे काय आहे?

Origin म्हणजे CloudFront ज्या address वरून आणतो तो. एका distribution ला अनेक origins असू शकतात आणि cache behaviors (path patterns) प्रत्येक request साठी एक निवडतात.

Origin typeDomain उदाहरणकशासाठी
S3 bucket (REST)mybucket.s3.ap-south-1.amazonaws.comOAC सह private files: images, JS, videos
S3 website endpointmybucket.s3-website.ap-south-1.amazonaws.comRedirect rules आणि folder index pages; bucket public हवा; origin ला फक्त HTTP
Application Load Balancerapp-alb-123.ap-south-1.elb.amazonaws.comअनेक EC2/containers वरचे dynamic apps
EC2ec2-13-2-1-9.ap-south-1.compute.amazonaws.comएक छोटा server
Custom HTTPapi.example.comAWS बाहेरचे servers, दुसरे clouds, on-premises
इतरAPI Gateway, Lambda function URL, MediaPackage, Elemental MediaStoreServerless APIs, live video

Distribution types

आज एकच प्रकार: HTTP आणि HTTPS देणारं web distribution (HLS/DASH video streaming सह). जुना RTMP distribution type 31 December 2020 ला बंद झाला.

3. S3 bucket vs S3 website endpoint

हे का लागतं?

दोन्ही S3 मधून files देतात, पण वागणं खूप वेगळं आणि चुकीची निवड security किंवा URLs बिघडवते.

हे काय आहे?

मुद्दाS3 bucket (REST) originS3 website endpoint origin
Bucket public?नाही, OAC सह privateहो, public read लागतो
CloudFront ते originHTTPSफक्त HTTP
/blog/ → /blog/index.htmlनाही (CloudFront Function लागतो)हो
S3 redirect rulesनाहीहो
कधीजवळजवळ नेहमीS3 redirects वर अवलंबून जुन्या sites

4. ALB, EC2 आणि custom origins

हे का लागतं?

लोक ALB ला थेट पोचू शकले तर CloudFront, त्याचा cache आणि WAF rules टाळतात.

हे काय आहे?

  • Security group: ALB वर 443/80 फक्त AWS managed prefix list com.amazonaws.global.cloudfront.origin-facing कडून allow. का: फक्त CloudFront IPs आत.
  • Custom header: X-Origin-Verify: 7f3k...secret सारखा origin custom header जोडा. ALB listener वर तो header जुळला तरच forward; नाहीतर 403. का: prefix list प्रत्येक CloudFront distribution ला allow करते, दुसऱ्याच्याही.
  • VPC origins: CloudFront private subnets मधल्या public IP नसलेल्या private ALB किंवा EC2 पर्यंत पोचू शकतो (VPC origin feature, 2024 अखेरपासून). उपलब्ध असेल तर सर्वात मजबूत पर्याय.
  • EC2 थेट: त्याचा public DNS name वापरा, IP address नाही (CloudFront origins domain names च असावे लागतात).

5. महत्वाचे origin settings

SettingValuesका
Protocol (custom origins)HTTP only, HTTPS only, Match viewerHTTPS only edge-to-origin भाग encrypted ठेवतो
Origin path/prodप्रत्येक request path पुढे folder जोडतो
Connection attempts1 ते 3, default 3Fail किंवा failover आधी किती प्रयत्न
Connection timeout1 ते 10 s, default 10Origin group असेल तर कमी करा, म्हणजे failover लवकर
Response timeoutDefault 30 s (1 ते 60; quota request ने जास्त)Slow reports किंवा uploads ला जास्त लागू शकतो
Keep-alive timeoutDefault 5 sOrigin connections परत वापरतो
Custom headersX-Origin-Verify: secretRequest तुमच्या distribution मधून आली हे सिद्ध करा
Origin ShieldOff / origin जवळचा Regionएक जास्त cache layer; origin hits कमी; थोडा extra खर्च

6. Failover साठी origin groups

हे का लागतं?

मुख्य bucket किंवा Region ला त्रास झाला तरी viewers ना files मिळायला हव्यात.

हे काय आहे?

Origin group मध्ये primary आणि secondary origin. Primary ने तुम्ही निवडलेला status code (उदा. 500, 502, 503, 504, 403, 404) दिला किंवा timeout झाला तर CloudFront तीच request secondary वर पाठवतो. GET, HEAD आणि OPTIONS requests साठी चालतं.

Origin failoverViewer GET /img/a.jpgcache MISSPrimary: S3 Mumbai503 देतो किंवा timeoutStatus failover list मध्ये?होSecondary: S3 SingaporeCRR copyViewer ला 200 OKआणि cached
दोन्ही buckets मध्ये same files असाव्यात म्हणून S3 Cross-Region Replication सोबत वापरा.

7. प्रत्येक stack CloudFront मागे कसा

StackOriginTip
Node.js / ExpressALB → EC2:3000खरा IP X-Forwarded-For मधून वाचायला app.set("trust proxy", true)
Python Django/FlaskALB → gunicornGeo logic साठी CloudFront-Viewer-Country header (origin request policy ने)
Java Spring BootALB → :8080server.forward-headers-strategy=framework
PHP / WordPressALB or EC2 → Apache/nginx/wp-content/* cache, /wp-admin/* नको
.NETALB → KestrelUseForwardedHeaders() middleware
nginx / ApacheEC2CloudFront ranges सह realip / remoteip module

8. Lab: /static/* साठी S3, app साठी ALB

कसं करायचं (step by step)

ap-south-1 मध्ये EC2 web server पुढे चालणारा ALB लागतो (उदा. आधीच्या ALB chapter मधला).

  1. ALB तपासा: curl -s http://APP-ALB-DNS/. अपेक्षित: तुमचं app HTML.
  2. Bucket yourname-cf-static (private) बनवा. Upload: echo "body{color:teal}" > site.css; aws s3 cp site.css s3://yourname-cf-static/static/site.css. static/ prefix का: CloudFront पाठवतो तो path key शी जुळायला हवा.
  3. CloudFront › Create distribution › Origin domain = ALB DNS name. Protocol = HTTP only (lab; खऱ्या setup मध्ये ALB certificate सह HTTPS only).
  4. Custom header जोडा: Name X-Origin-Verify, Value lab-secret-123.
  5. Default behavior: Viewer protocol = Redirect HTTP to HTTPS, Allowed methods = GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE, Cache policy = CachingDisabled, Origin request policy = AllViewer. का: app dynamic, cookies आणि headers लागतात.
  6. Lab साठी WAF off. Create distribution.
  7. Origins tab › Create origin › yourname-cf-static.s3.ap-south-1.amazonaws.com, Origin access control = नवीन OAC › Create. दाखवलेली bucket policy copy करून लावा.
  8. Behaviors tab › Create behavior › Path pattern /static/*, Origin = S3 origin, Redirect HTTP to HTTPS, Cache policy CachingOptimized. Save.
  9. EC2 › Load Balancers › ALB › Listeners › HTTP:80 › Manage rules: rule HTTP header X-Origin-Verify is lab-secret-123 → target group ला forward. Default action Return fixed response 403 करा.
  10. ALB security group: port 80 वरचा 0.0.0.0/0 काढून prefix list com.amazonaws.global.cloudfront.origin-facing टाका.
  11. App test: curl -sI https://dXXXX.cloudfront.net/ | grep -i x-cache. अपेक्षित: 200 आणि प्रत्येक वेळी Miss from cloudfront (cache नाही).
  12. Static दोनदा test: curl -sI https://dXXXX.cloudfront.net/static/site.css | grep -i x-cache. अपेक्षित: Miss, मग Hit.
  13. Bypass test: curl -s -m 5 http://APP-ALB-DNS/. अपेक्षित: timeout (security group). का: फक्त CloudFront ALB पर्यंत, आणि secret header सहच.

Cleanup

  1. Distribution disable, मग delete. OAC delete.
  2. ALB rule आणि security group परत करा, किंवा ALB lab delete. aws s3 rb s3://yourname-cf-static --force.

9. Interview questions

प्र. Origin म्हणून S3 REST endpoint की website endpoint?

OAC सह REST endpoint, म्हणजे bucket private आणि traffic HTTPS. S3 redirects किंवा index pages हवे असतील तेव्हाच website endpoint, आणि मग bucket public.

प्र. Users CloudFront टाळून ALB ला पोचू नयेत म्हणून?

Security group मध्ये फक्त CloudFront origin-facing prefix list आणि ALB listener rule मध्ये secret custom header तपासा. किंवा VPC origins.

प्र. Origin group म्हणजे काय?

Primary आणि secondary origin; निवडलेल्या status codes किंवा timeouts वर GET, HEAD आणि OPTIONS साठी failover.

प्र. अजून RTMP distribution बनवता येतं का?

नाही, RTMP distributions 2020 अखेरीस बंद. HTTP वर HLS किंवा DASH वापरा.

प्र. Origin group सोबत connection timeout कमी का?

Failover attempts आणि timeouts ची वाट बघतो; defaults (3 × 10 s) सोबत viewers 30 s थांबू शकतात.

घरी करून बघा

  1. वेगळ्या Regions मधल्या दोन buckets चा origin group बनवा आणि primary मधली file rename करून failover test करा.
  2. Origin path /v2 ठेवा आणि कोणती S3 key मागितली जाते ते बघा.

थोडक्यात सांगायचं तर

  1. Origin म्हणजे miss वर CloudFront जिथून आणतो; behaviors path नुसार origin निवडतात.
  2. Website endpoint पेक्षा OAC सह S3 REST endpoint.
  3. ALB/EC2 origins prefix list + secret header ने, किंवा VPC origins ने lock करा.
  4. Origin groups failover देतात; timeouts tune करा म्हणजे जलद.
  5. RTMP गेला; एकच web distribution type.

सराव Tasks

या scenario बद्दल

Bengaluru HealthTech हा बेंगळुरू मधला हेल्थ टेक व्यवसाय आहे. Arjun Rao त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 11

सोपं Distributions दाखवा

का: Distribution ID व domain नाव शोधा.

काय करायचं: सगळे CloudFront distributions दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Target health तपासा

का: Targets unhealthy असल्यास site 502/503 errors दाखवते.

काय करायचं: arn:aws:elasticloadbalancing:ap-south-1:125324833677:targetgroup/blrhealthtech-tg/6d0ecf831eec9f09 मधल्या targets चं health दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Target group मध्ये servers register करा

का: फक्त registered व healthy targets ना traffic मिळतं.

काय करायचं: Instance i-0bba33c4235211a2b ला target group arn:aws:elasticloadbalancing:ap-south-1:125324833677:targetgroup/blrhealthtech-tg/6d0ecf831eec9f09 मध्ये register करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Target group बनवा

का: Target group म्हणजे load balancer ज्यांना traffic पाठवतो त्या servers ची list.

काय करायचं: vpc-0324f33caadeadbee मध्ये HTTP port 80 साठी blrhealthtech-tg target group बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम CloudFront cache साफ करा

का: Deploy नंतर invalidate करा म्हणजे visitors ना नव्या files लगेच मिळतात.

काय करायचं: Distribution E2QWRUHAPOMQZL वर सगळे paths (/*) invalidate करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Kubernetes LoadBalancer Service

का: LoadBalancer Service ला AWS load balancer मिळतो.

काय करायचं: app: web select करणारी LoadBalancer Service, port 80 → targetPort 8080.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

अवघड Application Load Balancer बनवा

का: High availability साठी ALB ला वेगवेगळ्या AZs मधले किमान दोन subnets लागतात.

काय करायचं: blrhealthtech-alb नावाचा ALB subnets subnet-025324c33abbbb1 व subnet-05324c33abbbb2 मध्ये security group sg-025324b336aa4c3b2 सह बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड HTTP listener जोडा

का: Listener port वर traffic स्वीकारतो व target group कडे पाठवतो.

काय करायचं: Load balancer arn:aws:elasticloadbalancing:ap-south-1:125324833677:loadbalancer/app/blrhealthtech-alb/50dc6c495c0c9188 वर port 80 चा HTTP listener बनवा जो arn:aws:elasticloadbalancing:ap-south-1:125324833677:targetgroup/blrhealthtech-tg/6d0ecf831eec9f09 कडे forward करेल.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Network Load Balancer बनवा

का: NLB layer 4 (TCP/UDP) वर चालतो.

काय करायचं: blrhealthtech-nlb नावाचा network load balancer subnets subnet-025324c33abbbb1 व subnet-05324c33abbbb2 मध्ये बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Config file पासून distribution बनवा

का: पूर्ण config JSON मध्ये ठेवणं सोपं.

काय करायचं: dist.json पासून CloudFront distribution बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड CloudFront OAC साठी bucket policy

का: OAC मुळे फक्त तुमचा CloudFront distribution private bucket वाचतो.

काय करायचं: cloudfront.amazonaws.com ला blrhealthtech-site/* वर s3:GetObject allow, फक्त aws:SourceArn = arn:aws:cloudfront::125324833677:distribution/E2QWRUHAPOMQZL असेल तेव्हा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: CloudFront origin types. OAC सह S3 REST endpoint: private files. S3 website endpoint: redirects, public bucket, फक्त HTTP. ALB किंवा EC2: dynamic apps. Custom: कोणताही HTTP server. एका distribution ला अनेक origins.
उजळणी card: CloudFront origin types · PNG download करा
उजळणी card: ALB origin lock करा. SG: फक्त CloudFront origin-facing prefix list allow. Origin वर secret custom header जोडा. Header जुळला तरच ALB rule forward; नाहीतर 403. किंवा पूर्ण private ALB साठी VPC origins.
उजळणी card: ALB origin lock करा · PNG download करा
उजळणी card: Failover साठी origin groups. एक primary आणि एक secondary origin. 500, 503, 404 सारख्या निवडलेल्या codes किंवा timeouts वर failover. GET, HEAD आणि OPTIONS साठी. Failover लवकर व्हावा म्हणून connection timeout कमी करा.
उजळणी card: Failover साठी origin groups · PNG download करा
तुलना: S3 REST endpoint origin vs S3 website endpoint origin. S3 REST endpoint origin: OAC ने वाचलेला bucket.s3.region.amazonaws.com. S3 website endpoint origin: bucket.s3-website.region.amazonaws.com, public website.
तुलना: S3 REST endpoint origin vs S3 website endpoint origin · PNG download करा
तुलना: S3 origin vs ALB origin. S3 origin: Files ठेवतो; जशाच्या तशा. ALB origin: प्रत्येक response बनवणाऱ्या app servers वर requests वाटतो.
तुलना: S3 origin vs ALB origin · PNG download करा
मुलाखत card: Users CloudFront टाळू नयेत म्हणून?. S3: OAC आणि Block Public Access. ALB: SG मध्ये CloudFront prefix list आणि secret header rule. किंवा public IP नसलेले VPC origins.
मुलाखत card: Users CloudFront टाळू नयेत म्हणून? · PNG download करा

अजून cards: Ravi Sir's Cards.