AWS CodeArtifact のアイコン

AWS CodeArtifact

ソフトウェアパッケージを安全に保存・共有できるフルマネージドなアーティファクトリポジトリ

何ができるか

AWS CodeArtifact は、npm、PyPI、Maven、NuGet などの主要なパッケージマネージャーに対応したフルマネージドのアーティファクトリポジトリサービスです。組織内で使用するソフトウェアパッケージを一元管理し、パブリックリポジトリからのパッケージ取得をプロキシとして中継することで、依存関係の安全性と可用性を確保します。IAM ポリシーによるきめ細かなアクセス制御が可能で、チーム間でのパッケージ共有も安全に行えます。

どのような場面で使うか

社内で開発した共通ライブラリの一元管理と配布、npm や PyPI のパブリックパッケージをキャッシュして依存関係の安定性を確保する、CI/CD パイプラインでのビルド成果物の保存と配布、サプライチェーン攻撃対策としてパッケージの取得元を制御する、複数チーム間でのプライベートパッケージの安全な共有など、ソフトウェア開発のパッケージ管理全般で活用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

社内の図書館に例えるとわかりやすいでしょう。外部の書店 (パブリックリポジトリ) から本 (パッケージ) を買うたびに在庫切れや品質のリスクがあります。社内図書館 (CodeArtifact) を設置すれば、よく使う本を常備しておけるうえ、社員が書いた社内マニュアル (プライベートパッケージ) も一緒に管理でき、誰がどの本を借りたかも記録できます。

CodeArtifact とは

AWS CodeArtifact は、2020 年にリリースされたフルマネージドのアーティファクトリポジトリサービスです。ソフトウェア開発では多数の外部パッケージに依存しますが、パブリックリポジトリの障害やパッケージの削除、悪意あるパッケージの混入といったリスクが存在します。CodeArtifact はこれらのリスクを軽減し、組織全体でパッケージを安全かつ効率的に管理するための基盤を提供します。

主な特徴

CodeArtifact はドメインとリポジトリの 2 階層でパッケージを管理します。ドメインは組織全体の管理単位で、その中に複数のリポジトリを作成できます。各リポジトリはアップストリーム接続を設定でき、パブリックリポジトリ (npmjs.com、pypi.org など) からのパッケージを自動的にキャッシュします。一度キャッシュされたパッケージはパブリックリポジトリが利用不可になっても引き続き使用でき、ビルドの安定性が向上します。パッケージのバージョン管理や依存関係の追跡も自動で行われます。

セキュリティとアクセス制御

CodeArtifact は IAM ポリシーとリソースベースポリシーの両方でアクセス制御が可能です。リポジトリごとに読み取り・書き込み権限を細かく設定でき、特定のチームだけがパッケージを公開できるよう制限できます。また、AWS KMS による保存時の暗号化を標準でサポートしており、転送中のデータも TLS で保護されます。CloudTrail との統合により、パッケージの取得・公開の操作ログを監査証跡として記録できます。

CI/CD パイプラインとの統合

CodeArtifact は CodeBuild、CodePipeline、GitHub Actions、Jenkins などの主要な CI/CD ツールとシームレスに統合できます。ビルド時に CodeArtifact から依存パッケージを取得し、ビルド成果物を CodeArtifact に公開するワークフローを簡単に構築できます。認証トークンは AWS CLI で取得でき、有効期限付きのトークンにより一時的なアクセスを安全に提供します。

Azure・オンプレミスとの比較

Azure の対応サービス Azure Artifacts
オンプレミスでの対応手段 JFrog Artifactory、Sonatype Nexus

AWS の優位点

  • IAM ポリシーによるきめ細かなアクセス制御が可能で、リポジトリ単位・パッケージ単位での権限管理を AWS の統一的な認証基盤で実現できる
  • パブリックリポジトリのパッケージを自動キャッシュする機能により、外部リポジトリの障害時でもビルドが中断せず開発の継続性を確保できる
  • CodeBuild や CodePipeline との AWS ネイティブ統合により、CI/CD パイプラインでのパッケージ管理を追加設定なしにシームレスに組み込める

注意点

  • パブリックリポジトリからのパッケージ取得はアップストリーム接続経由で自動キャッシュされるが、初回取得時にはパブリックリポジトリへのアクセスが必要
  • 認証トークンの有効期限はデフォルト 12 時間のため、長時間のビルドプロセスではトークンの更新を考慮する必要がある

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。