Veiledning for å lage applikasjoner på Amazon Web Services (AWS)
Amazon Web Services (AWS) er en av verdens mest populære skybaserte databehandlingsplattformer. Med AWS kan du bygge og kjøre applikasjoner uten å kjøpe fysiske servere, sette opp serverplass eller vedlikeholde din egen infrastruktur. Denne artikkelen vil veilede deg gjennom hvordan du lager en enkel applikasjon på AWS ved hjelp av en vanlig tilnærming: distribusjon av en webapplikasjon ved hjelp av databehandlingstjenester (EC2), en administrert database (RDS) som et alternativ, og lagring og et domene om nødvendig. Selv om følgende eksempel er generelt, kan du bruke det på mange typer applikasjoner.
-
1. Innledende forberedelser: Regnskap og grunnleggende konsepter
Før du begynner, sørg for at du har en AWS-konto. Mange AWS-tjenester tilbyr et gratisnivå (gratis innenfor visse grenser) som er perfekt for øving.
Noen viktige konsepter du må forstå:
– Region: AWS-datasenterets beliggenhet (eksempel: Singapore/ap-southeast-1). Velg den nærmeste regionen for lav latens.
– IAM (Identitets- og tilgangsstyring): et tilgangsstyringssystem. Beste praksis: Ikke bruk root-kontoen til daglig arbeid.
– VPC (Virtual Private Cloud): et virtuelt nettverk der tjenestene dine kjører.
– Sikkerhetsgruppe: «brannmur» for å regulere innkommende/utgående tilgang fra serveren.
Ved å forstå disse fire tingene, vil det være mye enklere for deg å navigere i det grunnleggende om AWS.
-
2. Opprett IAM-brukere og sikre kontoer
Sikkerhet er alltid vår førsteprioritet. Logg inn på AWS-konsollen som root, og gjør deretter følgende:
1. Åpne IAM-tjenesten.
2. Opprett en ny bruker (f.eks. `admin-dev`) og merk av for Gi brukertilgang til AWS Management Console.
3. Gi tillatelse: for øving kan du bruke AdministratorAccess (selv om det i virkelige prosjekter burde være mer begrenset).
4. Aktiver MFA (flerfaktorautentisering) for å øke sikkerheten.
Når du er ferdig, logg ut fra root og logg inn med den nyopprettede IAM-brukeren.
-
3. Bestem applikasjonsarkitekturen
For denne opplæringen skal vi bygge en enkel arkitektur:
– EC2: kjøre webapplikasjoner (f.eks. Node.js/Express, Python Flask eller PHP).
– Valgfritt RDS: administrert MySQL/PostgreSQL-database, slik at dataene lagres pent.
– S3 (valgfritt): lagrer statiske filer som bilder, dokumenter eller sikkerhetskopier.
– Rute 53 (valgfritt): administrere domener.
– CloudWatch: grunnleggende overvåking.
Hvis du akkurat har begynt, fokuser på EC2 for å kjøre applikasjonene dine først.
-
4. Opprett en EC2-server
a) Opprett en instans
1. Logg inn på EC2-tjenesten.
2. Klikk på Start instans.
3. Velg operativsystem, for eksempel Ubuntu Server 22.04 LTS.
4. Velg instanstype: for gratisnivået bruk `t2.micro` eller `t3.micro` (avhengig av tilgjengelighet).
5. Opprett eller velg et nøkkelpar (f.eks. `aws-key.pem`). Oppbevar `.pem`-filen trygt, da den vil bli brukt til SSH.
b) Nettverks- og brannmurkonfigurasjon
– Sørg for at instansen er i standard VPC (bare for øving).
– Angi sikkerhetsgruppe:
– Port 22 (SSH) kun fra din IP-adresse (f.eks. «Min IP»)
– Port 80 (HTTP) av `0.0.0.0/0` (offentlig)
– Port 443 (HTTPS) fra `0.0.0.0/0` hvis senere bruk av SSL
Merk: Det er risikabelt å åpne SSH for offentligheten. Begrens alltid IP-adresser.
Klikk på Start og vent til instansen kjører.
-
5. Logg inn på serveren via SSH
På Windows kan du bruke WSL eller PuTTY. På macOS/Linux kan du gjøre det direkte fra terminalen.
1. Endre tillatelsesnøkkel:
"` bash
chmod 400 aws-key.pem
“
2. SSH til serveren (bruk offentlig IPv4 fra EC2):
"` bash
ssh -i aws-key.pem ubuntu@PUBLIC_IP
“
Hvis det lykkes, er du på AWS Ubuntu-serveren.
-
6. Installer webserver og applikasjonskjøretid
Her er et eksempel på en Node.js-applikasjon, siden den er mye brukt for moderne nett.
a) Oppdater og installer avhengigheter
"` bash
sudo apt oppdatering && sudo apt oppgradering -y
sudo apt install -y curl git
“
b) Installer Node.js (LTS-versjon)
"` bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
node -v
npm -v
“
-
7. Lag en enkel applikasjon
Opprett en prosjektmappe:
"` bash
mkdir minapp og cd minapp
npm init -y
npm install express
“
Opprett en `index.js`-fil:
«`js
const express = require("express");
const app = express();
app.get(“/”, (req, res) => {
res.send(“Hallo! Applikasjonen din kjører på AWS EC2.”);
});
app.listen(3000, () => console.log(“Serveren kjører på port 3000”));
“
Kjør applikasjonen:
"` bash
node index.js
“
Prøv å få tilgang fra en nettleser:
– `http://OFFENTLIG_IP:3000`
Port 3000 er imidlertid for øyeblikket ikke åpen i sikkerhetsgruppen. Du kan:
1) åpne port 3000 i sikkerhetsgruppen, eller
2) bruk en omvendt proxy (anbefales mer) slik at applikasjonen forblir på den interne porten, men kan nås via port 80/443.
-
8. Bruk av Nginx som en omvendt proxy (tilgang via port 80)
Installer Nginx:
"` bash
sudo apt install -y nginx
sudo systemctl aktivere nginx
sudo systemctl start nginx
“
Sett opp Nginx-konfigurasjon:
"` bash
sudo nano /etc/nginx/sites-available/myapp
“
Konfigurasjonsinnhold:
«nginx»
server {
hør 80;
servernavn _;
sted / {
proxy_passord http://127.0.0.1:3000;
proxy_http_versjon 1.1;
proxy_set_header Oppgrader $http_upgrade;
proxy_set_header Tilkobling 'oppgrader';
proxy_set_header Vert $ vert;
proxy_cache_bypass $http_upgrade;
}
}
“
Aktiver konfigurasjon:
"` bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
“
Nå tilgang:
– `http://OFFENTLIG_IP/`
Applikasjonen kjører på port 3000, men publikum får tilgang til den via port 80.
-
9. Kjøre applikasjoner permanent med PM2
For å forhindre at applikasjonen krasjer når SSH er frakoblet, bruk PM2:
"` bash
sudo npm install -g pm2
pm2 start index.js –navn på appen min
pm2-lagring
pm2 oppstart
“
Kommandoen `pm2 startup` vil gi ytterligere instruksjoner. Kjør den viste kommandoen for å få programmet til å kjøre automatisk når serveren starter på nytt.
-
10. (Valgfritt) Legge til en database med RDS
Hvis applikasjonen din krever en database, gjør RDS det enkelt fordi AWS administrerer sikkerhetskopiering, oppdateringer og skalering.
Korte steg:
1. Åpne RDS-tjenesten → Opprett database.
2. Velg MySQL eller PostgreSQL (Free Tier-regler er tilgjengelige på visse konfigurasjoner).
3. Angi brukernavn/passord.
4. Sørg for at RDS-instansen er i samme VPC som EC2.
5. Angi RDS-sikkerhetsgruppen til kun å godta tilkoblinger fra EC2-sikkerhetsgruppen (ikke fra den offentlige).
Når databasen er aktiv, hent RDS-endepunktet og koble til det fra applikasjonen din ved hjelp av databasedriveren.
-
11. (Valgfritt) Aktiver HTTPS med SSL-sertifikat
For produksjon er HTTPS obligatorisk. Typisk metode:
– Bruk et domene (f.eks. fra Route 53 eller en annen registrar).
– Installer SSL via Let's Encrypt (Certbot) på EC2.
Kort fortalt:
"` bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
“
Følg veiviseren for å velge et domene og aktivere HTTPS-omdirigering.
-
12. Overvåking og kostnader
AWS tilbyr CloudWatch for å se målinger som CPU, nettverk og spesifikke logger. Du bør også overvåke kostnadene dine for å unngå å gå glipp av noe.
Viktige tips:
– Aktiver faktureringsalarm i CloudWatch (f.eks. alarm hvis belastningen overstiger $5).
– Slå av instansen når den ikke er i bruk.
– Fjern ubrukte ressurser (lastfordelere, EBS, elastiske IP-adresser, øyeblikksbilder), da de fortsatt kan pådra seg kostnader.
-
Lukking
Gratulerer! Du har lært det grunnleggende om å bygge en applikasjon på AWS ved hjelp av EC2, kjøre en webapplikasjon , sette opp en Nginx reverse proxy og gjøre den alltid på med PM2. Du har også fått en oversikt over tilleggstjenester som RDS for databaser, S3 for lagring og HTTPS-sertifikater for sikkerhet.
Hvis du vil gå opp i nivå, er de neste trinnene vanligvis:
– Automatisert distribusjon med CI/CD (GitHub Actions + SSH eller AWS CodeDeploy),
– Bruk av containere med Docker og orkestrering som ECS eller EKS,
– Bruk av serverløs arkitektur med Lambda + API Gateway.
Hvis du ønsker det, kan du spesifisere hvilken type applikasjon du bygger (Node.js, Laravel, Django, React osv.) og dens tiltenkte formål (demo, produksjon, storskala). Jeg kan tilpasse veiledningen med mer spesifikke trinn.