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.
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.
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.
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.
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.
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.
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.
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).
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.
ZaawansowanyPolityki 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.
ZaawansowanyRezerwacja 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.
ZaawansowanyCache 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).
PoczatkujacyKontrola 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).
ZaawansowanyKosztowo 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.
PoczatkujacyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CodeArtifact bezposrednio w konsoli AWS.
Do czego sluzy AWS CodeArtifact?
Prywatne paczki firmowe
Publikuj wewnetrzne biblioteki (npm, pip, Maven) dostepne tylko dla zespolów w organizacji. Pelna kontrola wersji i dostepu.
Proxy publicznych rejestrów
CodeArtifact jako upstream proxy do npmjs.com, pypi.org, Maven Central. Cache paczek, kontrola wersji, ochrona przed supply chain attacks.
CI/CD Artifact Management
Integracja z CodeBuild i CodePipeline. Buildy pobieraja i publikuja artefakty przez CodeArtifact z autoryzacja IAM.
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.
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.
1. Które formaty paczek obsluguje CodeArtifact?
2. Co to jest Domain w CodeArtifact?
3. Jak dlugo wazny jest domyslny authorization token CodeArtifact?
Czesto uzywane razem z AWS CodeArtifact
Chcesz poznac AWS CodeArtifact w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CodeArtifact krok po kroku. Teoria + praktyka od zera.