08/09/2023
I en verden hvor digitale fotos fylder mere og mere, er effektiv og sikker opbevaring afgørende. Amazon Simple Storage Service (S3) fremstår som en kraftfuld og fleksibel løsning, der rækker langt ud over simpel fillagring. Denne artikel vil dykke ned i, hvordan du kan udnytte Amazon S3 til både at vise og administrere dine fotoalbum via en webbrowser og som en robust, omkostningseffektiv backup-strategi for dine værdifulde billeder. Uanset om du er en hobbyfotograf med et voksende bibliotek eller en professionel, der søger industriel pålidelighed, tilbyder S3 skalerbarhed og sikkerhed, der kan opfylde dine behov.

Lad os udforske de tekniske forudsætninger for at opsætte et browserbaseret fotoalbum og derefter se på de strategiske fordele ved at bruge S3 til langsigtet billedarkivering. Vi vil gennemgå trin-for-trin opsætningen af de nødvendige AWS-tjenester, herunder S3-buckets, Amazon Cognito-identitetspools og IAM-roller, samt den afgørende CORS-konfiguration, der muliggør interaktion mellem din browser og S3. Samtidig vil vi belyse de forskellige lagringsklasser, der tilbydes af S3, og hvordan de kan optimere dine omkostninger og adgangstider for din fotobackup.
Vær opmærksom på, at AWS SDK for JavaScript v2 er ved at udgå, og det anbefales at migrere til v3 for fremtidige projekter. Denne guide er baseret på principper, der ofte anvendes med SDK v2, men koncepterne forbliver relevante for v3.
Visning og Administration af Fotoalbum i Amazon S3
At oprette et browserbaseret fotoalbum i Amazon S3 giver dig mulighed for at vise og administrere dine billeder direkte fra en simpel HTML-side. Dette scenarie er ideelt for dem, der ønsker en tilpasset visningsløsning uden behov for komplekse serverinfrastrukturer. Kernen i denne løsning er brugen af AWS SDK for JavaScript, som muliggør direkte interaktion med din S3-bucket fra browseren.
Forudsætninger for at Komme i Gang
Før du kan begynde at vise eller uploade fotos, er der en række vigtige forudsætninger, der skal opfyldes. Disse trin sikrer, at din S3-bucket er korrekt konfigureret, og at din webapplikation har de nødvendige tilladelser til at interagere med den.
1. Opret en Amazon S3 Bucket
Din S3-bucket er det primære lager for dine fotos og album. Når du opretter den, skal du:
- Noter bucketnavnet: Dette skal bruges i din kode og i andre konfigurationer.
- Vælg en AWS-region: Det er afgørende, at denne region er den samme som den, du bruger til din Amazon Cognito-identitetspool.
- Konfigurer bucket-tilladelser: For at tillade browseradgang skal du sikre, at bucket'en har de rette tilladelser. For simpel visning kan du give offentlig læseadgang til objekter. For at tillade upload og sletning skal du have både læse- og skrivetilladelser på objekter.
2. Opret en Amazon Cognito Identitetspool
Amazon Cognito giver din browserbaserede applikation midlertidige, begrænsede legitimationsoplysninger til at få adgang til dine AWS-ressourcer uden at kræve brugerlogin. Du skal oprette en identitetspool med adgang aktiveret for ikke-autentificerede brugere. Noter identitetspool-ID'et, da det er nødvendigt for at konfigurere SDK'en i din JavaScript-kode.
3. Konfigurer IAM Roller og Politikker
Den identitetspool, du opretter i Cognito, vil automatisk oprette en IAM-rolle for ikke-autentificerede brugere. Du skal tilknytte en brugerdefineret politik til denne IAM-rolle for at give den de specifikke tilladelser til din S3-bucket. Dette er et afgørende sikkerhedstrin.
For at vise fotos skal rollen have `s3:ListBucket` tilladelse til din bucket (f.eks. `arn:aws:s3:::DIT_BUCKET_NAVN`) og `s3:GetObject` tilladelse til objekterne i bucket'en (f.eks. `arn:aws:s3:::DIT_BUCKET_NAVN/*`).
For at uploade og slette fotos/albums skal rollen yderligere have `s3:PutObject`, `s3:DeleteObject`, `s3:PutObjectAcl` tilladelser. En typisk politik vil se således ud:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DIT_BUCKET_NAVN",
"arn:aws:s3:::DIT_BUCKET_NAVN/*"
]
}
]
}Vigtig sikkerhedsadvarsel: At give skriveadgang til ikke-autentificerede brugere betyder, at enhver med adgang til din applikation kan uploade og slette filer i din bucket. I et produktionsmiljø anbefales det stærkt at implementere strammere sikkerhed, f.eks. ved at kræve autentificerede brugere og mere granulær objektejerskabskontrol.
4. Konfigurer CORS (Cross-Origin Resource Sharing)
Da din browserbaserede applikation sandsynligvis vil blive hostet på et andet domæne end S3 (eller endda lokalt), skal du konfigurere CORS-regler på din S3-bucket for at tillade cross-origin anmodninger. Uden en korrekt CORS-konfiguration vil din browser blokere anmodninger til S3.
For visning skal du tillade `HEAD` og `GET` metoder. For at understøtte upload og sletning skal du også inkludere `PUT`, `POST` og `DELETE` metoder. Tilladte origins kan indstilles til `*` for udvikling, men bør være mere specifikke i et produktionsmiljø.

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"HEAD",
"GET",
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"ETag"
]
}
]5. Forbered Album og Fotos (kun for visningseksemplet)
Hvis du kun tester visningsfunktionen, skal du manuelt oprette nogle mapper (f.eks. "album1", "album2") i din S3-bucket og uploade fotos til dem. For at sikre, at visningsskriptet kan filtrere korrekt, skal filnavnene på fotos starte med et enkelt underscore (`_`). Husk at give offentlig læseadgang til de individuelle fotos, når du uploader dem, hvis din bucket-politik ikke allerede dækker dette.
Den Tekniske Opsætning: HTML og JavaScript
Selve webapplikationen er bygget op omkring en simpel HTML-side, der indlæser AWS SDK for JavaScript og dit eget JavaScript-kode.
<!DOCTYPE html>
<html>
<head>
<!-- Erstat SDK_VERSION_NUMBER med den aktuelle version -->
<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.js"></script>
<script src="./dit_script_navn.js"></script>
<script>listAlbums();</script>
</head>
<body>
<p>Mit Fotoalbum</p>
<div id="app"></div>
</body>
</html>Konfigurering af SDK'en
I din JavaScript-fil (f.eks. PhotoViewer.js eller s3_photoExample.js) skal du først konfigurere AWS SDK med dine legitimationsoplysninger. Dette gøres ved at initialisere AWS-konfigurationen med din region og Amazon Cognito Identity Pool ID.
var albumBucketName = "DIT_BUCKET_NAVN";
var bucketRegion = "DIN_REGION";
var IdentityPoolId = "DIT_IDENTITETSPOOL_ID";
AWS.config.update({
region: bucketRegion,
credentials: new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId,
}),
});
var s3 = new AWS.S3({
apiVersion: "2006-03-01",
params: { Bucket: albumBucketName },
});Funktioner for Visning og Håndtering
Den resterende kode er organiseret i funktioner, der håndterer de forskellige interaktioner med S3:
listAlbums(): Denne funktion brugers3.listObjects({ Delimiter: "/" })til at liste alle "mapper" (album) i din bucket. Den filtrerer efterCommonPrefixes, som repræsenterer mapperne, og genererer HTML til visning af albumlisten.viewAlbum(albumName): For at vise indholdet af et specifikt album kalder denne funktions3.listObjects({ Prefix: albumPhotosKey }). Den henter en liste over alle objekter (fotos) i det angivne album og genererer HTML for at vise billederne på siden.createAlbum(albumName): Denne funktion validerer albumnavnet og brugers3.headObjecttil at tjekke, om albummet allerede eksisterer. Hvis ikke, oprettes det ved at kaldes3.putObjectmed en nøgle, der ender med et skråstreg (f.eks.album1/), hvilket får S3 til at behandle det som en mappe.addPhoto(albumName): Til upload af fotos brugesAWS.S3.ManagedUploadklassen, som understøtter flerdelt upload og er robust over for netværksfejl. Filen vælges via et inputfelt, og derefter uploades den til det valgte album.deletePhoto(albumName, photoKey): Denne funktion sletter et specifikt foto fra et album ved at kaldes3.deleteObjectmed fotoets nøgle.deleteAlbum(albumName): For at slette et helt album kalder denne funktions3.deleteObjects. Dette kræver typisk, at albummet er tomt, eller at du først lister og sletter alle objekter inden i albummet.
Disse funktioner, kombineret med den korrekte AWS-konfiguration, danner grundlaget for en fuldt funktionel browserbaseret fotoapplikation i Amazon S3. Husk altid at prioritere sikkerhed, især når du håndterer upload- og slettefunktioner.
Amazon S3 som Din Ultimative Fotobackup
Ud over at fungere som en platform for webbaserede fotoalbum er Amazon S3 en fremragende løsning for langsigtet, omkostningseffektiv fotobackup. For mange fotografer er traditionelle synkroniseringstjenester som Dropbox og Google Drive ofte et overkill, da RAW-filer og redigerede originaler sjældent kræver konstant, øjeblikkelig adgang. Her skinner S3 igennem med sine differentierede lagringsklasser.
Hvorfor S3 frem for Traditionelle Tjenester?
Den primære fordel ved S3 som backup-løsning er dens prismodel, især for "afkølet" (cold) lagring. Mens Dropbox og Google Drive typisk koster omkring 0,01 USD pr. GB for deres standardabonnementer, tilbyder S3 markant lavere priser, især for data, der sjældent tilgås.
| S3 Lagringsklasse | Pris pr. GB (eksempel, ca.) | Ækvivalent GB for 0,01 USD/GB |
|---|---|---|
| Standard Storage | 0,039 USD | 0,256 GB |
| Infrequent Access (IA) | 0,020 USD | 0,512 GB |
| Glacier Storage | 0,006 USD | 1,666 GB |
Som tabellen viser, kan du opbevare en betydeligt større mængde data i S3 for den samme pris, især hvis du udnytter de koldere lagringsklasser. Dette gør S3 til en yderst attraktiv mulighed for store fotobiblioteker, hvor omkostningerne ved traditionelle tjenester hurtigt kan løbe op.
Forstå S3's Lagringsklasser
S3 tilbyder flere lagringsklasser, hver optimeret til forskellige adgangsmønstre og omkostningspunkter:
- Standard Storage: Ideel til ofte tilgåede data, der kræver lav latens og høj gennemstrømning. Dette er den dyreste klasse, men tilbyder øjeblikkelig adgang.
- Infrequent Access (IA): Designet til data, der sjældent tilgås, men som stadig kræver hurtig adgang, når det er nødvendigt. Prisen pr. GB er lavere end Standard, men der er et mindre gebyr for datahentning.
- Glacier Storage: Til arkivering af data, der sjældent eller aldrig tilgås. Dette er den billigste lagringsklasse, men datahentning kan tage minutter til timer, og der er omkostninger forbundet med at "tø" data op og hente dem.
De koldere og billigere lagringsklasser har to primære "barrierer":
- Tid til adgang: Filer er muligvis ikke tilgængelige øjeblikkeligt, men kan kræve en vis tid for at blive tilgængelige efter en anmodning.
- Omkostninger ved adgang: "Optøning" af filer tilbage til Standard Storage (eller direkte hentning) koster et gebyr, og download af dem koster et andet. Det er vigtigt at sætte sig ind i prislisten for disse operationer, men for typisk fotobackup, hvor retrieval er sjælden, er disse omkostninger ofte minimale.
Automatiser Din Backup med Livscykluspolitikker
En af de mest magtfulde funktioner i S3 er Livscykluspolitikker. Disse politikker giver dig mulighed for automatisk at administrere overgangen af data mellem forskellige lagringsklasser over tid. For fotografer betyder det, at du kan indstille regler for, at dine nyeste album (som du måske vil redigere igen) opbevares i Standard Storage i en periode, før de automatisk flyttes til IA og derefter til Glacier.
En typisk konfiguration kunne være:
- Efter 30 dage fra upload: Overfør til Infrequent Access (IA).
- Efter 60 dage fra upload: Overfør til Glacier.
Dette sikrer, at dine seneste fotos er let tilgængelige, mens ældre, arkiverede fotos automatisk flyttes til mere omkostningseffektive lagringsklasser. Det er vigtigt at bemærke, at der kan være strafgebyrer for at slette eller overføre filer fra koldere klasser (f.eks. Glacier) for tidligt (før 30 eller 60 dage).
Din Backup Workflow
En typisk workflow for fotografer, der bruger S3 til backup, kan se således ud:
- Efter endt redigering af et album, hvor RAW-filer, DNG'er og endelige JPG'er er klar.
- De endelige JPG'er uploades til din foretrukne online fototjeneste (f.eks. Google Fotos).
- Hele albummappen, inklusive RAW/DNG-filer og redigeringsindstillinger, uploades til din S3-bucket. Dette kan gøres med forskellige tredjepartsværktøjer eller scriptes via AWS CLI/SDK.
- S3's livscykluspolitikker håndterer automatisk overgangen af disse filer til koldere lagringsklasser over tid.
Denne proces er bemærkelsesværdigt enkel, når den er sat op, og giver dig ro i sindet, velvidende at dine originale filer er sikkert opbevaret.
Omkostningerne i Praksis
De faktiske omkostninger ved S3 kan virke komplekse i starten på grund af den detaljerede prismodel, der inkluderer lagring, dataoverførsel og anmodningsgebyrer. Den første måned kan være lidt højere, da du måske "roder rundt" med filer, opdager den bedste struktur og overfører store mængder data. Men når din workflow er stabiliseret, vil de månedlige omkostninger typisk falde drastisk.

S3 fakturerer for GB-måned-timer, hvilket betyder, at du kun betaler for den faktiske tid, dine data er lagret. En stor del af omkostningerne i koldere lagringsklasser er relateret til datahentning. Men selv en fuld gendannelse af et stort fotobibliotek fra Glacier er ofte overraskende billig, hvilket gør det til en yderst omkostningseffektiv løsning selv i katastrofetilfælde.
Sikkerhed og Redundans
Amazon S3 er en industriel løsning, der tilbyder enestående holdbarhed (typisk 99,999999999% eller "elleve ni'ere") og tilgængelighed. Data replikeres automatisk på tværs af flere enheder og faciliteter inden for en AWS-region, hvilket minimerer risikoen for datatab. Selvom det er en cloud-tjeneste, føler mange, at S3 er endnu sikrere end mange forbrugertjenester, da interaktionerne med den er mere begrænsede og ofte automatiserede, hvilket reducerer risikoen for menneskelige fejl.
For den ultimative sikkerhed anbefales en flerlags backup-strategi. Dette kan omfatte:
- De seneste års fotos opbevares på din laptop.
- Hele biblioteket i Amazon S3.
- En kopi på en ekstern harddisk, der opbevares sikkert.
- En kopi på en NAS (Network Attached Storage) derhjemme.
- En tabsgivende kopi (f.eks. JPG'er) på en forbruger cloud-tjeneste som Google Fotos.
Denne kombination af lokal, ekstern og cloud-baseret lagring giver maksimal fleksibilitet og redundans, så dine dyrebare minder er sikret mod næsten enhver uforudset begivenhed.
Ofte Stillede Spørgsmål (FAQ)
Hvad er Amazon S3?
Amazon S3 (Simple Storage Service) er en objektlagringstjeneste, der tilbyder branchens førende skalerbarhed, datatilgængelighed, sikkerhed og ydeevne. Den kan bruges til en bred vifte af lagringsscenarier, herunder backup, arkivering, hosting af statiske websteder og cloud-native applikationer.
Er S3 egnet til personlig fotobackup?
Ja, absolut. S3 er en fremragende løsning for personlig fotobackup, især for store biblioteker, da dens omkostningseffektive lagringsklasser (som IA og Glacier) kan reducere de samlede omkostninger markant sammenlignet med traditionelle synkroniseringstjenester.
Hvad er forskellen på S3 Standard, IA og Glacier?
De adskiller sig primært i adgangstid og omkostninger. Standard er for ofte tilgåede data med øjeblikkelig adgang. Infrequent Access (IA) er for data, der sjældent tilgås, men stadig skal kunne hentes hurtigt, med lavere lagringsomkostninger og små hentningsgebyrer. Glacier er til arkivering af data, der sjældent hentes, og tilbyder de laveste lagringsomkostninger, men med potentielle forsinkelser og højere gebyrer ved hentning.
Er det dyrt at hente fotos fra Glacier?
Det afhænger af mængden og hastigheden af hentningen. Selvom der er gebyrer for at "tø op" og hente data fra Glacier, er omkostningerne for en fuld gendannelse af et typisk personligt fotobibliotek ofte overraskende lave, især når man sammenligner det med den månedlige besparelse ved at bruge Glacier til langvarig opbevaring.
Kan jeg automatisere overførsel mellem lagringsklasser?
Ja, du kan bruge S3 Livscykluspolitikker til automatisk at flytte objekter mellem forskellige lagringsklasser baseret på alder eller andre kriterier. Dette hjælper med at optimere dine omkostninger og sikre, at dine data altid er i den mest passende lagringsklasse.
Er mine fotos sikre i S3?
Amazon S3 er bygget med fokus på sikkerhed og holdbarhed. Dine data er krypterede og distribueret over flere fysiske lokationer. Med korrekt konfiguration af IAM-tilladelser og bucket-politikker kan du sikre, at kun autoriserede brugere (eller din applikation) har adgang til dine fotos. Husk dog, at åbning af adgang for "ikke-autentificerede brugere" til skrivning kræver ekstra forsigtighed.
Skal jeg bruge AWS SDK v2 eller v3?
AWS har annonceret, at SDK for JavaScript v2 snart ikke længere understøttes. Det anbefales kraftigt at migrere til AWS SDK for JavaScript v3 for alle nye projekter og opdatere eksisterende projekter, når det er muligt, for at sikre løbende support og adgang til nye funktioner og forbedringer.
Hvis du vil læse andre artikler, der ligner Dine Fotos i Skyen: Amazon S3 Guide, kan du besøge kategorien Teknologi.
