Modul 11 — Cloud platformy
53. AWS základy: EC2, S3, IAM
První kroky v Amazon Web Services — virtuální servery EC2, objektové úložiště S3 a systém oprávnění IAM, na kterém stojí bezpečnost celého účtu.
Úvod a kontext
V předchozích lekcích jsme probrali obecné principy cloud computingu a
modely IaaS/PaaS/SaaS. Amazon Web Services (AWS) je nejrozšířenější
veřejný cloud a dobrým vstupním bodem pro pochopení toho, jak se
abstraktní principy promítají do konkrétní služby. Tato lekce se
soustředí na tři služby, se kterými se setká téměř každý DevOps
inženýr pracující s AWS: EC2 (virtuální servery), S3 (objektové
úložiště) a IAM (řízení přístupu a oprávnění).
Teorie
EC2 — Elastic Compute Cloud
EC2 poskytuje virtuální servery ("instance") na vyžádání. Klíčové
pojmy:
- AMI (Amazon Machine Image) — šablona s operačním systémem a
předinstalovaným softwarem, ze které se instance spouští. - Instance type — velikost stroje (počet vCPU, RAM) — např.
t3.micro(malý, burstable),m5.large(obecné použití),
c5.xlarge(výpočetně orientovaný). - Security Group — virtuální firewall na úrovni instance, definuje
povolený příchozí a odchozí provoz (podrobněji v příští lekci o
síťování). - Key pair — SSH klíč, kterým se instance při vytvoření "osadí"
pro pozdější přihlášení bez hesla. - EBS (Elastic Block Store) — perzistentní diskový svazek připojený
k instanci; přežívá i vypnutí a smazání instance, pokud to tak
nastavíte.
Instance lze zastavit (přestanete platit za výpočet, ale ne za
připojený disk) nebo ukončit (terminate — instance i její dočasná
data zaniknou).
S3 — Simple Storage Service
S3 je objektové úložiště — neukládá soubory do adresářové struktury
jako klasický souborový systém, ale jako objekty (data + metadata)
uvnitř plochých kontejnerů zvaných buckets. Typické vlastnosti:
- Bucket má globálně jedinečný název v rámci celého AWS.
- Objekty se adresují klíčem (key), např.
logs/2024/01/app.log—
vypadá to jako cesta, ale interně je to jen řetězec. - S3 nabízí několik tříd úložiště podle frekvence přístupu —
STANDARD(časté přístupy),STANDARD_IA(méně časté),
GLACIER(archivace, pomalá obnova, nejlevnější). - Přístup k bucketu se řídí bucket policy (JSON dokument) a/nebo
IAM oprávněními — veřejně čitelný bucket je časté zdrojové riziko
úniku dat, proto AWS defaultně blokuje veřejný přístup a je nutné ho
vědomě povolit.
IAM — Identity and Access Management
IAM řídí, kdo (identita) co (akce) na čem (zdroj) smí
udělat v rámci AWS účtu. Základní stavební kameny:
- User — identita jednotlivce (osoby nebo služby) s vlastními
přihlašovacími údaji. - Group — sada uživatelů se sdílenými oprávněními.
- Role — sada oprávnění, kterou si dočasně "obléká" jiná identita
(uživatel, EC2 instance, jiná AWS služba) — role se nepřihlašuje
heslem, ale přebírá se (assume role) a je preferovaný způsob, jak
udělovat práva službám (EC2 instanci nikdy nedávejte pevné
přístupové klíče, vždy roli). - Policy — JSON dokument popisující konkrétní povolené nebo
zakázané akce, např.:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::muj-bucket/*"
}
]
}
Klíčový bezpečnostní princip je least privilege — každé identitě
(uživateli, roli, službě) udělit jen ta oprávnění, která nutně
potřebuje pro svou práci, ne širší.
Praktický příklad
Spuštění EC2 instance a práce s S3 přes AWS CLI (nástroj aws,
nakonfigurovaný přístupovými klíči nebo profilem):
# spuštění instance t3.micro s daným AMI a klíčem
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t3.micro \
--key-name muj-klic \
--security-group-ids sg-0123456789abcdef0 \
--count 1
# výpis běžících instancí
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].[InstanceId,PublicIpAddress]"
# vytvoření S3 bucketu a nahrání souboru
aws s3 mb s3://muj-projekt-zalohy-2024
aws s3 cp zaloha.tar.gz s3://muj-projekt-zalohy-2024/zalohy/
# vytvoření IAM role pro EC2 s přístupem jen ke čtení z konkrétního bucketu
aws iam create-role \
--role-name ec2-cteni-s3 \
--assume-role-policy-document file://trust-policy.json
aws iam put-role-policy \
--role-name ec2-cteni-s3 \
--policy-name cteni-bucket \
--policy-document file://s3-read-policy.json
trust-policy.json určuje, kdo smí roli přebrat (v tomto případě
služba EC2):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com" },
"Action": "sts:AssumeRole"
}
]
}
Instance spuštěná s touto rolí pak může volat S3 API bez jakýchkoliv
pevně uložených přístupových klíčů na disku — AWS SDK a CLI na
instanci si dočasné přihlašovací údaje odvodí automaticky z role.
Shrnutí
EC2 poskytuje virtuální servery řízené přes AMI, instance typy,
security groups a EBS disky. S3 je objektové úložiště organizované do
bucketů s klíči místo adresářů, s několika třídami dostupnosti podle
ceny a frekvence přístupu. IAM řídí oprávnění pomocí uživatelů, skupin,
rolí a JSON policy dokumentů — klíčovým principem je least privilege a
preferování rolí (dočasných oprávnění) před pevnými přístupovými klíči,
zvlášť pro služby jako EC2.
Kontrolní otázky
- Jaký je rozdíl mezi zastavením (
stop) a ukončením (terminate)
EC2 instance z hlediska dat a nákladů? - Proč se S3 označuje jako objektové úložiště a ne jako souborový
systém? - Co znamená princip least privilege a jak se v IAM prakticky
uplatňuje? - Mini cvičení: napište IAM policy JSON, který povolí identitě pouze
akcis3:GetObject(ne zápis ani mazání) na bucketu
verejne-dokumenty.
Lekce na sebe nejsou zamčené — libovolnou lekci můžete otevřít i označit jako hotovou v jakémkoliv pořadí.