Opastus sovellusten luomiseen Amazon Web Servicesissä (AWS)
Amazon Web Services (AWS) on yksi maailman suosituimmista pilvipalveluista. AWS:n avulla voit rakentaa ja suorittaa sovelluksia ostamatta fyysisiä palvelimia, perustamatta palvelintilaa tai ylläpitämättä omaa infrastruktuuria. Tässä artikkelissa käydään läpi yksinkertaisen sovelluksen luominen AWS:ssä yleisen lähestymistavan avulla: verkkosovelluksen käyttöönotto laskentapalveluiden (EC2) avulla, hallitun tietokannan (RDS) avulla valinnaisesti sekä tallennustilan ja verkkotunnuksen avulla tarvittaessa. Vaikka seuraava esimerkki on yleinen, voit soveltaa sitä monenlaisiin sovelluksiin.
-
1. Alustava valmistelu: Tilinpäätös ja peruskäsitteet
Ennen kuin aloitat, varmista, että sinulla on AWS-tili. Monet AWS-palvelut tarjoavat ilmaisen tason (tietyissä rajoissa ilmainen), joka sopii täydellisesti harjoitteluun.
Joitakin tärkeitä käsitteitä, jotka sinun on ymmärrettävä:
– Alue: AWS-datakeskuksen sijainti (esimerkki: Singapore/ap-southeast-1). Valitse lähin alue, jos haluat pienen viiveen.
– IAM (Identity and Access Management): pääsynhallintajärjestelmä. Parhaat käytännöt: älä käytä pääkäyttäjän tiliä päivittäisessä työssä.
– VPC (Virtual Private Cloud): virtuaaliverkko, jossa palvelusi toimivat.
– Suojausryhmä: ”palomuuri” palvelimelle saapuvan/lähtevän käytön säätelemiseksi.
Ymmärtämällä nämä neljä asiaa sinun on paljon helpompi navigoida AWS:n perusteissa.
-
2. Luo IAM-käyttäjiä ja suojaa tilejä
Tietoturva on aina tärkein prioriteettimme. Kirjaudu AWS-konsoliin pääkäyttäjänä ja toimi seuraavasti:
1. Avaa IAM-palvelu.
2. Luo uusi käyttäjä (esim. `admin-dev`) ja valitse kohta Anna käyttäjälle pääsy AWS Management Consoleen.
3. Myönnä käyttöoikeudet: harjoitteluun voit käyttää AdministratorAccess-käyttöoikeutta (vaikka oikeissa projekteissa sen pitäisi olla rajoitetumpi).
4. Ota käyttöön MFA (monivaiheinen todennus) turvallisuuden parantamiseksi.
Kun olet valmis, kirjaudu ulos pääkäyttäjänä ja kirjaudu sisään käyttämällä juuri luotua IAM-käyttäjää.
-
3. Sovellusarkkitehtuurin määrittäminen
Tässä opetusohjelmassa rakennamme yksinkertaisen arkkitehtuurin:
– EC2: verkkosovellusten suorittaminen (esim. Node.js/Express, Python Flask tai PHP).
– Valinnainen RDS: hallittu MySQL/PostgreSQL-tietokanta, jotta tiedot tallennetaan siististi.
– S3 (valinnainen): tallentaa staattisia tiedostoja, kuten kuvia, asiakirjoja tai varmuuskopioita.
– Reitti 53 (valinnainen): verkkotunnusten hallinta.
– CloudWatch: perusvalvonta.
Jos olet vasta aloittamassa, keskity ensin EC2:een sovellustesi ajamiseen.
-
4. Luo EC2-palvelin
a) Luo instanssi
1. Kirjaudu EC2-palveluun.
2. Napsauta Käynnistä instanssi.
3. Valitse käyttöjärjestelmä, esimerkiksi Ubuntu Server 22.04 LTS.
4. Valitse instanssityyppi: ilmaiselle tasolle käytä `t2.micro`- tai `t3.micro`-tyyppiä (saatavuuden mukaan).
5. Luo tai valitse avainpari (esim. `aws-key.pem`). Säilytä `.pem`-tiedostoa turvassa, sillä sitä käytetään SSH:n kanssa.
b) Verkko- ja palomuuriasetukset
– Varmista, että instanssi on oletus-VPC:ssä (harjoituksen vuoksi).
– Aseta käyttöoikeusryhmä:
– Portti 22 (SSH) vain IP-osoitteestasi (esim. `Oma IP`)
– Portti 80 (HTTP) `0.0.0.0/0` (julkinen)
– Portti 443 (HTTPS) kohdasta `0.0.0.0/0`, jos myöhemmin käytetään SSL:ää
Huomautus: SSH:n avaaminen yleisölle on riskialtista. Rajoita aina IP-osoitteita.
Napsauta Käynnistä ja odota, että instanssi suoritetaan.
-
5. Kirjaudu palvelimelle SSH:n kautta
Windowsissa voit käyttää WSL:ää tai PuTTY:tä. macOS:ssä/Linuxissa voit tehdä sen suoraan terminaalista.
1. Vaihda käyttöoikeusavain:
"'bash
chmod 400 aws-key.pem
”`
2. SSH palvelimelle (käytä EC2:n julkista IPv4:ää):
"'bash
ssh -i aws-key.pem ubuntu@JULKINEN_IP
”`
Jos tämä onnistuu, olet AWS Ubuntu -palvelimella.
-
6. Asenna web-palvelin ja sovelluksen suoritusympäristö
Tässä on esimerkki Node.js-sovelluksesta, jota käytetään laajalti nykyaikaisessa verkossa.
a) Päivitä ja asenna riippuvuudet
"'bash
sudo apt päivitys && sudo apt päivitys -y
sudo apt install -y curl git
”`
b) Asenna Node.js (LTS-versio)
"'bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
solmu -v
npm -v
”`
-
7. Luo yksinkertainen sovellus
Luo projektikansio:
"'bash
mkdir sovellukseni && cd sovellukseni
npm init -y
npm install express
”`
Luo `index.js`-tiedosto:
js
const express = require(“express”);
const app = express();
app.get(“/”, (pyyntö, vastaus) => {
res.send("Hei! Sovelluksesi toimii AWS EC2:ssa.");
});
app.listen(3000, () => console.log(“Palvelin käynnissä portissa 3000”));
”`
Suorita sovellus:
"'bash
solmu index.js
”`
Kokeile käyttää sitä selaimella:
– `http://JULKINEN_IP:3000`
Portti 3000 ei kuitenkaan ole tällä hetkellä avoinna käyttöoikeusryhmässä. Voit:
1) avaa portti 3000 suojausryhmässä tai
2) käytä käänteistä välityspalvelinta (suositeltavampaa), jotta sovellus pysyy sisäisessä portissa, mutta siihen pääsee käsiksi portin 80/443 kautta.
-
8. Nginxin käyttö käänteisenä välityspalvelimena (käyttö portin 80 kautta)
Asenna Nginx:
"'bash
sudo apt install -y nginx
sudo systemctl mahdollistaa nginx
sudo systemctl start nginx
”`
Nginx-kokoonpanon määrittäminen:
"'bash
sudo nano /etc/nginx/sites-available/myapp
”`
Konfiguraatioiden sisältö:
"nginx"
palvelin {
kuunnella 80;
palvelimen_nimi _;
sijainti /
proxy_pass http://127.0.0.1:3000;
välityspalvelimen_http_versio 1.1;
proxy_set_header Päivitys $http_upgrade;
proxy_set_header Yhteys 'päivitys';
proxy_set_header Host $ host;
välityspalvelimen_välimuistin_ohitus $http_päivitys;
}
}
”`
Ota käyttöön määritys:
"'bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl lataa nginx uudelleen
”`
Nyt pääsy:
– `http://JULKINEN_IP/`
Sovellus toimii portissa 3000, mutta yleisö käyttää sitä portin 80 kautta.
-
9. Sovellusten jatkuva suorittaminen PM2:lla
Estääksesi sovelluksen kaatumisen, kun SSH-yhteys katkeaa, käytä PM2:ta:
"'bash
sudo npm install -g pm2
pm2 start index.js –nimi sovellukseni
pm2-tallennus
pm2-käynnistys
”`
Komento `pm2 startup` antaa lisäohjeita. Suorita näytetty komento, jos haluat sovelluksen käynnistyvän automaattisesti palvelimen uudelleenkäynnistyksen yhteydessä.
-
10. (Valinnainen) Tietokannan lisääminen RDS:n avulla
Jos sovelluksesi vaatii tietokannan, RDS helpottaa sitä, koska AWS hallitsee varmuuskopioita, korjauksia ja skaalausta.
Lyhyet askeleet:
1. Avaa RDS-palvelu → Luo tietokanta.
2. Valitse MySQL tai PostgreSQL (ilmaiset tasosäännöt ovat saatavilla tietyissä kokoonpanoissa).
3. Aseta käyttäjätunnus/salasana.
4. Varmista, että RDS-instanssi on samassa VPC:ssä kuin EC2.
5. Aseta RDS-suojausryhmä hyväksymään yhteyksiä vain EC2-suojausryhmästä (ei julkisista yhteyksistä).
Kun tietokanta on julkaistu, ota RDS-päätepiste ja muodosta yhteys siihen sovelluksestasi tietokanta-ajurin avulla.
-
11. (Valinnainen) Ota käyttöön HTTPS SSL-varmenteella
Tuotannossa HTTPS on pakollinen. Tyypillinen menetelmä:
– Käytä verkkotunnusta (esim. Route 53:lta tai toiselta rekisterinpitäjältä).
– Asenna SSL Let's Encryptin (Certbot) kautta EC2:een.
Lyhyesti:
"'bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
”`
Valitse verkkotunnus ja ota HTTPS-uudelleenohjaus käyttöön ohjatun toiminnon avulla.
-
12. Seuranta ja kustannukset
AWS tarjoaa CloudWatchin mittareiden, kuten suorittimen, verkon ja tiettyjen lokien, tarkasteluun. Haluat myös seurata kustannuksiasi, jotta et jää paitsi mistään.
Tärkeitä vinkkejä:
– Ota käyttöön laskutushälytys CloudWatchissa (esim. hälytys, jos veloitukset ylittävät 5 dollaria).
– Sammuta instanssi, kun sitä ei käytetä.
– Poista käyttämättömät resurssit (kuormituksen tasaajat, EBS, joustavat IP-osoitteet, tilannevedokset), koska ne voivat silti aiheuttaa kustannuksia.
-
Sulkeminen
Onnittelut! Olet oppinut sovelluksen rakentamisen AWS:ssä EC2:lla, web-sovelluksen suorittamisen , Nginx-käänteisen välityspalvelimen määrittämisen ja sen pitämisen aina päällä PM2:lla. Olet myös saanut yleiskuvan lisäpalveluista, kuten RDS:stä tietokantoja varten, S3:sta tallennukseen ja HTTPS-varmenteista tietoturvaa varten.
Jos haluat nousta tasolle, seuraavat vaiheet ovat yleensä:
– Automaattinen käyttöönotto CI/CD:n avulla (GitHub Actions + SSH tai AWS CodeDeploy),
– Konttien käyttö Dockerin ja orkestrointien, kuten ECS:n tai EKS:n, kanssa,
– Käytetään palvelimetonta arkkitehtuuria Lambdan ja API-yhdyskäytävän avulla.
Halutessasi voit määrittää rakentamasi sovelluksen tyypin (Node.js, Laravel, Django, React jne.) ja sen käyttötarkoituksen (demo, tuotanto, laajamittainen). Voin mukauttaa tutoriaalia tarkemmilla vaiheilla.