Samouczek dotyczący tworzenia aplikacji w Amazon Web Services (AWS)

Samouczek tworzenia aplikacji w Amazon Web Services (AWS)

Amazon Web Services (AWS) to jedna z najpopularniejszych na świecie platform przetwarzania w chmurze. Dzięki AWS możesz tworzyć i uruchamiać aplikacje bez konieczności zakupu serwerów fizycznych, konfigurowania przestrzeni serwerowej czy utrzymywania własnej infrastruktury. Ten artykuł przeprowadzi Cię przez proces tworzenia prostej aplikacji w AWS, stosując typowe podejście: wdrażanie aplikacji internetowej z wykorzystaniem usług obliczeniowych (EC2), opcjonalnie zarządzanej bazy danych (RDS) oraz pamięci masowej i domeny, jeśli to konieczne. Chociaż poniższy przykład jest ogólny, można go zastosować do wielu typów aplikacji.

Do

1. Przygotowanie wstępne: Konta i podstawowe koncepcje

Zanim zaczniesz, upewnij się, że masz konto AWS. Wiele usług AWS oferuje bezpłatny poziom (bezpłatny w określonych granicach), który idealnie nadaje się do ćwiczeń.

Oto kilka ważnych pojęć, które musisz zrozumieć:

– Region: lokalizacja centrum danych AWS (przykład: Singapur/ap-southeast-1). Wybierz najbliższy region, aby uzyskać niskie opóźnienie.
– IAM (Identity and Access Management): system zarządzania dostępem. Najlepsza praktyka: nie używaj konta root do codziennej pracy.
– VPC (wirtualna chmura prywatna): wirtualna sieć, w której działają Twoje usługi.
– Grupa zabezpieczeń: „zapora sieciowa” regulująca dostęp przychodzący/wychodzący z serwera.

Dzięki zrozumieniu tych czterech rzeczy o wiele łatwiej będzie Ci poruszać się po podstawach AWS.

Do

2. Utwórz użytkowników IAM i bezpieczne konta

Bezpieczeństwo jest zawsze naszym priorytetem. Zaloguj się do konsoli AWS jako root, a następnie:

1. Otwórz usługę IAM.
2. Utwórz nowego użytkownika (np. `admin-dev`) i zaznacz opcję Zapewnij użytkownikowi dostęp do konsoli zarządzania AWS.
3. Udzielanie uprawnień: w celach ćwiczeniowych możesz użyć uprawnień AdministratorAccess (choć w rzeczywistych projektach powinny być one bardziej ograniczone).
4. Włącz MFA (uwierzytelnianie wieloskładnikowe), aby zwiększyć bezpieczeństwo.

Po wykonaniu tej czynności wyloguj się z konta root i zaloguj się, używając nowo utworzonego użytkownika IAM.

Do

3. Określ architekturę aplikacji

W tym samouczku zbudujemy prostą architekturę:

– EC2: uruchamianie aplikacji internetowych (np. Node.js/Express, Python Flask lub PHP).
– Opcjonalny RDS: zarządzana baza danych MySQL/PostgreSQL, dzięki której dane są przechowywane w uporządkowany sposób.
– S3 (opcjonalnie): przechowuje pliki statyczne, takie jak obrazy, dokumenty lub kopie zapasowe.
– Trasa 53 (opcjonalnie): zarządzanie domenami.
– CloudWatch: podstawowy monitoring.

Jeśli dopiero zaczynasz, skup się najpierw na EC2 i uruchamiaj swoje aplikacje.

Do

4. Utwórz serwer EC2

a) Utwórz instancję
1. Zaloguj się do usługi EC2.
2. Kliknij opcję Uruchom instancję.
3. Wybierz system operacyjny, na przykład Ubuntu Server 22.04 LTS.
4. Wybierz typ instancji: w przypadku warstwy bezpłatnej użyj `t2.micro` lub `t3.micro` (w zależności od dostępności).
5. Utwórz lub wybierz parę kluczy (np. `aws-key.pem`). Zachowaj plik `.pem` w bezpiecznym miejscu, ponieważ będzie on używany do połączenia SSH.

b) Konfiguracja sieci i zapory sieciowej
– Upewnij się, że instancja znajduje się w domyślnej sieci VPC (tylko dla ćwiczeń).
– Ustaw grupę zabezpieczeń:
– Port 22 (SSH) tylko z Twojego adresu IP (np. „Mój adres IP”)
– Port 80 (HTTP) `0.0.0.0/0` (publiczny)
– Port 443 (HTTPS) z `0.0.0.0/0` w przypadku późniejszego użycia protokołu SSL

Uwaga: Udostępnianie SSH publicznie jest ryzykowne. Zawsze ograniczaj adresy IP.

Kliknij Uruchom i poczekaj na uruchomienie instancji.

Do

5. Zaloguj się do serwera przez SSH

W systemie Windows możesz użyć WSL lub PuTTY. W systemach macOS/Linux możesz to zrobić bezpośrednio z terminala.

1. Zmień klucz uprawnień:
„bash”
chmod 400 aws-key.pem
„„
2. Połącz się z serwerem za pomocą SSH (użyj publicznego adresu IPv4 z EC2):
„bash”
ssh -i aws-key.pem ubuntu@PUBLIC_IP
„„

Jeśli operacja się powiedzie, znajdziesz się na serwerze AWS Ubuntu.

Do

6. Zainstaluj serwer WWW i środowisko wykonawcze aplikacji

Poniżej przedstawiono przykład aplikacji Node.js, która jest powszechnie wykorzystywana w nowoczesnej sieci WWW.

a) Zaktualizuj i zainstaluj zależności
„bash”
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
„„

b) Zainstaluj Node.js (wersja LTS)
„bash”
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
węzeł -v
npm -v
„„

Do

7. Utwórz prostą aplikację

Utwórz folder projektu:

„bash”
mkdir mojaaplikacja && cd mojaaplikacja
npm początek -y
npm zainstaluj ekspresowo
„„

Utwórz plik `index.js`:

„`js
const express = require(“express”);
stała aplikacja = express();

aplikacja.get(“/”, (req, res) => {
res.send(“Witaj! Twoja aplikacja działa na AWS EC2.”);
});

app.listen(3000, () => console.log(“Serwer działa na porcie 3000”));
„„

Uruchom aplikację:

„bash”
węzeł index.js
„„

Spróbuj uzyskać dostęp z przeglądarki:
– `http://PUBLIC_IP:3000`

Jednak port 3000 nie jest obecnie otwarty w grupie zabezpieczeń. Możesz:
1) otwórz port 3000 w grupie zabezpieczeń lub
2) użyj odwrotnego serwera proxy (bardziej zalecane), aby aplikacja pozostała na porcie wewnętrznym, ale można było uzyskać do niej dostęp przez port 80/443.

Do

8. Używanie Nginx jako odwrotnego serwera proxy (dostęp przez port 80)

Zainstaluj Nginxa:
„bash”
sudo apt install -y nginx
sudo systemctl włącz nginx
sudo systemctl start nginx
„„

Skonfiguruj Nginx:
„bash”
sudo nano /etc/nginx/sites-available/myapp
„„

Zawartość konfiguracji:
„`nginx
serwer {
słuchać 80;
Nazwa serwera _;

Lokalizacja / {
proxy_pass http://127.0.0.1:3000;
proxy_http_wersja 1.1;
proxy_set_header Aktualizacja $http_upgrade;
proxy_set_header „Aktualizacja” połączenia;
proxy_set_header Host $ host;
proxy_cache_bypass $http_upgrade;
}
}
„„

Włącz konfigurację:
„bash”
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl przeładuj nginx
„„

Teraz uzyskaj dostęp:
– `http://PUBLIC_IP/`

Aplikacja działa na porcie 3000, ale dostęp do niej jest uzyskiwany przez port 80.

Do

9. Trwałe uruchamianie aplikacji za pomocą PM2

Aby zapobiec zawieszaniu się aplikacji po rozłączeniu połączenia SSH, należy użyć PM2:

„bash”
sudo npm install -g pm2
pm2 start index.js –name myapp
zapis pm2
uruchomienie pm2
„„

Polecenie `pm2 startup` wyświetli dodatkowe instrukcje. Uruchom wyświetlone polecenie, aby aplikacja uruchomiła się automatycznie po ponownym uruchomieniu serwera.

Do

10. (Opcjonalnie) Dodawanie bazy danych z RDS

Jeśli Twoja aplikacja wymaga bazy danych, RDS ułatwia to zadanie, ponieważ AWS zarządza kopiami zapasowymi, poprawkami i skalowaniem.

Krótkie kroki:
1. Otwórz usługę RDS → Utwórz bazę danych.
2. Wybierz opcję MySQL lub PostgreSQL (zasady bezpłatnej wersji są dostępne w niektórych konfiguracjach).
3. Ustaw nazwę użytkownika i hasło.
4. Upewnij się, że instancja RDS znajduje się w tej samej sieci VPC co EC2.
5. Ustaw grupę zabezpieczeń RDS tak, aby akceptowała wyłącznie połączenia z grupy zabezpieczeń EC2 (a nie publiczne).

Gdy baza danych będzie już aktywna, należy uzyskać punkt końcowy RDS i połączyć się z nim ze swojej aplikacji, korzystając ze sterownika bazy danych.

Do

11. (Opcjonalnie) Włącz protokół HTTPS z certyfikatem SSL

W przypadku produkcji protokół HTTPS jest obowiązkowy. Typowa metoda:
– Użyj domeny (np. z Route 53 lub innego rejestratora).
– Zainstaluj SSL za pośrednictwem Let's Encrypt (Certbot) na EC2.

Krótko mówiąc:
„bash”
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
„„

Postępuj zgodnie ze wskazówkami kreatora, aby wybrać domenę i włączyć przekierowanie HTTPS.

Do

12. Monitorowanie i koszty

AWS udostępnia CloudWatch do przeglądania metryk, takich jak procesor, sieć i określone logi. Warto również monitorować koszty, aby niczego nie przegapić.

Ważne wskazówki:
– Włącz alarm rozliczeniowy w CloudWatch (np. alarm, gdy opłaty przekroczą 5 USD).
– Wyłączaj instancję, gdy jej nie używasz.
– Usuń nieużywane zasoby (moduły równoważenia obciążenia, EBS, elastyczne adresy IP, migawki), ponieważ mogą one nadal generować koszty.

Do

Zamknięcie

Gratulacje! Poznałeś podstawy tworzenia aplikacji w AWS z wykorzystaniem EC2, uruchamiania aplikacji webowej , konfigurowania odwrotnego proxy Nginx i zapewniania jej ciągłej dostępności dzięki PM2. Poznałeś również podstawowe usługi, takie jak RDS dla baz danych, S3 dla pamięci masowej i certyfikaty HTTPS dla bezpieczeństwa.

Jeśli chcesz przejść na wyższy poziom, następne kroki zazwyczaj wyglądają następująco:
– Automatyczne wdrażanie z CI/CD (GitHub Actions + SSH lub AWS CodeDeploy),
– Korzystanie z kontenerów z Dockerem i orkiestracjami takimi jak ECS lub EKS,
– Wykorzystanie architektury bezserwerowej z Lambda + API Gateway.

Jeśli chcesz, określ typ aplikacji, którą tworzysz (Node.js, Laravel, Django, React itp.) i jej przeznaczenie (demo, produkcja, aplikacja na dużą skalę). Mogę dostosować samouczek, dodając bardziej szczegółowe kroki.

Zostaw komentarz