EN

AWS

Praktický přehled AWS CLI pro IAM, EC2, ECS, S3, RDS a Lambda — nastavení, časté příkazy a optimalizace nákladů pro cloudový vývoj.

Co tato dovednost pokrývá

Praktické příkazy a konfigurace AWS CLI pro IAM, EC2, ECS, S3, RDS a Lambda, doplněné o nastavení AWS CLI, CodeBuild, logování/monitoring a optimalizaci nákladů — tedy běžnou denní práci potřebnou pro cloudový vývoj na AWS.

Kdy ji použít

  • Zakládání IAM uživatelů, skupin, rolí, instance profiles a politik
  • Konfigurace AWS CLI (profily, přihlašovací údaje, proměnné prostředí) pro nové prostředí
  • Spouštění, zastavování nebo zabezpečování EC2 instancí a security groups
  • Nastavení EC2 Auto Scaling pro danou zátěž
  • Nasazování kontejnerových workloadů do ECS/Fargate včetně task definitions a listenerů load balanceru
  • Správa S3 bucketů, storage tříd a bucket policies
  • Zřízení instance databáze RDS
  • Vytváření nebo konfigurace funkce AWS Lambda
  • Nastavení CodeBuild projektu pro CI/CD
  • Kontrola možností logování/monitoringu nebo plánování optimalizace nákladů na AWS
  • První seznámení s AWS

Identity and Access Management (IAM)

IAM je služba AWS pro řízení přístupu k prostředkům AWS. Umožňuje spravovat uživatele, skupiny, role a oprávnění.

Koncepty IAM

  • Uživatelé (Users): Jednotlivé identity s přihlašovacími údaji.
  • Skupiny (Groups): Kolekce uživatelů se sdílenými oprávněními.
  • Role (Roles): Přiřaditelná oprávnění pro služby nebo uživatele.
  • Politiky (Policies): JSON dokumenty definující povolené/zakázané akce.

Časté příkazy IAM

Výpis rolí:

aws iam list-roles --profile bf-gsgteaser-sandbox

Vytvoření instance profile:

aws iam create-instance-profile --instance-profile-name test_ec2_ssm_profile --profile bf-gsgteaser-sandbox

Přidání role do instance profile:

aws iam add-role-to-instance-profile --instance-profile-name test_ec2_ssm_profile --role-name test_ec2_ssm --profile bf-gsgteaser-sandbox

Výpis instance profiles:

aws iam list-instance-profiles --profile bf-gsgteaser-sandbox

Vytvoření uživatele a skupiny:

aws iam create-user --user-name john-doe
aws iam create-group --group-name developers
aws iam add-user-to-group --user-name john-doe --group-name developers

Připojení spravované politiky:

aws iam attach-user-policy \
  --user-name john-doe \
  --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess

Vytvoření a připojení vlastní politiky:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}
aws iam create-policy \
  --policy-name MyCustomPolicy \
  --policy-document file://policy.json

aws iam attach-user-policy \
  --user-name john-doe \
  --policy-arn arn:aws:iam::123456789012:policy/MyCustomPolicy

Vytvoření role pro EC2:

aws iam create-role \
  --role-name EC2-ReadOnly \
  --assume-role-policy-document file://trust-policy.json

Trust policy pro EC2 roli (trust-policy.json):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Připojení role k EC2 instanci (přes instance profile):

aws ec2 associate-iam-instance-profile \
  --instance-id i-1234567890abcdef0 \
  --iam-instance-profile Name=EC2-ReadOnly-Profile

Doporučené postupy pro IAM

  1. Princip nejmenších oprávnění: Udělujte pouze nezbytná oprávnění.
  2. Používejte skupiny a role: Přiřazujte oprávnění skupinám/rolím místo jednotlivým uživatelům.
  3. Zapněte MFA: Vyžadujte vícefaktorové ověření pro privilegované uživatele.
  4. Rotujte přihlašovací údaje: Pravidelně měňte přístupové klíče a hesla.
  5. Sledujte aktivitu: Používejte CloudTrail a IAM Access Analyzer.
  6. Provádějte pravidelné audity: Kontrolujte a odstraňujte nepoužívané uživatele, role a politiky.
  7. Podmínky v politikách: Používejte policy conditions pro další zabezpečení.
  8. Service Control Policies: Aplikujte SCP v AWS Organizations pro kontrolu na úrovni účtu.

Konfigurace AWS CLI

Profily

aws configure --profile myprofile
aws s3 ls --profile myprofile

Proměnné prostředí

export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1

Nástroje pro vývojáře

AWS CodeBuild

Výpis projektů a buildů:

aws codebuild list-projects --profile testuser-sandbox
aws codebuild list-builds --profile testuser-sandbox

Vlastnosti:

  • Spravované build prostředí (žádné servery ke správě)
  • Podpora více jazyků
  • Integrace CI/CD s CodePipeline
  • Vlastní Docker images
  • Paralelní buildy

Logování a monitoring

  • CloudWatch: Metriky, logy, alarmy
  • CloudTrail: Auditování a governance
  • X-Ray: Distribuované trasování aplikací
  • AWS Config: Sledování shody s předpisy (compliance)
  • Trusted Advisor: Kontroly zabezpečení, nákladů a výkonu

Optimalizace nákladů

  1. Přizpůsobte velikost prostředků skutečným potřebám (right-sizing)
  2. Používejte Reserved nebo Savings Plans pro předvídatelné workloady
  3. Zavádějte Auto Scaling
  4. Sledujte spotřebu pomocí Cost Explorer
  5. Odstraňujte nepoužívané prostředky

Amazon EC2

Typy instancí

  • Obecné účely: T3, M5, M6g
  • Optimalizované na výpočet: C5, C6g
  • Optimalizované na paměť: R5, R6g, X1, X1e
  • Optimalizované na úložiště: I3, D2, D3
  • Akcelerovaný výpočet: P3, P4, G4dn, G5

Příkazy EC2

aws ec2 run-instances --image-id ami-0abcdef1234567890 \
  --count 1 --instance-type t2.micro \
  --key-name my-key-pair \
  --security-group-ids sg-12345678 \
  --subnet-id subnet-12345678

Spuštění/zastavení/ukončení:

aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

Příklad security group:

aws ec2 create-security-group --group-name my-sg --description "My security group"
aws ec2 authorize-security-group-ingress \
  --group-id sg-12345678 --protocol tcp --port 22 --cidr 0.0.0.0/0

0.0.0.0/0 otevírá port 22 celému internetu — v produkci omezte --cidr na známý rozsah IP adres.

EC2 Auto Scaling

Launch Configurations jsou zastaralé — nové typy instancí a funkce jsou dostupné pouze přes Launch Templates.

aws ec2 create-launch-template \
  --launch-template-name my-lt \
  --launch-template-data '{"ImageId":"ami-0abcdef1234567890","InstanceType":"t2.micro"}'

aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-template LaunchTemplateName=my-lt,Version='$Latest' \
  --min-size 1 --max-size 10 --desired-capacity 2 \
  --availability-zones us-east-1a

Amazon ECS

Příklad task definition (Fargate):

{
  "family": "my-app",
  "taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskRole",
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "containerDefinitions": [
    {
      "name": "my-container",
      "image": "nginx:latest",
      "essential": true,
      "portMappings": [{"containerPort": 80,"protocol": "tcp"}]
    }
  ]
}

Registrace task definition:

aws ecs register-task-definition --cli-input-json file://task-definition.json

Vytvoření listeneru (správný formát JSON):

aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:... \
  --protocol HTTP --port 80 \
  --default-actions '[{"Type":"forward","TargetGroupArn":"arn:aws:elasticloadbalancing:..."}]'

Amazon S3

  • Buckets: Kontejnery pro objekty
  • Objekty: Soubory s metadaty
  • Klíče (Keys): Jedinečné identifikátory objektů
  • Regiony: Geografické umístění úložiště

Bezpečná změna storage class:

aws s3 cp s3://my-bucket/myfile.txt s3://my-bucket/myfile.txt \
  --storage-class STANDARD_IA --metadata-directive COPY

Příklad bucket policy:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::my-bucket/*"
  }]
}

Amazon RDS

Vytvoření DB instance:

aws rds create-db-instance \
  --db-instance-identifier mydb \
  --db-instance-class db.t2.micro \
  --engine mysql \
  --master-username admin \
  --master-user-password mypassword \
  --allocated-storage 20 \
  --backup-retention-period 7 \
  --storage-encrypted

Zálohy a snapshoty:

aws rds create-db-snapshot --db-instance-identifier mydb --db-snapshot-identifier mydb-snapshot-1
aws rds describe-db-snapshots --db-instance-identifier mydb

Automatické zálohy (--backup-retention-period) a šifrování at rest (--storage-encrypted) nastavte už při vytváření instance; přístup omezte security groups místo veřejné dostupnosti.

AWS Lambda

Vytvoření funkce:

aws lambda create-function \
  --function-name my-function \
  --runtime python3.9 \
  --role arn:aws:iam::123456789012:role/lambda-role \
  --handler lambda_function.lambda_handler \
  --code S3Bucket=my-bucket,S3Key=function.zip

Přidání S3 triggeru:

aws lambda add-permission \
  --function-name my-function \
  --principal s3.amazonaws.com \
  --statement-id s3invoke \
  --action lambda:InvokeFunction \
  --source-arn arn:aws:s3:::my-bucket

Další časté triggery: API Gateway (HTTP požadavky), DynamoDB Streams (změny v tabulce), EventBridge (naplánované nebo event-driven spouštění).

Proměnné prostředí, paměť, timeout a vrstvy (layers):

aws lambda update-function-configuration \
  --function-name my-function \
  --environment "Variables={STAGE=prod}" \
  --memory-size 256 \
  --timeout 15 \
  --layers arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1

Začínáme

  1. Založte účet AWS a nastavte upozornění na vyúčtování.
  2. Nastavte AWS CLI a profily.
  3. Naučte se základy IAM a vytvořte uživatele/role.
  4. Prozkoumejte služby AWS přes konzoli.
  5. Začněte se službami ve free tier.
  6. Zaveďte monitoring, logování a zabezpečení od samého začátku.