AWS CodeDeploy
CI/CD Developer Associate DevOps Engineer Professional Solutions Architect Associate

AWS CodeDeploy

AWS CodeDeploy

Automatyzuj wdrozenia aplikacji na EC2, Lambda i ECS. Strategie blue/green, canary i rolling z automatycznym rollbackiem w razie problemów.

AWS CodeDeploy to w pelni zarzadzany serwis do automatyzacji wdrozen aplikacji na rózne platformy obliczeniowe: instancje EC2, funkcje Lambda, kontenery ECS, a nawet serwery on-premises. Zamiast recznego kopiowania plików i restartowania serwisów, CodeDeploy robi to za Ciebie - bezpiecznie i powtarzalnie.

Kluczowa zaleta CodeDeploy to strategie wdrozen: in-place (aktualizacja w miejscu), blue/green (dwie wersje równolegle), canary (stopniowe przekierowywanie ruchu) i linear (liniowy wzrost ruchu). Kazda strategia pozwala zminimalizowac ryzyko i automatycznie wycofac wdrozenie (rollback) w razie problemów.

Czy wiesz, ze...

CodeDeploy obsluguje nie tylko chmure AWS, ale takze serwery on-premises. Mozesz uzywac tego samego narzedzia i tych samych strategii wdrozen zarowno dla instancji EC2, jak i fizycznych serwerów w Twoim data center. Wystarczy zainstalowac CodeDeploy Agent na serwerze i zarejestrowac go jako on-premises instance.

Pro Tip

Zawsze konfiguruj automatyczny rollback z alarmami CloudWatch. Ustaw alarm na metryki takie jak 5xx errors, latency czy CPU, a CodeDeploy automatycznie wycofa wdrozenie, jesli cos pójdzie nie tak. Dla blue/green na EC2 ustaw czas retencji starej floty na minimum 1 godzine - da Ci to czas na weryfikacje przed usunieciem starych instancji.

AWS CodeDeploy automatyzuje wdrozenia aplikacji na EC2, ECS, Lambda i serwery on-premises. Ponizej opisujemy pelny cykl - od konfiguracji aplikacji po strategie deploymentu i automatyczny rollback.

1

Tworzenie aplikacji CodeDeploy

Application w CodeDeploy to logiczny kontener grupujacy deployment groups i revisions. Wybierasz compute platform: EC2/On-Premises (instancje z CodeDeploy Agent), Amazon ECS (kontenery z task definitions) lub AWS Lambda (funkcje z wersjami). Nazwa aplikacji musi byc unikalna w regionie. Jedna aplikacja moze miec wiele deployment groups - np. staging i production.

2

Konfiguracja Deployment Group

Deployment Group definiuje: docelowe instancje (po tagach EC2 lub ASG name), service role (IAM), deployment configuration, load balancer settings, alarm configuration i auto rollback rules. Dla EC2 mozesz targetowac po tagach (np. Environment=Production) lub Auto Scaling Groups. Dla ECS wskazujesz ECS Service i ALB/NLB Target Groups. Deployment Group to kluczowy element - oddziela konfiguracje srodowisk.

3

Plik AppSpec - definicja wdrozenia

AppSpec (appspec.yml lub appspec.json) definiuje co i jak wdrozyc. Dla EC2: sekcja files (jakie pliki skopiowac i gdzie), permissions (uprawnienia plikow), hooks (skrypty do uruchomienia w kazdej fazie). Dla ECS: task definition, container name, container port. Dla Lambda: function name, current version, target version. AppSpec jest dostarczany razem z rewizja (kodem) w S3 lub GitHub.

4

Deployment Configuration - strategie wdrazania

In-place deployment (EC2): OneAtATime (bezpieczny, wolny), HalfAtATime (kompromis), AllAtOnce (szybki, ryzykowny). Blue/Green deployment (EC2/ECS): tworzy nowe instancje, testuje, przelaczy ruch, terminuje stare. Dla ECS: Canary (10% ruchu, czekaj, 100%), Linear (np. 10% co 10 minut), AllAtOnce. Dla Lambda: Canary10Percent5Minutes, Linear10PercentEvery1Minute lub AllAtOnce. Custom configurations pozwalaja zdefiniowac wlasne progi.

5

Traffic Shifting i testowanie

W blue/green deployment CodeDeploy kontroluje przelacznanie ruchu przez ALB/NLB. Dla ECS canary: 10% ruchu trafia na nowa wersje przez 5 minut - w tym czasie monitorujesz metryki i logi. Jesli CloudWatch Alarm nie zostanie wyzwolony, CodeDeploy przenosi 100% ruchu. Dla Lambda: wersje sa aliasowane, CodeDeploy zmienia wagi routingu. Caly proces jest w pelni automatyczny - zadna reczna interwencja nie jest potrzebna.

6

Rollback - automatyczny i reczny

Automatyczny rollback triggeruje sie gdy: deployment fails (np. hook script zwroci non-zero exit code), CloudWatch Alarm przejdzie w stan ALARM (np. error rate > 5%), lub minimum healthy instances spadnie ponizej progu. Rollback wdraza poprzednia revision - to nowy deployment, nie "cofniecie". Reczny rollback mozesz wykonac przez konsole lub CLI (create-deployment z poprzednia revision). Kazdy rollback jest logowany i widoczny w historii deploymentow.

Praktyczne wskazowki dotyczace wdrozen z CodeDeploy - od strategii blue/green po zaawansowane lifecycle hooks i integracje z innymi serwisami AWS.

Blue/Green dla zero-downtime deployments

Blue/Green z CodeDeploy tworzy nowy ASG (green) z nowa wersja aplikacji, testuje go, przelacza ruch z ALB i po wait time terminuje stary ASG (blue). Zalety: natychmiastowy rollback (przelacz ruch z powrotem), brak wplywu na dzialajaca produkcje, mozliwosc testowania green environment przed switch. Wada: podwojne koszty compute podczas deploymentu. Ustaw termination wait time na 15-60 minut - daje czas na wykrycie problemow.

Poczatkujacy

AppSpec hooks - lifecycle events

Dla EC2 kolejnosc hookow: ApplicationStop, DownloadBundle, BeforeInstall, Install, AfterInstall, ApplicationStart, ValidateService. Kluczowe hooks: BeforeInstall (backup aktualnej wersji, instalacja dependencies), AfterInstall (konfiguracja plikow, restart serwisow), ValidateService (smoke testy - czy aplikacja odpowiada na /health). Kazdy hook to skrypt (bash/PowerShell) z timeout - ustaw realistyczny timeout (domyslnie 3600s to za duzo, zazwyczaj 300s wystarczy).

Zaawansowany

CodeDeploy Agent na EC2

CodeDeploy Agent musi dzialac na kazdej instancji EC2 docelowej. Instaluj go przez User Data w Launch Template - wtedy kazda nowa instancja w ASG automatycznie ma agenta. Agent komunikuje sie z CodeDeploy przez HTTPS (port 443) - potrzebuje outbound internet access lub VPC Endpoint. Monitoruj /var/log/aws/codedeploy-agent/codedeploy-agent.log do debugowania. Ustaw automatyczne aktualizacje agenta przez SSM State Manager.

Poczatkujacy

Lambda traffic shifting - canary i linear

Dla Lambda CodeDeploy uzywa aliasow z weighted routing. Canary10Percent5Minutes: 10% ruchu na nowa wersje przez 5 minut, potem 100%. Linear10PercentEvery1Minute: co minute dodaje 10% ruchu. Skonfiguruj pre-traffic hook (Lambda function testujaca nowa wersje przed przekierowaniem ruchu) i post-traffic hook (walidacja po pelnym switch). CloudWatch Alarm na Errors i Duration metrykach triggeruje automatyczny rollback.

Zaawansowany

Automatyczny rollback z CloudWatch Alarms

Skonfiguruj CloudWatch Alarms monitorujace: HTTP 5xx error rate (prog np. > 1%), latency p99 (prog np. > 2s), custom business metrics (np. conversion rate). Dodaj te alarmy do deployment group - jesli ktorykolwiek przejdzie w ALARM podczas deploymentu, CodeDeploy automatycznie rollbackuje. To daje Ci safety net - nawet jesli deployment przejdzie wszystkie hooks, ale degraduje produkcje, zostanie cofniety.

Poczatkujacy

Deployment configurations dla ECS

ECS z CodeDeploy wspiera blue/green z ALB. Definiujesz dwa Target Groups - jeden dla aktualnej wersji (blue), drugi dla nowej (green). Strategie: ECSCanary10Percent5Minutes (bezpieczna, szybka walidacja), ECSLinear10PercentEvery1Minute (stopniowe przelaczanie), ECSAllAtOnce (szybkie, ryzykowne). Skonfiguruj test listener na osobnym porcie ALB - mozesz testowac green environment przed przeniesieniem produkcyjnego ruchu. Rollback przelaczy Target Groups z powrotem.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CodeDeploy bezposrednio w konsoli AWS.

Do czego sluzy AWS CodeDeploy?

01

Wdrozenia na flote EC2

Automatyczne wdrazanie nowej wersji aplikacji na dziesiатki lub setki instancji EC2 w kontrolowany sposób.

02

Blue/Green Deployments

Uruchomienie nowej wersji na nowej flocie, testowanie, a nastepnie przełaczenie ruchu. Zero downtime.

03

Wdrozenia Lambda

Stopniowe przekierowywanie ruchu na nowa wersje funkcji Lambda - canary (10% przez 10 min) lub linear (10% co 10 min).

04

Wdrozenia ECS

Blue/green deployment kontenerów ECS z automatycznym rollbackiem opartym na alarmach CloudWatch.

Co musisz wiedziec?

Application

Kontener logiczny grupujacy deployment groups, revisions i konfiguracje. Jedna aplikacja = jeden mikroserwis lub komponent.

Deployment Group

Zbiór docelowych zasobów (instancji EC2, funkcji Lambda, serwisów ECS) z konfiguracja strategii wdrozenia i rollbacku.

AppSpec File (appspec.yml)

Plik definiujacy co wdrozyc i jak. Okresla pliki do skopiowania, uprawnienia, lifecycle hooks (skrypty do uruchomienia na kazdym etapie).

Deployment Strategy

Sposób wdrozenia: In-Place (aktualizacja na miejscu), Blue/Green (nowa flota), Canary (maly % ruchu), Linear (stopniowy wzrost ruchu).

Lifecycle Hooks

Skrypty uruchamiane na róznych etapach wdrozenia: BeforeInstall, AfterInstall, ApplicationStart, ValidateService - pozwalaja na customowa logike.

Rollback

Automatyczne lub reczne wycofanie wdrozenia do poprzedniej wersji. Moze byc wyzwalane przez alarmy CloudWatch lub niepowodzenie deployment.

Architektura: Deployment Pipeline z CodeDeploy

Typowa architektura wdrozenia z CodeDeploy jako centralnym orkiestratorem. Rewizja z S3/GitHub jest wdrazana na EC2 Fleet, ECS lub Lambda z automatycznym rollbackiem opartym na CloudWatch Alarms.

S3 / GitHub (Revision)
S3 / GitHub (Revision) Pakiet aplikacji z appspec.yml i artefaktami buildu
Pobierz revision
AWS CodeDeploy
AWS CodeDeploy Orkiestracja wdrozenia: strategy, traffic shifting, lifecycle hooks, rollback
Deploy + hooks
EC2 Fleet / ECS / Lambda
EC2 Fleet / ECS / Lambda Docelowe srodowisko: in-place (EC2), blue/green (ECS), canary (Lambda)
Traffic shifting
Application Load Balancer
Application Load Balancer Kontrola ruchu: przelacznanie miedzy blue/green Target Groups
Rollback trigger
CloudWatch Alarms
CloudWatch Alarms Monitorowanie error rate, latency - trigger automatycznego rollbacku
Zawsze konfiguruj automatyczny rollback z CloudWatch Alarms - deployment bez rollback trigger to ryzyko dla produkcji. Monitoruj minimum: HTTP 5xx rate i latency p99.
Dla ECS blue/green ustaw termination wait time na min. 15 minut - daje to czas na walidacje nowej wersji i ewentualny reczny rollback przed terminacja starego task setu.
Lacz CodeDeploy z CodePipeline i CodeBuild dla pelnego CI/CD - CodeBuild produkuje artefakty, CodePipeline orkiestruje calosc, CodeDeploy wdraza na docelowe srodowisko.

Ile kosztuje AWS CodeDeploy?

EC2/On-Premises

Wdrozenia na instancje EC2 i serwery on-premises sa darmowe - bez limitu.

$0.00 - nieograniczone wdrozenia na EC2

Lambda/ECS

Placisz za kazde wdrozenie na Lambda lub ECS. Bardzo niska cena za deployment.

$0.02 za wdrozenie na Lambda/ECS

Free Tier

Wdrozenia na EC2 sa zawsze darmowe. Nie ma dodatkowego Free Tier dla Lambda/ECS.

EC2 deployments: zawsze $0.00

Przyklady AWS CLI

Utwórz aplikacje CodeDeploy

Tworzy nowa aplikacje dla platformy EC2/On-Premises

aws deploy create-application \
 --application-name moja-aplikacja \
 --compute-platform Server

Utwórz deployment group

Tworzy grupe wdrozeniowa z tagami EC2 i Auto Scaling

aws deploy create-deployment-group \
 --application-name moja-aplikacja \
 --deployment-group-name produkcja \
 --service-role-arn arn:aws:iam::123456789012:role/CodeDeployRole \
 --ec2-tag-filters Key=Environment,Value=Production,Type=KEY_AND_VALUE \
 --deployment-style deploymentType=BLUE_GREEN,deploymentOption=WITH_TRAFFIC_CONTROL

Uruchom wdrozenie

Startuje deployment z rewizja z S3

aws deploy create-deployment \
 --application-name moja-aplikacja \
 --deployment-group-name produkcja \
 --s3-location bucket=moj-bucket,key=app.zip,bundleType=zip

Sprawdz status wdrozenia

Pobiera szczególy i status biezacego deploymentu

aws deploy get-deployment \
 --deployment-id d-ABC123DEF \
 --query 'deploymentInfo.{Status:status,Strategy:deploymentStyle.deploymentType,Created:createTime}' \
 --output table

Quiz: AWS CodeDeploy

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Który plik definiuje proces wdrozenia w CodeDeploy?

2. Ile kosztuja wdrozenia CodeDeploy na instancje EC2?

3. Która strategia wdrozenia uruchamia nowa wersje na zupelnie nowej flocie?

4. Który lifecycle hook uruchamia sie PRZED instalacja nowej wersji?

Chcesz poznac AWS CodeDeploy w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CodeDeploy krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy