Amazon Web Services は、アップストリームの場所からのプライベート パッケージとオープンソース パッケージの両方に機能する管理されたソフトウェア リポジトリである新しい CodeArtifact サービスを開発者向けに提供しています。
パッケージリポジトリは、今日の開発プロセスに不可欠な要素です。プロジェクトでライブラリを必要とする開発者は、パッケージマネージャーを使用して、npmjs(JavaScript)、Maven Central(Java)、PyPi(Python Package Index)などのリポジトリからコードを取得します。パッケージマネージャーの利点は、膨大な数のオープンソースライブラリの最新バージョンに簡単にアクセスできることです。しかし、欠点は、大量のコードがインポートされ、バグや脆弱性がないことを確認するのが難しいことです。
CodeArtifact を使用すると、組織はプライベートリポジトリを作成し、ソフトウェアパッケージのコンテンツと可用性の両方をより細かく制御できます。CodeArtifact は、npm、Maven、pip の3種類のパッケージタイプをサポートしています。1つのリポジトリに複数の種類のパッケージを混在させることができます。開発者は上流リポジトリへの接続を設定することで、CodeArtifact リポジトリを別のリポジトリと統合することもできます。
サポートされているアップストリームリポジトリのリストは短く、npmjs、PyPi、Maven Central、Google Android、Gradleプラグイン、CommonsWare Androidとなっています。アップストリームリポジトリに接続する際の難点は、アップストリームリポジトリを制御できないことです。ただし、特定のパッケージをオーバーライドすることは可能のようです。
AWS 上に構築されたサーバーレス プラットフォームを提供する Stackery は、「接続プールと管理用のオープンソース パッケージの 1 つに欠陥があり、アプリケーションで断続的にデータベース接続に失敗する問題が発生しました。AWS CodeArtifact は、上流の npmjs.org への透過的なプロキシとして機能し、ローカルでパッケージにパッチを適用して CodeArtifact リポジトリにアップロードすることができました」と述べています。
他の AWS DevOps ツール CodeBuild および CodePipeline との統合があるため、たとえば、パッケージが更新されたときに CodePipeline ビルドをトリガーできます。
CodeArtifactサービスは、プライベートパッケージのリポジトリとアップストリームのパブリックリポジトリへのアクセスを統合します。
もう1つの問題点は、CodeArtifactがアップストリームリポジトリのすべての機能を公開していないことです。そのため、例えばnpmjsに接続すると、フック通知やセキュリティ監査用の監査コメントを使用できません。PyPiを使用する場合は、XML-RPCやJSON APIではなく、レガシーAPIを使用する必要があります。
リポジトリのサポートも限られています。「Ruby Gemsのサポートを追加してほしい」という開発者からの初期の要望があります。サードパーティ製のカスタムアップストリームリポジトリもその一つです。.NET開発者が使用するNuGetパッケージ管理システムとリポジトリはまだサポートされていません。
CodeArtifactの料金は使用量に基づいて決定されます。2GBのストレージと月間最大10万リクエストまで利用可能な「常時無料」プランがあります。それを超えると、ストレージ料金は1GBあたり月額0.05ドル、リクエスト1万件あたり0.05ドルの追加料金が発生します。また、データ転送料金は1GBあたり最大0.09ドルかかります。
最初のリリースでは機能が制限されていますが、CodeArtifact は、これまで AWS クラウドの比較的弱い側面であった DevOps サービスを改善するための小さな方法として AWS にとって理にかなっています。®