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

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

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

クライアント (npm など) my_repoが、複数のアップストリーム CodeArtifact リポジトリを持つ という名前のリポジトリからパッケージバージョンをリクエストすると、次のことが発生する可能性があります。

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

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

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

create-repositoryまたはupdate-repositoryコマンドを使ってアップストリームリポジトリを追加した場合、--upstreamsパラメータに渡された順番によって、パッケージバージョンがリクエストされた時の優先順位が決まります。パッケージバージョンがリクエストされたときに CodeArtifact 使用する順序--upstreamsで、 でアップストリームリポジトリを指定します。詳細については、「アップストリームリポジトリの優先順位」を参照してください。

1 つのリポジトリに許可される直接アップストリームリポジトリの最大数は 10 です。直接アップストリームリポジトリは直接アップストリームリポジトリを持つことができるため、パッケージバージョンを 10 個以上検索 CodeArtifact できます。パッケージバージョンがリクエストされたときに CodeArtifact 検索されるリポジトリの最大数は 25 です。

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

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

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

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

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

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

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

CodeArtifact リポジトリと外部接続があるリポジトリとの間にアップストリーム関係がある場合、アップストリームリポジトリにないパッケージのリクエストは外部リポジトリからコピーされます。例えば、次の設定を考えてみます。repo-Aという名前のリポジトリが、repo-Bという名のアップストリームリポジトリを持っています。repo-Bhttps://npmjs.comに外部接続しています。

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

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

$ npm config get registry https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my-downstream-repo/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s

npm installの実行後、repo-A には最新バージョン (lodash 4.17.20)のみが含まれますが、その理由はそのバージョンがrepo-Aからnpmにより取得されたためです。

aws codeartifact list-package-versions --repository repo-A --domain my_domain \ --domain-owner 111122223333 --format npm --package lodash

出力例:

{ "package": "lodash", "format": "npm", "versions": [ { "version": "4.17.15", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }

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

repo-Bのコンテンツは、https://npmjs.comからインポートされたすべてのパッケージとパッケージバージョンを段階的に確認する方法を紹介します。例えば、段階的にインポートされたlodashパッケージのすべてのバージョンを見るためには、以下のようにlist-package-versionsを使用します。

aws codeartifact list-package-versions --repository repo-B --domain my_domain \ --domain-owner 111122223333 --format npm --package lodash --max-results 5

出力例:

{ "package": "lodash", "format": "npm", "versions": [ { "version": "0.10.0", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.2", "revision": "REVISION-2-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.0", "revision": "REVISION-3-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.1", "revision": "REVISION-4-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.1.0", "revision": "REVISION-5-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ], "nextToken": "eyJsaXN0UGFja2FnZVZlcnNpb25zVG9rZW4iOiIwLjIuMiJ9" }

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

CodeArtifact では、アップストリームリポジトリを連鎖できます。例えば、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-B また repo-C には保持されません。

パッケージ保持に関する動作は、外部リポジトリからパッケージバージョンをプルする場合と同様ですが、パッケージバージョンは常に外部接続を持つリポジトリに保持されます。例えば、repo-Aはアップストリームとしてrepo-Bを持っているとします。repo-Brepo-Cをアップストリームとして持ち、repo-Cnpmjs.comを外部接続として持っています。次の図を参照してください。

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

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