3.1.6 AWS CodeArtifact

AWS CodeArtifact — Managed Artifact Repository

Tổng quan

CodeArtifact là fully managed artifact repository service cho phép store, publish, và share software packages.

Core Concepts

Domain → Repository → Packages
         ├── npm packages
         ├── PyPI packages
         ├── Maven packages
         ├── NuGet packages
         └── Upstream connection → npmjs.com / PyPI / Maven Central
ConceptMô tả
DomainTop-level container, cross-account sharing
RepositoryChứa packages, có thể có upstream repos
Upstream RepositoryProxy tới public registries hoặc repo khác
Packagenpm, PyPI, Maven, NuGet, Swift, generic

Upstream Repositories

Developer → CodeArtifact Repo (private)
                ↓ (cache miss)
            Upstream: CodeArtifact Repo (shared)
                ↓ (cache miss)
            External: npmjs.com / PyPI
  • Cache packages từ public registries
  • Giảm dependency on external sources
  • Control approved packages

Authentication

# Get auth token (12 hours default)
aws codeartifact get-authorization-token \
  --domain my-domain \
  --query authorizationToken --output text

# Configure npm
aws codeartifact login --tool npm \
  --domain my-domain \
  --repository my-repo

# Configure pip
aws codeartifact login --tool pip \
  --domain my-domain \
  --repository my-repo

Integration với CI/CD

# buildspec.yml — CodeBuild
phases:
  pre_build:
    commands:
      - aws codeartifact login --tool npm --domain my-domain --repository my-repo
  build:
    commands:
      - npm install
      - npm run build
      - npm publish  # Publish private package

Cross-Account Sharing

  • Domain-level resource policy
  • Share packages across AWS accounts
  • Centralized package management

So sánh

FeatureCodeArtifactS3ECR
Package typesnpm, PyPI, Maven, NuGetAny fileContainer images
Versioning✅ Built-in✅ Object versioning✅ Image tags
Upstream proxy
Package manager integration✅ NativeDocker CLI

Exam Tip: CodeArtifact = managed artifact repository cho npm/PyPI/Maven packages. Upstream repos = proxy + cache public packages. Cross-account sharing via domain resource policy. Auth token expires sau 12 hours (default).