AWS CodeArtifact
CI/CD Developer Associate DevOps Engineer Professional

AWS CodeArtifact

AWS CodeArtifact

W pelni zarzadzane repozytorium artefaktów w AWS. Hostuj prywatne paczki npm, pip, Maven, NuGet i Swift z automatycznym proxy do publicznych rejestrów.

AWS CodeArtifact to w pelni zarzadzany serwis repozytorium artefaktów, który pozwala przechowywac, publikowac i udostepniac paczki softwareowe uzywane w procesie budowania aplikacji. Obsluguje popularne menadzery pakietów: npm, pip (PyPI), Maven, Gradle, NuGet, Swift i Ruby (gems).

CodeArtifact moze dzialac jako proxy do publicznych rejestrów (npmjs.com, pypi.org, Maven Central) - Twoje buildy pobieraja paczki przez CodeArtifact, który je cachuje. Daje to kontrole nad tym, jakie wersje sa uzywane, eliminuje ryzyko supply chain attacks i przyspiesza buildy dzieki lokalnemu cache.

Czy wiesz, ze...

CodeArtifact moze dzialac jako centralne repozytorium dla calej organizacji AWS. Dzieki resource-based policies mozesz udostepnic jedno repozytorium wielu kontom AWS w Organizations. Paczka pobrana raz z publicznego rejestru jest cachowana lokalnie - nawet jesli npmjs.com padnie, Twoje buildy nadal beda dzialac.

Pro Tip

W pipeline CI/CD zawsze generuj token CodeArtifact na poczatku buildu w buildspec.yml (faza pre_build). Uzyj komendy aws codeartifact get-authorization-token i ustaw wynik jako zmienna srodowiskowa. Skonfiguruj upstream repository z publicznym rejestrem, aby Twoje buildy automatycznie cachowaly paczki - dramatycznie przyspieszy to kolejne buildy.

AWS CodeArtifact to zarzadzany rejestr artefaktow, ktory pozwala przechowywac, publikowac i udostepniac pakiety w organizacji. Ponizej przedstawiamy proces konfiguracji i uzycia CodeArtifact od domeny po polityki retencji.

1

Utworzenie domeny (domain)

Domena to najwyzszy poziom organizacji w CodeArtifact - grupuje repozytoria i zapewnia wspolna politykle szyfrowania (jeden klucz KMS). Jedna domena na organizacje to zalecany wzorzec. Domena pozwala na deduplikacje pakietow miedzy repozytoriami (pakiet przechowywany raz, referencowany wielokrotnie), co redukuje koszty storage.

2

Utworzenie repozytorium

Repozytorium przechowuje pakiety jednego lub wielu formatow: npm, PyPI, Maven, NuGet, Swift, Cargo. Tworzysz osobne repozytoria dla roznych celow - np. "internal" dla wlasnych pakietow, "shared" z upstream do publicznych rejestrow. Kazde repozytorium ma unikalne endpoint URL dla kazdego formatu pakietow.

3

Podlaczenie upstream (npm/PyPI/Maven)

External connection laczy repozytorium z publicznym rejestrem (npmjs.com, pypi.org, maven-central). Gdy developer zada pakietu, CodeArtifact najpierw sprawdza lokalne repozytorium, potem upstream repositories, na koncu external connection. Pobrany pakiet jest cachowany lokalnie - kolejne pobrania sa szybsze i nie wymagaja dostepu do internetu.

4

Konfiguracja package managera

Dla npm: aws codeartifact login --tool npm. Dla pip: aws codeartifact login --tool pip. Dla Maven: wygeneruj settings.xml z tokenem. Komenda login konfiguruje package manager, aby uzywal CodeArtifact jako zrodla pakietow. Token jest wazny 12 godzin (konfigurowalne). W CI/CD uzyj IAM Role zamiast loginowania.

5

Publikowanie pakietow

Wlasne pakiety publikujesz standardowymi narzedziami: npm publish, twine upload, mvn deploy. CodeArtifact przechowuje wszystkie wersje pakietu - mozesz oznaczyc wersje jako "unlisted" (niedostepna do pobrania, ale nie usunieta) lub ustawic package origin controls aby blokowac publikacje z zewnetrznych zrodel (ochrona przed dependency confusion).

6

Polityki retencji

Skonfiguruj automatyczne usuwanie starych wersji pakietow, aby kontrolowac koszty storage. Polityki retencji dzialaja na poziomie repozytorium - mozesz ustawic np. "usun wersje starsze niz 90 dni" lub "zachowaj ostatnie 10 wersji". Wazne: retencja nie dotyczy pakietow oznaczonych jako "latest" - najnowsza wersja jest zawsze zachowana.

Praktyczne wskazowki z wdrazania CodeArtifact w organizacjach - od chainowania repozytoriow po ochrone przed atakami supply chain.

Upstream chaining - lancuch repozytoriow

Ustaw lancuch repozytoriow: team-repo -> shared-repo -> external-connection. Developer pobiera z team-repo, ktore automatycznie szuka w shared-repo, a potem w publicznym rejestrze. To pozwala na wstawienie wlasnych wersji pakietow (override) na dowolnym poziomie lancucha. Max 10 upstream repozytoriow w lancuchu.

Zaawansowany

Polityki na poziomie domeny

Domain policy (resource-based) kontroluje dostep cross-account do calej domeny. Jedno konto jest wlascicielem domeny, inne konta moga czytac lub publikowac pakiety przez IAM assume role. To centralizuje zarzadzanie artefaktami w organizacji - np. zespol platform udostepnia wewnetrzne biblioteki wszystkim zespolom developerskim.

Zaawansowany

Rezerwacja namespace - ochrona przed dependency confusion

Package origin controls pozwalaja zdefiniowac, skad moze przyjsc pakiet o danej nazwie. Ustaw "internal" dla wlasnych namespace (np. @mycompany/*) - CodeArtifact zablokuje prube pobrania pakietu o tej nazwie z publicznego rejestru. To kluczowa ochrona przed atakami dependency confusion, gdzie atakujacy publikuje zlosliwy pakiet o nazwie wewnetrznej biblioteki.

Zaawansowany

Cache publicznych pakietow

CodeArtifact dziala jako transparentny cache npm/PyPI/Maven. Pierwsza instalacja pobiera pakiet z internetu i cachuje lokalnie. Kolejne buildy uzywaja cache - szybciej i bez ryzyka niedostepnosci npmjs.com. Szczegolnie wazne w CI/CD: CodeBuild w VPC bez internetu moze pobierac pakiety z CodeArtifact przez VPC Endpoint (PrivateLink).

Poczatkujacy

Kontrola na poziomie assetow

Kazdy pakiet sklada sie z assetow (np. npm tarball, PyPI wheel). CodeArtifact pozwala na inspekcje assetow przed pobraniem, generowanie checksumow i walidacje integralnosci. Mozesz tez uzyc EventBridge do monitorowania publikacji nowych wersji i automatycznego uruchamiania skanowania bezpieczenstwa (np. Snyk, SonarQube).

Zaawansowany

Kosztowo efektywne lustro npm/PyPI

CodeArtifact kosztuje $0.05/GB/miesiac za storage i $0.05/10,000 requestow. Dla typowej organizacji (1000 pakietow, 100 buildow dziennie) to kilka dolarow miesiecznie. Porownaj z utrzymywaniem Nexus/Artifactory na EC2 (min. $50-100/miesiac za instancje). CodeArtifact jest tez bezobslugowy - brak patchy, backupow, skalowania.

Poczatkujacy

Screenshoty z AWS Console

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

Do czego sluzy AWS CodeArtifact?

01

Prywatne paczki firmowe

Publikuj wewnetrzne biblioteki (npm, pip, Maven) dostepne tylko dla zespolów w organizacji. Pelna kontrola wersji i dostepu.

02

Proxy publicznych rejestrów

CodeArtifact jako upstream proxy do npmjs.com, pypi.org, Maven Central. Cache paczek, kontrola wersji, ochrona przed supply chain attacks.

03

CI/CD Artifact Management

Integracja z CodeBuild i CodePipeline. Buildy pobieraja i publikuja artefakty przez CodeArtifact z autoryzacja IAM.

04

Wspóldzielenie paczek cross-account

Udostepniaj repozytoria miedzy kontami AWS w organizacji. Jedno repozytorium dla wielu zespolów i projektów.

Co musisz wiedziec?

Domain

Najwyzszy poziom organizacji w CodeArtifact. Grupuje repozytoria, zarzadza szyfrowaniem (KMS) i uprawnieniami. Jedno konto moze miec wiele domen.

Repository

Kontener na paczki. Moze miec upstream repositories (inne repozytoria CodeArtifact lub publiczne rejestry) tworzac lancuch pobierania.

Upstream Repository

Repozytorium zródlowe, z którego paczki sa pobierane, gdy nie zostana znalezione lokalnie. Np. publiczny npmjs.com jako upstream dla prywatnego repo.

Package Version

Konkretna wersja paczki (np. [email protected]). CodeArtifact przechowuje wszystkie opublikowane wersje i pozwala na zarzadzanie ich statusem.

Authorization Token

Tymczasowy token (domyslnie 12h) generowany przez AWS CLI, uzywany do autoryzacji menadzera pakietów (npm, pip) przy komunikacji z CodeArtifact.

Architektura: Zarzadzanie artefaktami z CodeArtifact

Architektura centralnego rejestru artefaktow dla organizacji. Developerzy publikuja wewnetrzne pakiety, a CodeArtifact sluzy jako proxy i cache dla publicznych rejestrow. CI/CD pobiera zaleznosci bez dostepu do internetu.

Developer npm publish / pip install z lokalnego srodowiska
npm/pip/maven
AWS CodeArtifact
AWS CodeArtifact Centralny rejestr pakietow z cache i upstream chaining
External connection
npmjs.com / PyPI Publiczne rejestry jako external connection upstream
Pull packages
AWS CodeBuild
AWS CodeBuild CI/CD pobiera zaleznosci z CodeArtifact przez VPC Endpoint
Deploy
AWS Lambda
AWS Lambda Lambda layers zbudowane z pakietow CodeArtifact
Skonfiguruj VPC Endpoint (PrivateLink) dla CodeArtifact, aby CodeBuild w prywatnym subnecie mogl pobierac pakiety bez NAT Gateway - oszczednosc na kosztach transferu.
Uzyj EventBridge do monitorowania nowych wersji pakietow i automatycznego triggerowania pipeline CI/CD przy publikacji nowej wersji biblioteki wspoldzielonej.
Wlacz package origin controls dla wszystkich wewnetrznych namespace, aby zablokowac ataki dependency confusion z publicznych rejestrow.

Ile kosztuje AWS CodeArtifact?

Storage

Oplata za przechowywanie artefaktów w repozytorium. Rozliczanie per GB miesiecznie.

$0.05/GB/miesiac za storage artefaktów

Requesty

Oplata za requesty do repozytoriów (pobieranie, publikowanie, listowanie paczek).

$0.05 za 10 000 requestów

Transfer danych

Transfer do internetu i miedzy regionami jest platny. Transfer wewnatrz regionu jest darmowy.

Transfer w regionie: $0.00, do internetu: standardowe stawki AWS

Free Tier

2 GB storage i 100 000 requestow miesiecznie - Free Tier bezterminowy (nie wygasa po 12 miesiacach).

Wystarczy na maly/sredni zespól deweloperski

Przyklady AWS CLI

Utwórz domene i repozytorium

Tworzy domene i repozytorium CodeArtifact

aws codeartifact create-domain --domain moja-firma && \
aws codeartifact create-repository \
 --domain moja-firma \
 --repository prywatne-paczki \
 --description "Wewnetrzne paczki zespolu backend"

Skonfiguruj npm z CodeArtifact

Loguje npm do repozytorium CodeArtifact (token wazny 12h)

aws codeartifact login \
 --tool npm \
 --domain moja-firma \
 --domain-owner 123456789012 \
 --repository prywatne-paczki

Skonfiguruj pip z CodeArtifact

Loguje pip do repozytorium CodeArtifact

aws codeartifact login \
 --tool pip \
 --domain moja-firma \
 --domain-owner 123456789012 \
 --repository prywatne-paczki

Dodaj upstream publiczny rejestr

Polacz repozytorium z publicznym npmjs jako upstream

aws codeartifact associate-external-connection \
 --domain moja-firma \
 --repository prywatne-paczki \
 --external-connection public:npmjs

Quiz: AWS CodeArtifact

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

Twoj wynik: 0 / 3

1. Które formaty paczek obsluguje CodeArtifact?

2. Co to jest Domain w CodeArtifact?

3. Jak dlugo wazny jest domyslny authorization token CodeArtifact?

Chcesz poznac AWS CodeArtifact w praktyce?

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

Zacznij darmowy kurs Wszystkie serwisy