Hoppa till innehåll

Migreringsguide · Fra AWS S3

Migrer fra AWS S3 til SIAX Objektlagring

S3-API'et er blevet branchestandard, og det er gode nyheder for alle, der vil flytte derfra. Vores objektlagring taler samme protokol med signatur v4, hvilket betyder, at jeres SDK'er, værktøjer og biblioteker fungerer uændret — I skifter endpoint og nøgler, ikke kode.

Grunden til at flytte er som regel trafikken. Lagring er billigt alle steder; det er udgående data, der koster hos AWS, og for alt, der serverer filer til slutbrugere, bliver egress-posten hurtigt større end lagerposten. Vores objektlagring koster 25 kr per 100 GB om måneden, med al data i EU.

Selve kopieringen er et løst problem — rclone klarer opgaven, og der er intet at opfinde. Arbejdet ligger et andet sted: IAM-roller har ingen pendant og skal erstattes af nøglepar og bucketpolitikker, og hvert sted i koden, der genererer presigned URL'er, skal skrives om, fordi signaturen er bundet til endpoint og region. Planlægger I for det, bliver migreringen udramatisk. Gør I ikke, opdages det på cutover-dagen.

Tidsforbrug

En eftermiddag for en bucket på nogle hundrede GB med et normalt antal objekter. Kopieringen er sjældent problemet — det er omskrivningen af adgang og presigned-flows, der tager tid, typisk en til tre dages udviklingsarbejde afhængigt af, hvor mange steder i koden der taler med S3. Arkiverede objekter i Glacier lægger døgn til ventetiden.

Nedetid

Ingen, hvis I kører dobbeltskrivning under overlappet: skriv til begge mål, læs fra S3, og skift læsningen, når delta-synken er ajour. Uden dobbeltskrivning har I brug for et skrivevindue i skrivebeskyttet tilstand under den sidste synk — fra nogle minutter til en time afhængigt af, hvor meget der er ændret siden bulk-kopien. CDN-omstillingen har sin egen hale styret af TTL.

01

Sådan gør du

  1. 1

    Kortlæg buckets på objektantal, ikke kun volumen

    Aflæs størrelse, antal objekter, storage class og versionering pr. bucket med aws s3 ls --summarize eller Storage Lens. Antallet af objekter styrer tidsforbruget mere end terabytene: ti millioner små filer tager længere tid end fem terabyte i store blokke. Notér også, hvad der skriver til hver bucket — den liste afgør, hvordan cutoveren skal se ud.

  2. 2

    Opret buckets og nøgler hos os, og sæt rclone op

    Opret de tilsvarende buckets og et nøglepar pr. applikation, ikke ét fælles til det hele. Konfigurér en rclone-remote af typen s3 mod vores endpoint, og sæt region og adresseringsstil, som vi angiver. Test med en håndfuld filer, og verificér at content-type og øvrig metadata følger med, før I sætter hele kopien i gang.

  3. 3

    Kør bulk-kopien

    rclone copy s3:bucket siax:bucket --transfers 32 --checkers 64 --fast-list er et fornuftigt udgangspunkt; skru op for parallelliteten, indtil gennemstrømningen flader ud. Kør gerne fra en instans i samme AWS-region som bucketen for at korte tiden — egress-omkostningen ud af AWS betaler I alligevel. Objekter i Glacier eller Deep Archive skal genskabes først, og det tager timer til døgn.

  4. 4

    Verificér, før I stoler på kopien

    rclone check --one-way sammenligner størrelse og kontrolsum pr. objekt. Sammenlign også det samlede objektantal mellem kilde og mål, og lav stikprøver på content-type, cache-control og andre headers, som applikationen rent faktisk læser. En kopi, der ser rigtig ud i bytes, men har mistet metadata, giver fejl, der først dukker op i browseren.

  5. 5

    Skriv adgangen om — det er det egentlige arbejde

    IAM findes ikke hos os: roller, instansprofiler, AssumeRole og betingelsesbaserede politikker erstattes af nøglepar og bucketpolitikker. Gennemgå hvert sted, der genererer presigned URL'er, og peg endpoint, region og signaturkonfiguration om, eftersom signaturen er bundet til alle tre. Opdatér CORS-reglerne, og test upload fra browseren — ikke kun fra serveren.

  6. 6

    Skift med dobbeltskrivning, og behold et tilbagegangstrin

    Lad applikationen skrive til begge mål under overlappet, og bliv ved med at læse fra S3, til delta-synken er ajour. Skift derefter læsningen, kør en sidste rclone sync, og peg CDN- eller CloudFront-distributionen om. Opret en uafhængig backup af bucketen (19 kr/100 GB) — replikering mellem to systemer er ikke det samme som backup — og behold S3-bucketen skrivebeskyttet i mindst 30 dage, før I sætter en lifecycle-regel, der sletter.

02

Hvad der faktisk er besværligt

  • IAM følger ikke med, og det er mere arbejde, end det lyder til. Roller på EC2- og ECS-instanser, AssumeRole mellem konti, tag-baserede betingelser og OIDC-federation fra CI erstattes af statiske nøglepar. Applikationer, der aldrig har skullet håndtere en hemmelighed, skal begynde at gøre det, hvilket påvirker deployflowet og ikke kun koden.
  • Presigned URL'er skal genereres om overalt. Signaturen er bundet til endpoint, region og nøgle, så backend, batchjob og eventuelle mobilklienter skal alle pege om og testes. Links, der allerede er sendt ud med lang gyldighed, holder op med at virke ved skiftet — planlæg for det, hvis I mailer downloadlinks.
  • Objekter i Glacier og Deep Archive kan ikke kopieres direkte. De skal genskabes først, hvilket koster penge og tager fra nogle timer til flere døgn afhængigt af hentningsniveau. For arkivtunge konti er det ofte dette trin, der styrer hele tidsplanen.
  • At forlade AWS koster egress: cirka 0,09 USD pr. GB over den frie pulje på omkring 100 GB om måneden, altså i størrelsesordenen 450 USD for 5 TB som engangsomkostning. AWS har siden 2024 tilbudt gebyrfri udflytning for kunder, der forlader platformen helt, men det kræver ansøgning via supporten og gælder ikke delvise flytninger. Tjek betingelserne, før I budgetterer.
  • Standardværktøjerne kopierer den aktuelle version af hvert objekt — ikke versionshistorik, ikke objekt-ACL'er, ikke lifecycle-regler og ikke replikering. S3 event notifications, der udløser Lambda, har ingen direkte pendant og skal bygges om på applikationssiden. Har I Object Lock i compliance-tilstand af regulatoriske årsager: afstem det med os, før I planlægger flytningen — ikke efter.
03

Omkostningseksempel

500 GB lagret og 200 GB udgående trafik om måneden på S3 Standard: cirka 0,023 USD/GB for lagringen og cirka 0,09 USD/GB for trafikken over den frie pulje, plus request-omkostninger — groft 300-350 kr/md. AWS' priser varierer mellem regioner og ændrer sig løbende, så regn på jeres egen faktura. De samme 500 GB hos os koster 125 kr/md. (25 kr per 100 GB). Dertil kommer engangsomkostningen ved at hente data ud af S3, cirka 45 USD for 500 GB, hvis I ikke får udflytningen gebyrfrit. Ved denne profil er flytningen tjent hjem på et par måneder. Ligger I på meget lagring og næsten ingen trafik, tager det længere, og gevinsten er mindre — det er værd at regne på, før I beslutter jer.

04

Ofte stillede spørgsmål

Skal vi skifte SDK eller skrive koden om?
Nej. API'et er S3-kompatibelt med signatur v4, så den samme SDK fungerer — I skifter endpoint, region og eventuelt adresseringsstil. Test multipart-uploads og CORS separat, det er der, forskelle plejer at vise sig.
Følger versionshistorikken med?
Nej. rclone og aws s3 sync kopierer den aktuelle version af hvert objekt. Har I brug for at bevare historikken, er det et selvstændigt projekt: enten kopiere hver version eksplicit som separate objekter, eller beholde S3-bucketen skrivebeskyttet som arkiv.
Hvad koster det at flytte data ud af AWS?
Cirka 0,09 USD pr. GB over den frie pulje, altså i størrelsesordenen 90 USD per terabyte. AWS har siden 2024 tilbudt gebyrfri udflytning for kunder, der forlader platformen helt, i tråd med EU's dataforordning, men det kræver ansøgning via supporten og godkendelse. Budgettér med omkostningen, og betragt den gebyrfrie vej som en bonus, hvis den bliver godkendt.
Kan vi blive på S3 for nogle buckets?
Ja. Mange begynder med de trafiktunge buckets, hvor egress-omkostningen gør mest forskel, og lader arkivdata blive i Glacier, til det alligevel skal udrenses. Hybrid er ofte det rette svar det første år.
Hvad gør vi med S3 event notifications og Lambda-triggers?
De skal bygges om. Det almindelige mønster er, at applikationen, der skriver objektet, også lægger jobbet i en kø, i stedet for at stole på, at lagringen genererer hændelsen. Det bliver mere eksplicit og nemmere at fejlsøge, men det er en omskrivning og skal med i tidsplanen.
Har I ISO 27001 eller SOC 2?
Nej, vi har hverken ISO 27001, SOC 2 eller PCI-DSS. Vi kan vise GDPR-compliance, databehandleraftale og at al data lagres inden for EU, og vi kører open source hele vejen, så I kan gennemgå implementeringen. Har I et hårdt certificeringskrav i et udbud, er AWS et bedre svar end os på netop det punkt, og det er mere ærligt at sige det ligeud.