アップストリームリポジトリを持つパッケージバージョンのリクエスト - Amazon CodeCatalyst

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アップストリームリポジトリを持つパッケージバージョンのリクエスト

次の例は、パッケージマネージャーがアップストリームリポジトリを持つ CodeCatalyst パッケージリポジトリからパッケージをリクエストする場合のシナリオを示しています。

この例では、npm のようなパッケージマネージャーが、複数のアップストリームリポジトリを持つ downstream という名前のパッケージリポジトリからパッケージバージョンをリクエストします。パッケージがリクエストされると、次のことが発生する可能性があります。

  • リクエストされたパッケージバージョンがdownstreamに含まれる場合、クライアントにリターンされます。

  • リクエストされたパッケージバージョンが downstream にない場合、CodeCatalyst は downstream のアップストリームリポジトリでこのパッケージバージョンを検索します。パッケージバージョンが見つかると、そのバージョンへのリファレンスがdownstreamにコピーされます、そしてパッケージのバージョンがクライアントに返されます。

  • downstream にもそのアップストリームリポジトリにもパッケージバージョンがない場合、クライアントには HTTP 404 Not Found レスポンスが返されます。

1 つのリポジトリに許可される直接アップストリームリポジトリの最大数は 10 です。CodeCatalyst がパッケージバージョンがリクエストされた際に検索するリポジトリの最大数は 25 です。

アップストリームリポジトリからのパッケージの保持

リクエストされたパッケージバージョンが、アップストリームリポジトリで見つかった場合、そのバージョンのリファレンスは保持され、リクエスト元のダウンストリームリポジトリで常時利用できます。これにより、アップストリームリポジトリが予期せず停止した場合でも、パッケージにアクセスできます。保持されたパッケージバージョンは、次のいずれの影響も受けません:

  • アップストリームリポジトリの削除。

  • アップストリームリポジトリのダウンストリームリポジトリからの切断。

  • アップストリームリポジトリからのパッケージバージョンの削除。

  • アップストリームリポジトリのパッケージバージョンの編集(例えば、新しいアセットを追加するなど)。

アップストリームの関係を通じてパッケージを取得する

CodeCatalyst は、アップストリームリポジトリと呼ばれる複数のリンクされたリポジトリを介してパッケージを取得できます。CodeCatalyst パッケージリポジトリが、ゲートウェイリポジトリへのアップストリーム接続を持つ別の CodeCatalyst パッケージリポジトリへのアップストリーム接続を持っている場合、アップストリームリポジトリにないパッケージのリクエストは、外部リポジトリからコピーされます。例えば、repo-A という名前のリポジトリにゲートウェイリポジトリ npm-public-registry-gateway へのアップストリーム接続があるとします。npm-public-registry-gateway にはパブリックパッケージリポジトリ https://npmjs.com へのアップストリーム接続があります。

簡略な3つの連結したリポジトリを示すアップストリームリポジトリの図。

もし npmrepo-A リポジトリを使用するよう設定されていた場合、npm install の実行によりhttps://npmjs.com から npm-public-registry-gateway へのパッケージのコピーが開始されます。インストールされているバージョンもrepo-Aプルされます。次の例では、lodashがインストールされます。

$ npm config get registry https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s

npm install の実行後、repo-A には最新バージョン (lodash 4.17.20)のみが含まれています。なぜなら、それが npm によって repo-A から取得されたバージョンだからです。

npm-public-registry-gatewayhttps://npmjs.com に外部アップストリーム接続するため、https://npmjs.com からインポートされるすべてのパッケージバージョンは npm-public-registry-gateway に保存されます。これらのパッケージバージョンは、npm-public-registry-gatewayとのアップストリーム関係を持つ任意のダウンストリームリポジトリによって取得されている可能性があります。

npm-public-registry-gateway の内容から、https://npmjs.com からインポートされたすべてのパッケージとパッケージバージョンを段階的に確認できます。

中間リポジトリでのパッケージの保持

CodeCatalyst を使用すると、アップストリームリポジトリを連結できます。例えば、repo-Arepo-B を、repo-Brepo-C をアップストリームとして設定できます。この設定により、repo-Brepo-Cにあるパッケージバージョンがrepo-Aから入手可能になります。

簡略な3 つの連結したリポジトリを示すアップストリームリポジトリの図。

パッケージマネージャーがリポジトリ repo-A に接続し、リポジトリ repo-C からパッケージバージョンを取得する場合、そのパッケージバージョンはリポジトリ repo-B に保持されません。パッケージバージョンは、最も下流のリポジトリにのみ保持されます。この例では、repo-A にのみ保持されます。中間リポジトリには保持されません。これは、長いチェーンにも当てはまります。例えば、repo-Arepo-Brepo-C repo-D という 4 つのリポジトリがあり、repo-A に接続しているパッケージマネージャーが、repo-D からパッケージバージョンを取得した場合、そのパッケージバージョンは repo-A に保持されますが、repo-Brepo-C には保持されません。

パッケージ保持に関する動作は、外部リポジトリからパッケージバージョンをプルする場合と同様ですが、パッケージバージョンはパブリックリポジトリへの直接のアップストリーム接続を持つゲートウェイリポジトリに保持されます。例えば、repo-Arepo-B をアップストリームリポジトリとしています。repo-Bnpm-public-registry-gateway をアップストリームリポジトリとしており、このリポジトリはパブリックリポジトリ npmjs.com とアップストリーム接続されています。次の図を参照してください。

npmjs.com への外部アップストリーム接続に連結された 3 つのリポジトリを示すアップストリームリポジトリ図。

repo-A に接続しているパッケージマネージャーが、例えば lodash 4.17.20 という特定のパッケージバージョンをリクエストし、そのパッケージバージョンが 3 つのリポジトリのいずれにも存在しない場合は、npmjs.com から取得されます。lodash 4.17.20 が取得されると、最も下流のリポジトリである repo-Aと、外部のパブリックリポジトリである npmjs.com へのアップストリーム接続がある npm-public-registry-gateway に保持されます。lodash 4.17.20 は中間リポジトリである repo-B には保持されません。