S3 Versioning, Lifecycle Rules आणि Replication (SRR आणि CRR) सोप्या भाषेत
S3 वर Static Website कशी host करायची मध्ये files जगाला दिल्या. आता त्यांना चुकांपासून वाचवू आणि काळानुसार खर्च control करू: versioning, delete markers, MFA Delete, lifecycle rules, आणि त्याच Region (SRR) किंवा दुसऱ्या Region (CRR) मधल्या bucket मध्ये replication.
या chapter मध्ये तुम्ही काय शिकाल
- Versioning deletes आणि overwrites पासून कसं वाचवतं
- Delete markers आणि जुनी versions restore करणं
- MFA Delete: काय आणि कोण चालू करू शकतो
- Lifecycle rules: transitions आणि expirations
- SRR vs CRR replication
1. School project ची गोष्ट
एक विद्यार्थिनी project.docx save करते, मग submission च्या आदल्या रात्री त्यावर बिघडलेली copy save करते. साध्या disk वर चांगली copy गेली. Google Docs च्या "version history" ने ती कालचं version उघडते आणि वाचते.
S3 versioning म्हणजे bucket मधल्या प्रत्येक object साठी तीच version history.
2. Versioning
हे का लागतं?
Apps bug मुळे files overwrite करतात, लोक चुकीच्या prefix वर aws s3 rm --recursive चालवतात, ransomware data overwrite करतो. Versioning प्रत्येक जुनी copy ठेवतं.
हे काय आहे?
| State | अर्थ |
|---|---|
| Unversioned (default) | दर key एक copy; overwrite आणि delete final |
| Enabled | प्रत्येक PUT नवीन version ID; जुनी राहतात |
| Suspended | नवीन writes ला version ID "null"; जुनी versions राहतात. परत Unversioned कधीच होत नाही. |
प्रत्येक version चं storage bill होतं. 100 MB file 10 वेळा overwrite = 1 GB. म्हणून versioning आणि lifecycle सोबत.
3. Delete markers
हे का लागतं?
Versioning चालू असताना साधा delete undo करता यायला हवा.
हे काय आहे?
Version ID शिवाय DELETE data पुसत नाही. S3 सगळ्यात नवीन version म्हणून delete marker टाकतं, म्हणून GET 404 देतं. Marker delete करा, object परत. Version ID सह DELETE ते version कायमचं काढतो.
4. MFA Delete
हे का लागतं?
Attacker ने admin keys चोरल्या तर तो versions कायमच्या delete करू शकतो. MFA Delete त्यासाठी MFA device चा code मागतं.
हे काय आहे?
- Version कायमचं delete करायला किंवा versioning state बदलायला MFA code लागतो.
- फक्त root user चालू करू शकतो, आणि फक्त CLI/API ने, console मधून नाही.
aws s3api put-bucket-versioning --bucket b --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "arn:aws:iam::111122223333:mfa/root-account-mfa-device 123456"- MFA Delete असलेल्या bucket वर lifecycle rules वापरता येत नाहीत. बऱ्याच teams साठी Object Lock (WORM retention) हा आधुनिक पर्याय.
5. Lifecycle rules
हे का लागतं?
Logs पहिल्या आठवड्यात वाचले जातात, महिन्यानंतर क्वचित, वर्षानंतर कधीच नाही. कायम Standard price देणं म्हणजे पैसे वाया.
हे काय आहे?
Rule prefix किंवा tag ला target करतो आणि transitions (N दिवसांनी स्वस्त class मध्ये) आणि expirations (N दिवसांनी delete) करतो. Noncurrent versions expire आणि incomplete multipart uploads cleanup पण करू शकतो.
| Data | Rule | का |
|---|---|---|
| logs/ | 30 d → Standard-IA, 90 d → Glacier Flexible, 365 d → expire | काळानुसार कमी वाचले जातात |
| backups/mysql/ | 1 d → Glacier Instant, 180 d → Deep Archive | Audit साठी, क्वचित restore |
| Noncurrent versions | Noncurrent झाल्यावर 30 दिवसांनी expire, 3 नवीन ठेवा | Versioning खर्च control |
| Incomplete multipart | 7 दिवसांनी abort | न दिसणारं पण पैसे लागणारं storage |
Ravindra Bagale's Tip
Minimum days लक्षात ठेवा: IA classes 30, Glacier Instant/Flexible 90, Deep Archive 180. Standard मध्ये 30 दिवस होण्याआधी S3 Standard-IA मध्ये transition करत नाही. 128 KB खालचे लहान objects default ने transition होत नाहीत.
{"Rules":[{"ID":"logs-tiering","Status":"Enabled","Filter":{"Prefix":"logs/"},
"Transitions":[{"Days":30,"StorageClass":"STANDARD_IA"},{"Days":90,"StorageClass":"GLACIER"}],
"Expiration":{"Days":365},
"NoncurrentVersionExpiration":{"NoncurrentDays":30,"NewerNoncurrentVersions":3},
"AbortIncompleteMultipartUpload":{"DaysAfterInitiation":7}}]}
6. Replication: SRR आणि CRR
हे का लागतं?
दुसऱ्या Region मधली copy Regional outage मधून वाचते आणि compliance पूर्ण करते. त्याच Region मधली copy वेगळ्या prod/test किंवा log account ला data देऊ शकते.
हे काय आहे?
| मुद्दा | SRR | CRR |
|---|---|---|
| Destination | त्याच Region | दुसऱ्या Region |
| वापर | Log aggregation, prod → test copy, data sovereignty | Disaster recovery, दुसरीकडे कमी latency, compliance |
| Extra खर्च | Destination storage + requests | + दर GB inter-Region transfer |
- दोन्ही buckets मध्ये versioning चालू हवं.
- Source वाचायला आणि destination लिहायला S3 ला IAM role लागतो (console बनवू शकतं).
- फक्त नवीन objects replicate होतात. आधीच्यांसाठी S3 Batch Replication.
- Version ID सह deletes replicate होत नाहीत (copy वाचते). Delete markers फक्त ते चालू केल्यावर replicate होतात.
- Replication Time Control (RTC) 99.99% objects साठी 15-minute SLA देतं, extra खर्चात.
7. Lab: versioning, restore, lifecycle आणि CRR
कसं करायचं (step by step)
- ap-south-1 मध्ये
yourname-ver-src, Bucket Versioning: Enable. echo v1 > r.txt; aws s3 cp r.txt s3://yourname-ver-src/; echo v2 > r.txt; aws s3 cp r.txt s3://yourname-ver-src/.aws s3api list-object-versions --bucket yourname-ver-src --query "Versions[].[VersionId,IsLatest]". अपेक्षित: दोन IDs, एक true.- जुनं वाचा:
aws s3api get-object --bucket yourname-ver-src --key r.txt --version-id <old-id> old.txt; cat old.txt. अपेक्षित: v1. - Delete:
aws s3 rm s3://yourname-ver-src/r.txt, मगaws s3 ls s3://yourname-ver-src/. अपेक्षित: रिकामं. - Marker शोधा:
aws s3api list-object-versions --bucket yourname-ver-src --query "DeleteMarkers[].VersionId". काढा:aws s3api delete-object --bucket yourname-ver-src --key r.txt --version-id <marker-id>.aws s3 lsमध्ये r.txt परत. - Management › Create lifecycle rule: name
logs-tiering, prefixlogs/, current versions 30 दिवसांनी Standard-IA, 90 ला Glacier Flexible Retrieval, 365 ला expire, noncurrent 30 दिवसांनी permanently delete, incomplete multipart 7 दिवसांनी delete. Save. - तपासा:
aws s3api get-bucket-lifecycle-configuration --bucket yourname-ver-src. - ap-southeast-1 मध्ये
yourname-ver-dst, versioning Enable. - Source › Management › Replication rules › Create: name
to-singapore, scope all objects, destination yourname-ver-dst, IAM role = Create new role. Existing objects replicate करायला No. Save. echo dr > dr.txt; aws s3 cp dr.txt s3://yourname-ver-src/. एका minute नंतर:aws s3api head-object --bucket yourname-ver-src --key dr.txt --query ReplicationStatus. अपेक्षित: "COMPLETED".aws s3 ls s3://yourname-ver-dst/ --region ap-southeast-1मध्ये dr.txt; r.txt नाही (जुना object).
Cleanup
- Replication rule delete. दोन्ही buckets console च्या Empty button ने रिकामे करा (सगळी versions delete), मग delete.
- IAM › Roles › replication साठी बनलेला s3crr_role… delete.
aws s3 rb --force नाही तर Empty का? Versioned bucket वर rb --force जुनी versions आणि markers ठेवतो, म्हणून delete fail होतो.
8. Interview questions
प्र. Versioning disable करता येतं का?
नाही, फक्त suspend. जुनी versions राहतात.
प्र. Delete marker म्हणजे काय?
Version ID शिवाय delete ने टाकलेलं placeholder version. GET 404 देतं; marker delete केला की object परत.
प्र. MFA Delete कोण आणि कसं चालू करतो?
Root user, CLI/API ने --mfa parameter सह.
प्र. Replication set केलं पण जुन्या files destination मध्ये नाहीत. का?
Replication फक्त नवीन objects copy करतं. S3 Batch Replication वापरा.
प्र. Versioning खर्च वाढू नये म्हणून काय?
Lifecycle rule: noncurrent versions N दिवसांनी expire, काही नवीन ठेवा.
घरी करून बघा
- त्याच Region मधल्या दुसऱ्या bucket ला tag env=prod filter सह SRR rule जोडा.
- JSON मध्ये lifecycle rule लिहा आणि put-bucket-lifecycle-configuration ने लावा.
थोडक्यात सांगायचं तर
- Versioning प्रत्येक version ठेवतं; suspend होतं, काढता येत नाही.
- साधा delete delete marker टाकतो; restore साठी marker delete.
- MFA Delete: root user, फक्त CLI.
- Lifecycle data स्वस्त classes मध्ये नेतं आणि वेळेवर delete करतं.
- SRR त्याच Region, CRR दुसऱ्या; दोन्हींना versioning; फक्त नवीन objects.
सराव Tasks
Sydney Surf School हा सिडनी मधला क्रीडा प्रशिक्षण व्यवसाय आहे. Liam O'Brien त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे AUD मध्ये मोजले जातात आणि AWS resources ap-southeast-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 12
सोपं CloudFormation: versioned bucket
का: IaC मुळे setup पुन्हा करता येतं.
काय करायचं: sydneysurf-docs नावाचा, versioning Enabled असलेला एक S3 bucket CloudFormation YAML मध्ये लिहा.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम Versioning सुरू करा
का: Versioning जुन्या copies ठेवतं, overwrite/delete undo करता येतो.
काय करायचं: sydneysurf-invoices-2026 bucket वर versioning enable करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Object versions दाखवा
का: जुनी copy restore करायला आधी तिचा version ID शोधा.
काय करायचं: sydneysurf-invoices-2026 bucket मधल्या price-list prefix खालच्या objects चे versions दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Object चा metadata वाचा
का: head-object file download न करता size, type व version दाखवतो.
काय करायचं: sydneysurf-media bucket मधल्या reels/v1.mp4 key चा metadata दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम File मधून bucket policy लावा
का: मोठा JSON file मध्ये ठेवणं सोपं; file:// ने CLI ती file वाचतो.
काय करायचं: policy.json मधली bucket policy sydneysurf-web bucket ला लावा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Storage खर्च
का: Storage per GB-month.
काय करायचं: S3 Standard मध्ये 500 GB, USD 0.023 per GB-month. Monthly खर्च USD?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम Public website साठी bucket policy
का: Static website bucket ने सगळ्यांना files वाचू द्याव्या.
काय करायचं: sydneysurf-site मधल्या प्रत्येक object वर कोणालाही (*) s3:GetObject करू देणारी bucket policy लिहा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम एका folder मध्ये फक्त upload
का: Field staff files टाकू शकतात पण वाचू/delete करू शकत नाहीत.
काय करायचं: sydneysurf-data मध्ये फक्त uploads/ prefix खाली s3:PutObject allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड S3 lifecycle rule (JSON)
का: जुन्या files आपोआप स्वस्त storage मध्ये.
काय करायचं: Lifecycle JSON: एक Enabled rule, prefix logs/, 90 दिवसांनी GLACIER.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड File मधून lifecycle rules लावा
का: Lifecycle rules जुन्या files स्वस्त class मध्ये नेतात व नंतर आपोआप delete करतात.
काय करायचं: lifecycle.json मधली lifecycle configuration sydneysurf-logs bucket ला लावा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Replication सुरू करा
का: Replication नवे objects दुसऱ्या bucket मध्ये, अगदी दुसऱ्या Region मध्ये (CRR) copy करतं.
काय करायचं: replication.json मधली replication configuration sydneysurf-invoices-2026 bucket ला लावा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड HTTPS शिवाय requests deny
का: aws:SecureTransport false म्हणजे साधं HTTP; ते deny करा.
काय करायचं: Bucket policy: aws:SecureTransport false असेल तेव्हा sydneysurf-data व objects वर (*) ला s3:* deny.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.







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