Handledning om att skapa applikationer på Amazon Web Services (AWS)

Handledning om att skapa applikationer på Amazon Web Services (AWS)

Amazon Web Services (AWS) är en av världens mest populära molntjänstplattformar. Med AWS kan du bygga och köra applikationer utan att behöva köpa fysiska servrar, konfigurera serverutrymme eller underhålla din egen infrastruktur. Den här artikeln guidar dig genom hur du skapar en enkel applikation på AWS med hjälp av en vanlig metod: driftsätta en webbapplikation med hjälp av beräkningstjänster (EC2), en hanterad databas (RDS) som tillval, och lagring och en domän om det behövs. Även om följande exempel är generellt kan du tillämpa det på många typer av applikationer.

-

1. Inledande förberedelser: Redovisning och grundläggande begrepp

Innan du börjar, se till att du har ett AWS-konto. Många AWS-tjänster erbjuder en gratisnivå (gratis inom vissa gränser) som är perfekt för övning.

Några viktiga begrepp du behöver förstå:

– Region: AWS datacenterplats (exempel: Singapore/ap-southeast-1). Välj den närmaste regionen för låg latens.
– IAM (Identity and Access Management): ett åtkomsthanteringssystem. Bästa praxis: använd inte root-kontot för dagligt arbete.
– VPC (Virtual Private Cloud): ett virtuellt nätverk där dina tjänster körs.
– Säkerhetsgrupp: ”brandvägg” för att reglera inkommande/utgående åtkomst från servern.

Genom att förstå dessa fyra saker blir det mycket lättare för dig att navigera i AWS-grunderna.

-

2. Skapa IAM-användare och säkra konton

Säkerhet är alltid vår högsta prioritet. Logga in på AWS-konsolen som root och gör sedan följande:

1. Öppna IAM-tjänsten.
2. Skapa en ny användare (t.ex. `admin-dev`) och markera Ge användaren åtkomst till AWS Management Console.
3. Bevilja behörighet: för övning kan du använda AdministratorAccess (även om det i verkliga projekt borde vara mer begränsat).
4. Aktivera MFA (Multifaktorautentisering) för att öka säkerheten.

När du är klar, logga ut från root och logga in med den nyskapade IAM-användaren.

-

3. Bestäm applikationsarkitekturen

För den här handledningen kommer vi att bygga en enkel arkitektur:

– EC2: köra webbapplikationer (t.ex. Node.js/Express, Python Flask eller PHP).
– Valfritt RDS: hanterad MySQL/PostgreSQL-databas, så att data lagras prydligt.
– S3 (valfritt): lagrar statiska filer som bilder, dokument eller säkerhetskopior.
– Rutt 53 (valfritt): hantera domäner.
– CloudWatch: grundläggande övervakning.

Om du precis har börjat, fokusera på EC2 för att köra dina applikationer först.

-

4. Skapa en EC2-server

a) Skapa en instans
1. Logga in på EC2-tjänsten.
2. Klicka på Starta instans.
3. Välj operativsystem, till exempel Ubuntu Server 22.04 LTS.
4. Välj instanstyp: för Free Tier använd `t2.micro` eller `t3.micro` (beroende på tillgänglighet).
5. Skapa eller välj ett nyckelpar (t.ex. `aws-key.pem`). Förvara `.pem`-filen säkert eftersom den kommer att användas för SSH.

b) Nätverks- och brandväggskonfiguration
– Se till att instansen finns i standard-VPC:n (bara för övning).
– Ställ in säkerhetsgrupp:
– Port 22 (SSH) endast från din IP-adress (t.ex. `Min IP`)
– Port 80 (HTTP) av `0.0.0.0/0` (offentlig)
– Port 443 (HTTPS) från `0.0.0.0/0` om senare SSL används

Obs: Att öppna SSH för allmänheten är riskabelt. Begränsa alltid IP-adresser.

Klicka på Starta och vänta tills instansen körs.

-

5. Logga in på servern via SSH

På Windows kan du använda WSL eller PuTTY. På macOS/Linux kan du göra det direkt från terminalen.

1. Ändra behörighetsnyckel:
"'bash
chmod 400 aws-key.pem
”'
2. SSH till servern (använd offentlig IPv4 från EC2):
"'bash
ssh -i aws-key.pem ubuntu@PUBLIC_IP
”'

Om det lyckas är du på AWS Ubuntu-servern.

-

6. Installera webbserver och applikationskörning

Här är ett exempel på en Node.js-applikation, eftersom den används flitigt för den moderna webben.

a) Uppdatera och installera beroenden
"'bash
sudo apt uppdatering && sudo apt uppgradering -y
sudo apt install -y curl git
”'

b) Installera Node.js (LTS-version)
"'bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
nod -v
npm -v
”'

-

7. Skapa en enkel applikation

Skapa en projektmapp:

"'bash
mkdir minapp && cd minapp
npm init -y
npm installera express
”'

Skapa en `index.js`-fil:

"`js
const uttryck = require("uttryck");
const app = express();

app.get("/", (req, res) => {
res.send(“Hej! Din applikation körs på AWS EC2.”);
});

app.listen(3000, () => console.log(“Servern körs på port 3000”));
”'

Kör applikationen:

"'bash
nod index.js
”'

Försök att komma åt från en webbläsare:
– `http://PUBLIC_IP:3000`

Port 3000 är dock för närvarande inte öppen i säkerhetsgruppen. Du kan:
1) öppna port 3000 i säkerhetsgruppen, eller
2) använd en omvänd proxy (rekommenderas mer) så att applikationen förblir på den interna porten men kan nås via port 80/443.

-

8. Använda Nginx som en omvänd proxy (åtkomst via port 80)

Installera Nginx:
"'bash
sudo apt install -y nginx
sudo systemctl aktivera nginx
sudo systemctl start nginx
”'

Konfigurera Nginx-konfigurationen:
"'bash
sudo nano /etc/nginx/sites-available/myapp
”'

Konfigurationsinnehåll:
"`nginx
server {
lyssna 80;
servernamn _;

plats /
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Uppgradera $http_upgrade;
proxy_set_header Anslutning "uppgradera";
proxy_set_header Host $ host;
proxy_cache_bypass $http_upgrade;
}
}
”'

Aktivera konfiguration:
"'bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl ladda om nginx
”'

Nu åtkomst:
– `http://OFFENTLIG_IP/`

Applikationen körs på port 3000 men allmänheten kommer åt den via port 80.

-

9. Köra applikationer permanent med PM2

För att förhindra att applikationen kraschar när SSH är frånkopplad, använd PM2:

"'bash
sudo npm install -g pm2
pm2 start index.js –namn minapp
pm2 spara
pm2-start
”'

Kommandot `pm2 startup` ger ytterligare instruktioner. Kör det visade kommandot för att programmet ska köras automatiskt när servern startar om.

-

10. (Valfritt) Lägga till en databas med RDS

Om din applikation kräver en databas gör RDS det enkelt eftersom AWS hanterar säkerhetskopior, patchar och skalning.

Korta steg:
1. Öppna RDS-tjänsten → Skapa databas.
2. Välj MySQL eller PostgreSQL (Free Tier-regler är tillgängliga för vissa konfigurationer).
3. Ange användarnamn/lösenord.
4. Se till att RDS-instansen finns i samma VPC som EC2.
5. Ställ in RDS-säkerhetsgruppen så att den endast accepterar anslutningar från EC2-säkerhetsgruppen (inte från den offentliga).

När databasen är live, hämta RDS-slutpunkten och anslut till den från ditt program med hjälp av databasdrivrutinen.

-

11. (Valfritt) Aktivera HTTPS med SSL-certifikat

För produktion är HTTPS obligatoriskt. Typisk metod:
– Använd en domän (t.ex. från Route 53 eller en annan registrar).
– Installera SSL via Let's Encrypt (Certbot) på EC2.

Kort sagt:
"'bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
”'

Följ guiden för att välja en domän och aktivera HTTPS-omdirigering.

-

12. Övervakning och kostnader

AWS erbjuder CloudWatch för att visa mätvärden som CPU, nätverk och specifika loggar. Du bör också övervaka dina kostnader för att undvika att missa något.

Viktiga tips:
– Aktivera faktureringslarm i CloudWatch (t.ex. larm om avgifterna överstiger $5).
– Stäng av instansen när den inte används.
– Ta bort oanvända resurser (lastbalanserare, EBS, elastiska IP-adresser, ögonblicksbilder) eftersom de fortfarande kan medföra kostnader.

-

Stängning

Grattis! Du har lärt dig grunderna i att bygga en applikation på AWS med EC2, köra en webbapplikation , konfigurera en Nginx reverse proxy och göra den alltid på med PM2. Du har också fått en översikt över ytterligare tjänster som RDS för databaser, S3 för lagring och HTTPS-certifikat för säkerhet.

Om du vill gå upp i nivå är nästa steg vanligtvis:
– Automatiserad distribution med CI/CD (GitHub Actions + SSH eller AWS CodeDeploy),
– Använda containrar med Docker och orkestreringar som ECS eller EKS,
– Använder serverlös arkitektur med Lambda + API Gateway.

Om du vill, vänligen specificera vilken typ av applikation du bygger (Node.js, Laravel, Django, React, etc.) och dess avsedda syfte (demo, produktion, storskalig). Jag kan anpassa handledningen med mer specifika steg.

Lämna en kommentar