Ravindra BagaleCourses & study guides English

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 कायमचं काढतो.

report.csv चं आयुष्यPUT v1पहिला uploadPUT v2overwrite, v1 राहतोDELETEवर delete markerGET → 404Marker deletev2 परत current
Version ID delete होईपर्यंत काहीच हरवलं नाही.

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 पण करू शकतो.

DataRuleका
logs/30 d → Standard-IA, 90 d → Glacier Flexible, 365 d → expireकाळानुसार कमी वाचले जातात
backups/mysql/1 d → Glacier Instant, 180 d → Deep ArchiveAudit साठी, क्वचित restore
Noncurrent versionsNoncurrent झाल्यावर 30 दिवसांनी expire, 3 नवीन ठेवाVersioning खर्च control
Incomplete multipart7 दिवसांनी 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 देऊ शकते.

हे काय आहे?

मुद्दाSRRCRR
Destinationत्याच Regionदुसऱ्या Region
वापरLog aggregation, prod → test copy, data sovereigntyDisaster 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 खर्चात.
DR साठी CRRApp upload करतंMumbai bucket मध्येSource bucketap-south-1, versionedReplication rulerole + filterDestination bucketap-southeast-1, versionedRegion outage?Singapore मधून वाचा
Replication asynchronous, बहुतेक seconds ते minutes.

7. Lab: versioning, restore, lifecycle आणि CRR

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

  1. ap-south-1 मध्ये yourname-ver-src, Bucket Versioning: Enable.
  2. 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/.
  3. aws s3api list-object-versions --bucket yourname-ver-src --query "Versions[].[VersionId,IsLatest]". अपेक्षित: दोन IDs, एक true.
  4. जुनं वाचा: aws s3api get-object --bucket yourname-ver-src --key r.txt --version-id <old-id> old.txt; cat old.txt. अपेक्षित: v1.
  5. Delete: aws s3 rm s3://yourname-ver-src/r.txt, मग aws s3 ls s3://yourname-ver-src/. अपेक्षित: रिकामं.
  6. 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 परत.
  7. Management › Create lifecycle rule: name logs-tiering, prefix logs/, current versions 30 दिवसांनी Standard-IA, 90 ला Glacier Flexible Retrieval, 365 ला expire, noncurrent 30 दिवसांनी permanently delete, incomplete multipart 7 दिवसांनी delete. Save.
  8. तपासा: aws s3api get-bucket-lifecycle-configuration --bucket yourname-ver-src.
  9. ap-southeast-1 मध्ये yourname-ver-dst, versioning Enable.
  10. 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.
  11. 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

  1. Replication rule delete. दोन्ही buckets console च्या Empty button ने रिकामे करा (सगळी versions delete), मग delete.
  2. 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, काही नवीन ठेवा.

घरी करून बघा

  1. त्याच Region मधल्या दुसऱ्या bucket ला tag env=prod filter सह SRR rule जोडा.
  2. JSON मध्ये lifecycle rule लिहा आणि put-bucket-lifecycle-configuration ने लावा.

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

  1. Versioning प्रत्येक version ठेवतं; suspend होतं, काढता येत नाही.
  2. साधा delete delete marker टाकतो; restore साठी marker delete.
  3. MFA Delete: root user, फक्त CLI.
  4. Lifecycle data स्वस्त classes मध्ये नेतं आणि वेळेवर delete करतं.
  5. SRR त्याच Region, CRR दुसऱ्या; दोन्हींना versioning; फक्त नवीन objects.

सराव Tasks

या scenario बद्दल

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 मध्ये लिहा.

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

मध्यम Versioning सुरू करा

का: Versioning जुन्या copies ठेवतं, overwrite/delete undo करता येतो.

काय करायचं: sydneysurf-invoices-2026 bucket वर versioning enable करा.

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

मध्यम Object versions दाखवा

का: जुनी copy restore करायला आधी तिचा version ID शोधा.

काय करायचं: sydneysurf-invoices-2026 bucket मधल्या price-list prefix खालच्या objects चे versions दाखवा.

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

मध्यम Object चा metadata वाचा

का: head-object file download न करता size, type व version दाखवतो.

काय करायचं: sydneysurf-media bucket मधल्या reels/v1.mp4 key चा metadata दाखवा.

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

मध्यम File मधून bucket policy लावा

का: मोठा JSON file मध्ये ठेवणं सोपं; file:// ने CLI ती file वाचतो.

काय करायचं: policy.json मधली bucket policy sydneysurf-web bucket ला लावा.

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

मध्यम Storage खर्च

का: Storage per GB-month.

काय करायचं: S3 Standard मध्ये 500 GB, USD 0.023 per GB-month. Monthly खर्च USD?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम Public website साठी bucket policy

का: Static website bucket ने सगळ्यांना files वाचू द्याव्या.

काय करायचं: sydneysurf-site मधल्या प्रत्येक object वर कोणालाही (*) s3:GetObject करू देणारी bucket policy लिहा.

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

मध्यम एका folder मध्ये फक्त upload

का: Field staff files टाकू शकतात पण वाचू/delete करू शकत नाहीत.

काय करायचं: sydneysurf-data मध्ये फक्त uploads/ prefix खाली s3:PutObject allow करा.

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

अवघड S3 lifecycle rule (JSON)

का: जुन्या files आपोआप स्वस्त storage मध्ये.

काय करायचं: Lifecycle JSON: एक Enabled rule, prefix logs/, 90 दिवसांनी GLACIER.

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

अवघड File मधून lifecycle rules लावा

का: Lifecycle rules जुन्या files स्वस्त class मध्ये नेतात व नंतर आपोआप delete करतात.

काय करायचं: lifecycle.json मधली lifecycle configuration sydneysurf-logs bucket ला लावा.

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

अवघड Replication सुरू करा

का: Replication नवे objects दुसऱ्या bucket मध्ये, अगदी दुसऱ्या Region मध्ये (CRR) copy करतं.

काय करायचं: replication.json मधली replication configuration sydneysurf-invoices-2026 bucket ला लावा.

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

अवघड HTTPS शिवाय requests deny

का: aws:SecureTransport false म्हणजे साधं HTTP; ते deny करा.

काय करायचं: Bucket policy: aws:SecureTransport false असेल तेव्हा sydneysurf-data व objects वर (*) ला s3:* deny.

कसं करायचं:
  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: S3 versioning. प्रत्येक overwrite जुनं version ठेवतं. साधा delete delete marker टाकतो; GET 404. Marker delete केला की object परत. Suspend होतं, बंद कधीच नाही.
उजळणी card: S3 versioning · PNG download करा
उजळणी card: S3 lifecycle rules. Transitions N दिवसांनी data स्वस्त classes मध्ये नेतात. Expirations N दिवसांनी data delete करतात. Noncurrent versions expire आणि जुने multipart uploads abort पण. logs/: 30 d IA, 90 d Glacier, 365 d delete.
उजळणी card: S3 lifecycle rules · PNG download करा
उजळणी card: S3 replication SRR आणि CRR. SRR त्याच Region च्या bucket मध्ये copy; CRR दुसऱ्या Region मध्ये. दोन्ही buckets मध्ये versioning हवं. फक्त नवीन objects copy. जुन्यांसाठी Batch Replication. CRR = दुसऱ्या Region मध्ये disaster recovery.
उजळणी card: S3 replication SRR आणि CRR · PNG download करा
तुलना: SRR vs CRR. SRR: नवीन objects त्याच Region मधल्या bucket मध्ये. CRR: नवीन objects दुसऱ्या Region मधल्या bucket मध्ये.
तुलना: SRR vs CRR · PNG download करा
तुलना: Versioning enabled vs Versioning suspended. Versioning enabled: प्रत्येक PUT नवीन version ID; जुनी राहतात. Versioning suspended: नवीन writes ला version ID null; आधीची versions राहतात.
तुलना: Versioning enabled vs Versioning suspended · PNG download करा
मुलाखत card: Versioned bucket मधून कोणी files delete केल्या. Recover?. साध्या delete ने फक्त delete markers टाकले. DeleteMarkers list करा आणि ते marker versions delete करा. आधीची versions परत current होतात.
मुलाखत card: Versioned bucket मधून कोणी files delete केल्या. Recover? · PNG download करा
मुलाखत card: CRR चालू, पण target मध्ये जुन्या files नाहीत. का?. Replication rule नंतर बनलेले objects च copy करतं. आधीच्या objects साठी S3 Batch Replication चालवा. दोन्ही buckets मध्ये versioning आणि role ला write permission तपासा.
मुलाखत card: CRR चालू, पण target मध्ये जुन्या files नाहीत. का? · PNG download करा

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