翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アップストリームリポジトリを持つパッケージバージョンのリクエスト
クライアント (npm など) my_repo
が、複数のアップストリーム CodeArtifact リポジトリを持つ という名前のリポジトリからパッケージバージョンをリクエストすると、次のことが発生する可能性があります。
-
リクエストされたパッケージバージョンが
my_repo
に含まれる場合、クライアントにリターンされます。 -
リクエストされたパッケージバージョン
my_repo
が に含まれていない場合、 CodeArtifactmy_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-B
は https://npmjs.com
もしnpm
がrepo-A
リポジトリを使用するよう設定されていた場合、npm install
の実行によりhttps://npmjs.comrepo-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
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
出力例:
{ "package": "
lodash
", "format": "npm
", "versions": [ { "version": "4.17.15", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }
repo-B
はhttps://npmjs.comrepo-B
に保存されます。これらのパッケージバージョンは、repo-B
とのアップストリーム関係を持つ任意のダウンストリームリポジトリによって取得されている可能性があります。
repo-B
のコンテンツは、https://npmjs.comlodash
パッケージのすべてのバージョンを見るためには、以下のようにlist-package-versions
を使用します。
aws codeartifact list-package-versions --repository
repo-B
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
--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-A
はrepo-B
を、repo-B
はrepo-C
をアップストリームとして持つことができます。この設定により、repo-B
とrepo-C
にあるパッケージバージョンがrepo-A
から入手可能になります。
パッケージマネージャーがリポジトリrepo-A
に接続し、リポジトリrepo-C
からパッケージバージョンを取得する場合、そのパッケージバージョンはリポジトリrepo-B
に保持されません。パッケージバージョンは、最も下流のリポジトリにのみ保持されます、この例では、repo-A
にのみ保持されます。中間リポジトリには保持されません。これは、長いチェーンにも当てはまります。例えば、repo-A
、repo-B
、repo-C
および repo-D
という4 つのリポジトリがあり、repo-A
に接続しているパッケージマネージャーが、repo-D
からパッケージバージョンを取得した場合、そのパッケージバージョンは repo-A
に保持されますが、repo-B
また repo-C
には保持されません。
パッケージ保持に関する動作は、外部リポジトリからパッケージバージョンをプルする場合と同様ですが、パッケージバージョンは常に外部接続を持つリポジトリに保持されます。例えば、repo-A
はアップストリームとしてrepo-B
を持っているとします。repo-B
はrepo-C
をアップストリームとして持ち、repo-C
はnpmjs.comを外部接続として持っています。次の図を参照してください。
repo-A
に接続しているパッケージマネージャーが、例えば lodash 4.17.20 というパッケージバージョンをリクエストし、そのパッケージバージョンが 3 つのリポジトリのいずれにも存在しない場合は、npmjs.com から取得されます。lodash4.17.20が取得された場合、最も下流のリポジトリとするrepo-A
と、npmjs.com への外部接続があるとするrepo-C
に保持されます。lodash4.17.20は中間リポジトリである repo-B
には保持されません。