【DOP-C02】CodeArtifactとは?

はじめに

AWS CodeArtifactの概要と使用イメージがつかなかったため、記事にまとめた。

【ざっくりと理解】AWS CodeArtifact とは?

AWS CodeArtifact は、ソフトウェアパッケージを安全に保存・共有するためのフルマネージド型のアーティファクトリポジトリサービス。

アーティファクトリポジトリ: ビルドされたバイナリファイルを保存するためのリポジトリ

yumやpipなどのライブラリをイメージすれば良さそう。

基本的な概念

利用にあたって押さえておくべき主要な概念は以下の2つ

  • ドメイン(Domain): 組織内でリポジトリ群を一元管理する最上位の管理単位です。通常、1つの組織に対して1つのドメインを作成します。
  • リポジトリ(Repository): パッケージを実際に保管する場所。

pip / twine を使った具体的な手順

ここからは、AWS CLI を使用して環境を構築し、Python パッケージを公開・インストールする具体的な手順です。

STEP1: ドメインの作成

まず、組織の管理単位となるドメインを作成します。

aws codeartifact create-domain \
    --domain my-domain

STEP2: リポジトリの作成

作成したドメイン内に、Python パッケージを保管するリポジトリを作成します。

aws codeartifact create-repository \
    --domain my-company-domain \
    --repository my-python-repo

Step 3: pip / twine の認証設定 (login)

AWS CodeArtifact は認証に一時トークンを使用します。aws codeartifact login コマンドを実行すると、CLI がトークンを取得し、ローカルの pip 設定ファイル(pip.conf など)や twine の設定を自動で更新してくれます。

1. パッケージ取得用(pip)の認証:

aws codeartifact login \
    --tool pip \
    --domain my-company-domain \
    --domain-owner <AWSアカウントID> \
    --repository my-python-repo

2. パッケージ公開用(twine)の認証:

aws codeartifact login \
    --tool twine \
    --domain my-company-domain \
    --domain-owner <AWSアカウントID> \
    --repository my-python-repo

STEP4: パッケージの公開とインストール

1. パッケージのビルドと公開(twine):

自作の Python パッケージをビルドし、CodeArtifact へアップロードします。

# パッケージのビルド(dist/ 配下に wheel / sdist を生成)
python -m build

# CodeArtifact リポジトリへアップロード
twine upload --repository codeartifact dist/*

2. パッケージのインストール(pip):

pip のログイン設定が完了していれば、標準の pip install コマンドで CodeArtifact 上の社内パッケージや PyPI のキャッシュパッケージをインストールできます。

pip install my-shared-library

むすび

試験対策として、AWS CodeArtifactの概要と使用イメージをまとめてみた。
試験では、他サービスとの連携が問われるため問題にあたったらまた記事を作成していきたい。