アップストリームと外部接続からの Maven パッケージのリクエスト - CodeArtifact

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

アップストリームと外部接続からの Maven パッケージのリクエスト

標準アセット名のインポート

Maven Central などのパブリックリポジトリから Maven パッケージバージョンをインポートすると、AWS はそのパッケージバージョン内のすべてのアセットをインポート CodeArtifact しようとします。「アップストリームリポジトリを持つパッケージバージョンのリクエスト」で説明したように、インポートは次の場合に行われます。

  • クライアントは CodeArtifact 、リポジトリから Maven アセットをリクエストします。

  • パッケージバージョンはリポジトリにもアップストリームにも存在しない。

  • パブリック Maven リポジトリにアクセス可能な外部接続がある。

クライアントがリクエストしたアセットは 1 CodeArtifact つだけであっても、 はそのパッケージバージョンで見つけることができるすべてのアセットをインポートしようとします。が Maven パッケージバージョンで使用できるアセット CodeArtifact を検出する方法は、特定のパブリックリポジトリによって異なります。一部のパブリック Maven リポジトリは、アセットリストのリクエストをサポートし、別のリポジトリはアセットリストのリクエストをサポートしていません。アセットを一覧表示する方法を提供しないリポジトリの場合、 は、存在する可能性が高いアセット名のセット CodeArtifact を生成します。例えば、Maven パッケージバージョンのアセットがリクエストされると、 CodeArtifact junit 4.13.2は次のアセットのインポートを試みます。

  • junit-4.13.2.pom

  • junit-4.13.2.jar

  • junit-4.13.2-javadoc.jar

  • junit-4.13.2-sources.jar

非標準アセット名のインポート

Maven クライアントが上記のパターンのいずれにも一致しないアセットをリクエストすると、 はそのアセットがパブリックリポジトリに存在する CodeArtifact かどうかを確認します。アセットが存在する場合、そのアセットはインポートされ、既存のパッケージバージョンレコード (存在する場合) に追加されます。例えば、Maven パッケージバージョン com.android.tools.build:aapt2 7.3.1-8691043 には以下のアセットが含まれています。

  • aapt2-7.3.1-8691043.pom

  • aapt2-7.3.1-8691043-windows.jar

  • aapt2-7.3.1-8691043-osx.jar

  • aapt2-7.3.1-8691043-linux.jar

クライアントが POM ファイルをリクエストしたときに、 CodeArtifact がパッケージバージョンのアセットを一覧表示できない場合、インポートされるアセットは POM のみです。これは、他のどのアセットも標準のアセット名パターンに一致しないためです。ただし、クライアントが JAR アセットの 1 つをリクエストすると、そのアセットはインポートされ、 に保存されている既存のパッケージバージョンに追加されます CodeArtifact。「アップストリームリポジトリからのパッケージの保持」で説明されているように、最も下流のダウンストリームリポジトリ (クライアントがリクエストを行ったリポジトリ) と外部接続がアタッチされているリポジトリの両方のパッケージバージョンが、新しいアセットを含むように更新されます。

通常、パッケージバージョンが CodeArtifact リポジトリに保持されると、アップストリームリポジトリの変更の影響を受けません。詳細については、「アップストリームリポジトリからのパッケージの保持」を参照してください。ただし、前述した非標準名の Maven アセットの動作は、この規則の例外です。ダウンストリームのパッケージバージョンは、クライアントから追加のアセットをリクエストされない限り変更されませんが、この場合、保持されるパッケージバージョンは最初に保持された後に変更されるため、不変ではありません。この動作は、標準以外の名前の Maven アセットには からアクセスできないため必要です CodeArtifact。この動作により、パッケージバージョンがリポジトリに保持された後に、パブリック CodeArtifact リポジトリの Maven パッケージバージョンに追加された場合も が有効になります。

アセットオリジンの確認

以前に保持された Maven パッケージバージョンに新しいアセットを追加する場合、 CodeArtifact は保持されたパッケージバージョンのオリジンが新しいアセットのオリジンと同じであることを確認します。これにより、異なるパブリックリポジトリから異なるアセットが発行される「混在」パッケージバージョンの作成を防ぐことができます。このチェックを行わないと、Maven パッケージバージョンが複数のパブリックリポジトリに公開され、それらのリポジトリが CodeArtifact リポジトリのアップストリームグラフの一部である場合、アセットのミキシングが発生する可能性があります。

アップストリームリポジトリへの新しいアセットのインポートとパッケージバージョンステータスのインポート

アップストリームリポジトリのパッケージバージョンのパッケージバージョンステータスは、 がそれらのバージョン CodeArtifact をダウンストリームリポジトリに保持できない可能性があります。

例えば、あるドメインに repo-Arepo-B、および repo-C の 3 つのリポジトリがあるとします。ここで、repo-Brepo-A のアップストリームに、repo-Crepo-B のアップストリームにあります。

新しいアセットとパッケージバージョンがアップストリームリポジトリでどのように機能するかを示す図。

Maven パッケージ com.android.tools.build:aapt2 のパッケージバージョン 7.3.1repo-B にあり、ステータスは Published です。repo-A には存在しません。クライアントがこのパッケージバージョンのアセットを repo-A からリクエストした場合、レスポンスは 200 (OK) になり、Maven パッケージバージョン 7.3.1repo-A で保持されます。ただし、repo-B のパッケージバージョン 7.3.1 のステータスが Archived または Disposed の場合、これら 2 つのステータスのパッケージバージョンのアセットはダウンロードできないため、応答は 404 (Not Found) になります。

com.android.tools.build:aapt2パッケージオリジンコントロールrepo-Aupstream=BLOCK に設定すると、repo-Brepo-C によってパッケージバージョンのステータスにかかわらず、そのパッケージのすべてのバージョンの新しいアセットは repo-A から取得されなくなることに注意してください。