Vodič za izradu aplikacija na Amazon Web Services (AWS)
Amazon Web Services (AWS) jedna je od najpopularnijih svjetskih platformi za računalstvo u oblaku. Pomoću AWS-a možete izrađivati i pokretati aplikacije bez kupnje fizičkih poslužitelja, postavljanja prostora na poslužitelju ili održavanja vlastite infrastrukture. Ovaj članak će vas provesti kroz izradu jednostavne aplikacije na AWS-u korištenjem uobičajenog pristupa: implementacija web aplikacije pomoću računalnih usluga (EC2), upravljane baze podataka (RDS) kao opcije te pohrane i domene ako je potrebno. Iako je sljedeći primjer općenit, možete ga primijeniti na mnoge vrste aplikacija.
-
1. Početna priprema: Računi i osnovni koncepti
Prije nego što počnete, provjerite imate li AWS račun. Mnoge AWS usluge nude besplatnu razinu (besplatno unutar određenih ograničenja) koja je savršena za vježbu.
Neki važni koncepti koje morate razumjeti:
– Regija: Lokacija podatkovnog centra AWS-a (primjer: Singapur/ap-southeast-1). Odaberite najbližu regiju za nisku latenciju.
– IAM (Upravljanje identitetom i pristupom): sustav za upravljanje pristupom. Najbolja praksa: nemojte koristiti root račun za svakodnevni rad.
– VPC (virtualni privatni oblak): virtualna mreža na kojoj se izvršavaju vaše usluge.
– Sigurnosna grupa: „vatrozid“ za reguliranje dolaznog/odlaznog pristupa s poslužitelja.
Razumijevanjem ove četiri stvari bit će vam puno lakše snalaziti se u osnovama AWS-a.
-
2. Stvaranje IAM korisnika i sigurnih računa
Sigurnost nam je uvijek glavni prioritet. Prijavite se na AWS konzolu kao root, a zatim:
1. Otvorite IAM uslugu.
2. Kreirajte novog korisnika (npr. `admin-dev`) i označite opciju Omogući korisniku pristup AWS Management Console.
3. Dodijelite dopuštenje: za vježbu možete koristiti AdministratorAccess (iako bi u stvarnim projektima trebao biti ograničeniji).
4. Omogućite MFA (višefaktorsku autentifikaciju) kako biste povećali sigurnost.
Nakon što završite, odjavite se s root računa i prijavite se koristeći novokreiranog IAM korisnika.
-
3. Odredite arhitekturu aplikacije
Za ovaj tutorijal, izgradit ćemo jednostavnu arhitekturu:
– EC2: pokretanje web aplikacija (npr. Node.js/Express, Python Flask ili PHP).
– Opcionalni RDS: upravljana MySQL/PostgreSQL baza podataka, tako da su podaci uredno pohranjeni.
– S3 (opcionalno): pohranjuje statičke datoteke kao što su slike, dokumenti ili sigurnosne kopije.
– Ruta 53 (neobavezno): upravljanje domenama.
– CloudWatch: osnovno praćenje.
Ako tek počinjete, prvo se usredotočite na EC2 za pokretanje svojih aplikacija.
-
4. Izradite EC2 poslužitelj
a) Stvorite instancu
1. Prijavite se na EC2 uslugu.
2. Kliknite Pokreni instancu.
3. Odaberite OS, na primjer Ubuntu Server 22.04 LTS.
4. Odaberite vrstu instance: za Free Tier koristite `t2.micro` ili `t3.micro` (ovisno o dostupnosti).
5. Izradite ili odaberite par ključeva (npr. `aws-key.pem`). Čuvajte datoteku `.pem` jer će se koristiti za SSH.
b) Konfiguracija mreže i vatrozida
– Provjerite je li instanca u zadanom VPC-u (samo za vježbu).
– Postavi sigurnosnu grupu:
– Port 22 (SSH) samo s vaše IP adrese (npr. `Moja IP adresa`)
– Port 80 (HTTP) od `0.0.0.0/0` (javni)
– Port 443 (HTTPS) od `0.0.0.0/0` ako se kasnije koristi SSL
Napomena: Otvaranje SSH-a za javnost je rizično. Uvijek ograničite IP adrese.
Kliknite Pokreni i pričekajte da se instanca pokrene.
-
5. Prijava na poslužitelj putem SSH-a
Na Windowsima možete koristiti WSL ili PuTTY. Na macOS/Linuxu to možete učiniti izravno iz terminala.
1. Promijenite ključ dopuštenja:
"bash"
chmod 400 aws-key.pem
"`
2. SSH na server (koristite javni IPv4 iz EC2):
"bash"
ssh -i aws-key.pem ubuntu@JAVNA_IP_ADRESA
"`
Ako je uspješan, nalazite se na AWS Ubuntu serveru.
-
6. Instalirajte web poslužitelj i okruženje za izvođenje aplikacija
Evo primjera za Node.js aplikaciju, budući da se široko koristi za moderni web.
a) Ažuriranje i instaliranje ovisnosti
"bash"
sudo apt update && sudo apt nadogradnja -y
sudo apt install -y curl git
"`
b) Instalirajte Node.js (LTS verzija)
"bash"
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
čvor-v
npm -v
"`
-
7. Izradite jednostavnu aplikaciju
Izradite mapu projekta:
"bash"
mkdir moja aplikacija && cd moja aplikacija
npm init -y
npm instalirajte ekspresno
"`
Izradite datoteku `index.js`:
"js"
const express = require(“express”);
const app = express();
aplikacija.dobi(“/”, (zahtjev, res) => {
res.send(“Pozdrav! Vaša aplikacija radi na AWS EC2.”);
});
app.listen(3000, () => console.log(“Poslužitelj radi na portu 3000”);
"`
Pokrenite aplikaciju:
"bash"
indeks čvora.js
"`
Pokušajte pristupiti iz preglednika:
– `http://PUBLIC_IP:3000`
Međutim, port 3000 trenutno nije otvoren u Sigurnosnoj grupi. Možete:
1) otvorite port 3000 u Sigurnosnoj grupi ili
2) koristite obrnuti proxy (preporučljivije) tako da aplikacija ostane na internom portu, ali joj se može pristupiti putem porta 80/443.
-
8. Korištenje Nginxa kao obrnutog proxyja (pristup putem porta 80)
Instalirajte Nginx:
"bash"
sudo apt install -y nginx
sudo systemctl omogućiti nginx
sudo systemctl start nginx
"`
Postavite Nginx konfiguraciju:
"bash"
sudo nano /etc/nginx/sites-available/myapp
"`
Sadržaj konfiguracije:
"nginx"
poslužitelj {
slušajte 80;
naziv_poslužitelja _;
mjesto /
proxy_pass http://127.0.0.1:3000;
proxy_http_verzija 1.1;
proxy_set_header Nadogradnja $http_upgrade;
proxy_set_header Nadogradnja veze ';
proxy_set_header Host $ host;
proxy_cache_bypass $http_upgrade;
}
}
"`
Omogući konfiguraciju:
"bash"
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl ponovno pokretanje nginxa
"`
Sada pristup:
– `http://PUBLIC_IP/`
Aplikacija radi na portu 3000, ali joj javnost pristupa putem porta 80.
-
9. Kontinuirano pokretanje aplikacija s PM2
Da biste spriječili rušenje aplikacije kada je SSH isključen, koristite PM2:
"bash"
sudo npm install -g pm2
pm2 start index.js –naziv moje aplikacije
pm2 spremanje
pokretanje pm2
"`
Naredba `pm2 startup` pružit će dodatne upute. Pokrenite prikazanu naredbu kako bi se aplikacija automatski pokrenula kada se poslužitelj ponovno pokrene.
-
10. (Neobavezno) Dodavanje baze podataka pomoću RDS-a
Ako vaša aplikacija zahtijeva bazu podataka, RDS to olakšava jer AWS upravlja sigurnosnim kopijama, zakrpama i skaliranjem.
Kratki koraci:
1. Otvorite RDS uslugu → Stvori bazu podataka.
2. Odaberite MySQL ili PostgreSQL (Pravila besplatne razine dostupna su na određenim konfiguracijama).
3. Postavite korisničko ime/lozinku.
4. Provjerite je li RDS instanca u istom VPC-u kao i EC2.
5. Postavite RDS sigurnosnu grupu da prihvaća samo veze iz EC2 sigurnosne grupe (ne od javnosti).
Nakon što je baza podataka aktivna, dohvatite RDS krajnju točku i povežite se s njom iz svoje aplikacije pomoću upravljačkog programa baze podataka.
-
11. (Neobavezno) Omogućite HTTPS s SSL certifikatom
Za produkciju je HTTPS obavezan. Tipična metoda:
– Koristite domenu (npr. od Route 53 ili drugog registrara).
– Instalirajte SSL putem Let's Encrypt (Certbot) na EC2.
Ukratko:
"bash"
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
"`
Slijedite čarobnjaka za odabir domene i omogućavanje HTTPS preusmjeravanja.
-
12. Praćenje i troškovi
AWS pruža CloudWatch za pregled metrika poput CPU-a, mreže i specifičnih zapisa. Također biste trebali pratiti svoje troškove kako biste izbjegli propuštanje.
Važni savjeti:
– Omogućite alarm za naplatu u CloudWatchu (npr. alarm ako troškovi premaše 5 USD).
– Isključite instancu kada se ne koristi.
– Uklonite neiskorištene resurse (balansere opterećenja, EBS, elastične IP adrese, snimke stanja) jer oni i dalje mogu stvarati troškove.
-
Zatvaranje
Čestitamo! Naučili ste osnove izrade aplikacije na AWS-u pomoću EC2, pokretanja web aplikacije , postavljanja Nginx obrnutog proxyja i omogućavanja da uvijek bude aktivan pomoću PM2. Također ste stekli pregled dodatnih usluga poput RDS-a za baze podataka, S3 za pohranu i HTTPS certifikata za sigurnost.
Ako želite napredovati, sljedeći koraci su obično:
– Automatizirano postavljanje s CI/CD (GitHub Actions + SSH ili AWS CodeDeploy),
– Korištenje kontejnera s Dockerom i orkestracijama poput ECS-a ili EKS-a,
– Korištenje serverless arhitekture s Lambda + API Gateway.
Ako želite, molimo vas da navedete vrstu aplikacije koju izrađujete (Node.js, Laravel, Django, React itd.) i njezinu namjenu (demo, produkcijska, velika). Mogu prilagoditi tutorial s preciznijim koracima.