

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

# アップストリームと外部接続からの Maven パッケージのリクエスト
<a name="maven-upstream-external-connections-request"></a>



## 標準アセット名のインポート
<a name="maven-import-standard-asset-names"></a>

Maven Central などのパブリックリポジトリから Maven パッケージバージョンをインポートする際、AWS CodeArtifact はそのパッケージバージョン内のすべてのアセットのインポートを試みます。「[アップストリームリポジトリを持つパッケージバージョンのリクエスト](repo-upstream-behavior.md)」で説明したように、インポートは次の場合に行われます。
+ クライアントが CodeArtifact リポジトリから Maven アセットをリクエストする。
+ パッケージバージョンはリポジトリにもアップストリームにも存在しない。
+ パブリック Maven リポジトリにアクセス可能な外部接続がある。

クライアントが 1 つのアセットのみをリクエストする場合でも、CodeArtifact はそのパッケージバージョンで見つかったすべてのアセットをインポートしようとします。CodeArtifact が Maven パッケージバージョンで使用できるアセットをどのように検出するかは、パブリックリポジトリによって異なります。一部のパブリック Maven リポジトリは、アセットリストのリクエストをサポートし、別のリポジトリはアセットリストのリクエストをサポートしていません。アセットリストを提供しないリポジトリの場合、CodeArtifact は存在する可能性のあるアセット名のセットを生成します。例えば、Maven パッケージバージョン `junit 4.13.2` のアセットがリクエストされると、CodeArtifact は次のアセットのインポートを試みます。
+ `junit-4.13.2.pom`
+ `junit-4.13.2.jar`
+ `junit-4.13.2-javadoc.jar`
+ `junit-4.13.2-sources.jar`

## 非標準アセット名のインポート
<a name="maven-import-nonstandard-asset-names"></a>

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 に格納されている既存のパッケージバージョンに追加されます。「[アップストリームリポジトリからのパッケージの保持](repo-upstream-behavior.md#package-retention-upstream-repos)」で説明されているように、最も下流のダウンストリームリポジトリ (クライアントがリクエストを行ったリポジトリ) と外部接続がアタッチされているリポジトリの両方のパッケージバージョンが、新しいアセットを含むように更新されます。

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

## アセットオリジンの確認
<a name="origin-checks-for-assets"></a>

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

## アップストリームリポジトリへの新しいアセットのインポートとパッケージバージョンステータスのインポート
<a name="new-asset-importing-pv-status-upstream-repos"></a>

アップストリームリポジトリのパッケージバージョンの[パッケージバージョンステータス](packages-overview.md#package-version-status)により、CodeArtifact がそれらのバージョンをダウンストリームリポジトリに保持できなくなることがあります。

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

![\[アップストリームリポジトリの新しいアセットとパッケージバージョンがどのように機能するかを示す図。\]](http://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/images/Maven-new-asset-pv-upstream.png)


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

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