12/12/2022
- Introduktion til App-udvikling med AWS
- Hvad er AWS Amplify?
- Hvorfor bruge AWS til mobil app-udvikling?
- Hvordan får man AWS-legitimationsoplysninger til din app?
- Brug af GraphQL med AWS Amplify
- Tabel: Sammenligning af Amplify-komponenter
- Dataoverførsel fra AWS til Amazon S3
- Ofte Stillede Spørgsmål (FAQ)
- Konklusion
Introduktion til App-udvikling med AWS
At udvikle mobile og webapplikationer i dag kræver en robust og skalerbar infrastruktur. Amazon Web Services (AWS) tilbyder en omfattende suite af værktøjer og tjenester, der gør det nemmere end nogensinde at bygge, deployere og administrere dine applikationer. Især AWS Amplify er blevet et nøgleelement for mange udviklere, der ønsker at skabe fuldstack applikationer med en problemfri oplevelse fra frontend til backend. Denne guide vil tage dig igennem de essentielle skridt og koncepter, du skal kende for at udnytte AWS's potentiale til din app-udvikling.

Hvad er AWS Amplify?
AWS Amplify er en komplet løsning designet til at hjælpe frontend web- og mobiludviklere med at bygge, forbinde og hoste fuldstack applikationer på AWS. Det giver dig fleksibiliteten til at udnytte det brede spektrum af AWS-tjenester, efterhånden som dine behov udvikler sig. Amplify er bygget op omkring flere kerneprodukter, der kan arbejde uafhængigt af hinanden:
- Amplify CLI: Et kommandolinjeværktøj, der konfigurerer alle de nødvendige backend-tjenester til din applikation. Det simplificerer processen med at opsætte ting som autentificering, databaser, fillagring og meget mere.
- Amplify Libraries: Klientbiblioteker, der gør det muligt at integrere almindelige brugsscenarier som autentificering, datahåndtering og fillagring ved at forbinde din frontend-app til dine backend-ressourcer.
- Amplify Studio: Et visuelt udviklingsmiljø, der lader dig bygge din fuldstack web- og mobilapplikation på en intuitiv måde. Du kan konvertere designs fra værktøjer som Figma til genbrugelige kodekomponenter.
- Amplify UI Components: UI-biblioteker til populære frontend-frameworks som React, React Native, Angular, Vue og Flutter, der gør det nemt at bygge en konsistent brugergrænseflade.
- Amplify Hosting: En AWS-tjeneste, der tilbyder en Git-baseret workflow for kontinuerlig implementering og hosting af fuldstack webapplikationer.
Amplify gør det muligt at fokusere på din applikations frontend og kernefunktionalitet, mens AWS håndterer den underliggende infrastruktur.
Hvorfor bruge AWS til mobil app-udvikling?
AWS tilbyder en række markante fordele for mobil app-udvikling:
- Skalerbarhed: AWS's cloud-infrastruktur kan automatisk skalere op eller ned baseret på din applikations trafik og behov, hvilket sikrer optimal ydeevne og omkostningseffektivitet.
- Bredt udvalg af tjenester: Fra databaser (RDS, DynamoDB), serverløse funktioner (Lambda), AI/ML-tjenester til IoT og meget mere, AWS har en løsning til næsten ethvert tænkeligt behov.
- Pålidelighed og sikkerhed: AWS har et af de mest modne og sikre cloud-økosystemer globalt, med strenge sikkerhedsforanstaltninger og høj tilgængelighed.
- Global Rækkevidde: AWS har datacentre over hele verden, hvilket giver dig mulighed for at deployere din applikation tæt på dine brugere og reducere latenstid.
- Innovationshastighed: AWS investerer konstant i nye teknologier og tjenester, hvilket giver dig adgang til de nyeste værktøjer til at forbedre din applikation.
Med Amplify kan du yderligere accelerere din udviklingsproces. Du kan oprette en forenet backend til dine iOS-, Android-, Flutter-, web- og React Native-apps. Når Amplify er konfigureret, vil din projekt have både realtids- og offline-funktionalitet. Amplify Studio kan desuden hjælpe med at bygge rige brugergrænseflader ved at konvertere designs fra Figma til genbrugelige kodekomponenter, hvilket sparer tusindvis af timer med kodning.

Hvordan får man AWS-legitimationsoplysninger til din app?
For at din app kan interagere med AWS-tjenester, skal den have de korrekte legitimationsoplysninger. AWS Cognito Identity er en credentials provider, der gør det muligt for din app at få adgang til AWS-tjenester uden at skulle indsætte private legitimationsoplysninger direkte i din applikations kode. Dette er en kritisk sikkerhedsforanstaltning.
Processen involverer typisk følgende trin:
- Opret en Identitetspool i Cognito: En identitetspool er en samling af brugeridentitetsdata, der er specifikke for din AWS-konto. Den giver konfigurerbare IAM-roller, der bestemmer, hvilke AWS-tjenester dine brugere har adgang til.
- Log ind på Cognito Console: Naviger til Amazon Cognito-konsollen.
- Administrer Føderede Identiteter: Klik på "Manage Federated Identities".
- Opret en ny identitetspool: Klik på "Create new identity pool".
- Navngiv din identitetspool: Indtast et navn for din pool.
- Tillad adgang for ikke-autentificerede identiteter: Marker afkrydsningsfeltet for at tillade adgang for brugere, der ikke er logget ind. Dette er ofte nyttigt for at give anonym adgang til visse funktioner.
- Opret Pool: Klik på "Create Pool".
- Tillad Roller: Klik på "Allow" for at oprette to standard IAM-roller: én for autentificerede brugere og én for ikke-autentificerede brugere. Disse roller definerer tilladelserne.
For at integrere Cognito Identity med din app skal du typisk videregive din credentials provider-objekt til konstruktøren af den AWS-klient, du bruger. Her er et eksempel på, hvordan det kan se ud i Android (Java/Kotlin):
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), "DINIDENTITYPOOLID", /* Erstat med din Identity Pool ID */ Regions.USEAST1 /* Erstat med din Identity Pool region */ ); // Nu kan du bruge credentialsProvider med AWS-klienter // F.eks. AmazonS3 s3 = new AmazonS3Client(credentialsProvider); Husk at erstatte DINIDENTITYPOOLID og Regions.USEAST1 med dine specifikke værdier.

Brug af GraphQL med AWS Amplify
Amplify understøtter GraphQL, en data-sprog udviklet til at hente data fra API'er på en effektiv måde. GraphQL giver klienten mulighed for at specificere præcis, hvilke data den har brug for, og i hvilket format, hvilket reducerer overflødig dataoverførsel. Med Amplify kan du definere et GraphQL-skema, der bruges til at provisionere backend-ressourcer, gemme data lokalt, synkronisere til en cloud-database og modtage opdateringer via realtids-abonnementer.
Fordele ved GraphQL i Amplify:
- Effektiv datahentning: Hent kun de data, du har brug for.
- Stærkt typesystem: Sikrer dataintegritet og forbedrer udvikleroplevelsen.
- Realtids-abonnementer: Modtag øjeblikkelige opdateringer, når data ændres.
- Udviklerværktøjer: Amplify Studio og CLI integrerer problemfrit med GraphQL.
For at komme i gang med GraphQL i Amplify, kan du definere dit skema og lade Amplify CLI provisionere de nødvendige ressourcer, typisk en Amazon DynamoDB-tabel, der er eksponeret via AWS AppSync.

Tabel: Sammenligning af Amplify-komponenter
| Komponent | Beskrivelse | Primær Anvendelse |
|---|---|---|
| Amplify CLI | Kommandolinjeværktøj til backend-konfiguration | Opsætning af cloud-ressourcer |
| Amplify Libraries | Klientbiblioteker til frontend-integration | Forbindelse af app til backend (Auth, Data, Storage) |
| Amplify Studio | Visuelt udviklingsmiljø | Hurtig prototyping, UI-bygning, backend-konfiguration |
| Amplify UI Components | Forudbyggede UI-komponenter | Hurtig UI-udvikling for populære frameworks |
| Amplify Hosting | Fuldt administreret hosting | CI/CD, deployment af webapps |
Dataoverførsel fra AWS til Amazon S3
Amazon S3 (Simple Storage Service) er en objektlagringstjeneste, der er ideel til at gemme og hente enhver mængde data, når som helst, hvor som helst. Hvis du har data i andre AWS-tjenester, eller hvis du vil uploade filer til din app, er S3 ofte den foretrukne løsning. Amplify Libraries giver nemme måder at interagere med S3 på, for eksempel til fil-uploads og downloads.
Du kan konfigurere S3 som en backend-ressource ved hjælp af Amplify CLI. Derefter kan du bruge Amplify Storage-biblioteket i din frontend-kode til at uploade billeder, dokumenter eller andre filer direkte til din S3-bucket. Tilladelserne til, hvem der kan læse og skrive til S3, styres typisk via IAM-rollerne, der er forbundet med din Cognito Identity Pool.

Ofte Stillede Spørgsmål (FAQ)
- Hvad er forskellen på Amplify Gen 1 og Gen 2?
- Amplify Gen 2 er en nyere version, der introducerer et data-centreret tilgang til backend-udvikling med fokus på TypeScript og en forbedret udvikleroplevelse. Mens Gen 1 er mere baseret på CLI-kommandoer, giver Gen 2 dig mulighed for at definere din backend deklarativt i kode.
- Kan jeg bruge Amplify med eksisterende AWS-ressourcer?
- Ja, hvis du allerede har AWS-ressourcer som Cognito, S3 eller andre, kan du bruge Amplify Studio til at integrere dem med dit Amplify-projekt eller importere eksisterende ressourcer.
- Hvordan håndterer Amplify offline-funktionalitet?
- Amplify Libraries, især Data-kategorien, bruger lokale datalagre (f.eks. IndexedDB i browsere eller SQLite på mobile enheder) til at cache data. Når der er en netværksforbindelse, synkroniseres de lokale ændringer automatisk med cloud-databasen (typisk DynamoDB via AppSync).
- Er AWS Amplify gratis?
- Selve Amplify-værktøjerne (CLI, Libraries, Studio) er gratis. Du betaler dog for de underliggende AWS-tjenester, som din app bruger (f.eks. API Gateway, Lambda, DynamoDB, S3, Cognito). AWS tilbyder en generøs gratis niveau for mange af disse tjenester, hvilket gør det muligt at komme i gang uden omkostninger.
Konklusion
AWS Amplify forenkler processen med at bygge og hoste moderne, fuldstack applikationer. Ved at udnytte tjenester som Cognito Identity, S3 og GraphQL gennem Amplify's CLI, Libraries og Studio, kan udviklere fokusere på at skabe værdi for deres brugere i stedet for at bekymre sig om kompleks infrastruktur. Uanset om du bygger en simpel mobilapp eller en skalerbar webplatform, tilbyder AWS og Amplify de værktøjer, du behøver for at lykkes.
Hvis du vil læse andre artikler, der ligner Udvikl Apps med AWS: En Komplet Guide, kan du besøge kategorien Teknologi.
