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

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

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

Pythonパッケージバージョンを pypi.org からインポートすると、CodeArtifact はそのパッケージバージョン内のすべてのアセットをインポートします。ほとんどの Python パッケージには少数のアセットが含まれていますが、複数のハードウェアアーキテクチャと Python インタープリタをサポートするために 100 を超えるアセットを含むパッケージもあります。

既存のパッケージバージョン用の新しいアセットは pypi.org で頻繁に公開されています。例えば、Python の新しいバージョンがリリースされる際に、新しいアセットを公開するいくつかのプロジェクトがあります。pip install を使用して、Python パッケージを CodeArtifact からインストールすると、CodeArtifact リポジトリに保持されているパッケージバージョンが、pypi.org からの最新のアセットセットを反映するように更新されます。

同様に、現在の CodeArtifact リポジトリに存在しない、アップストリームの CodeArtifact リポジトリにあるパッケージバージョン用の新しいアセットが使用できる場合、それらは pip install の実行時に現在のリポジトリに保持されます。

削除されたパッケージバージョン

pypi.org の一部のパッケージバージョンは yanked とマークされています。これは、パッケージインストーラー (pip など) に、バージョン指定子と一致する唯一のバージョンでない限り (== または === を使用して)、そのバージョンをインストールしてはならないことを示します。詳細については、「PEP_592」を参照してください。

CodeArtifact のパッケージバージョンが最初に pypi.org への外部接続から取得された場合、CodeArtifact リポジトリからパッケージバージョンをインストールすると、CodeArtifact はパッケージバージョンの更新された取得済みメタデータが pypi.org から取得されることを保証します。

パッケージバージョンが削除されているかどうかを確認する方法

CodeArtifact でパッケージバージョンが削除されているかどうかを確認するには、pip install packageName===packageVersion を使用してインストールを試みます。パッケージバージョンが削除されている場合、次のような警告メッセージが表示されます。

WARNING: The candidate selected for download or install is a yanked version

pypi.org でパッケージバージョンが削除されているかどうかを確認するには、https://pypi.org/project/packageName/packageVersion/ でそのパッケージバージョンの pypi.org リストを確認してください。

プライベートパッケージに yanked ステータスを設定する

CodeArtifact は、CodeArtifact リポジトリに直接公開されたパッケージの削除されたメタデータの設定をサポートしていません。

CodeArtifact がパッケージバージョンの最新の削除済みメタデータまたはアセットを取得しないのはなぜですか?

通常、CodeArtifact は Python パッケージのバージョンが CodeArtifact リポジトリから取得されたときに、削除されたメタデータが pypi.org 上の最新の値で更新されていることを確認します。さらに、パッケージバージョンのアセットのリストも、pypi.org とアップストリームの CodeArtifact リポジトリで最新のセットにより、最新の状態に保たれます。これは、パッケージバージョンを初めてインストールし、CodeArtifact が pypi.org から CodeCodeArtifact リポジトリにインポートした場合にも、以前にパッケージをインストールした場合にも当てはまります。ただし、pip などのパッケージマネージャークライアントが、削除された最新のメタデータを pypi.org またはアップストリームレポジトリから取得しない場合があります。代わりに、CodeArtifact はリポジトリに既に保存されているデータを返します。このセクションでは、これが発生する 3 つのケースについて説明します。

アップストリーム設定: disassociate-external-connection を使用してレポジトリまたはそのアップストリームから pypi.org への外部接続を削除すると、削除されたメタデータは pypi.org から更新されなくなります。同様に、アップストリームのリポジトリを削除すると、削除されたリポジトリと削除されたリポジトリのアップストリームのアセットは、現在のリポジトリでは利用できなくなります。CodeArtifact のパッケージオリジンコントロールを使用して特定のパッケージの新しいバージョンがプルされないようにする場合も同様です。upstream=BLOCK 設定は削除されたメタデータの更新をブロックします。

パッケージバージョンのステータス: パッケージバージョンのステータスを Published または Unlisted 以外に設定した場合、削除されたメタデータおよびパッケージバージョンのアセットは更新されません。同様に、特定のパッケージバージョン (torch 2.0.1 など) を取得しようとしていて、同じパッケージバージョンがアップストリームリポジトリに存在し、ステータスが Published または Unlisted でない場合も、削除されたメタデータとアセットは、アップストリームレポジトリから現在のレポジトリに伝播されません。これは、他のパッケージバージョンのステータスは、そのバージョンがどのリポジトリでも使用されないことを示しているためです。

直接公開: 特定のパッケージバージョンを CodeArtifact リポジトリに直接公開すると、削除されたメタデータおよアセットは、アップストリームレポジトリおよび pypi.org からパッケージに対して更新されません。例えば、Web ブラウザーを使用して torch 2.0.1 などのパッケージバージョン torch-2.0.1-cp311-none-macosx_11_0_arm64.whl からアセットをダウンロードし、twine を torch 2.0.1 として使用して CodeArtifact リポジトリに公開する場合です。CodeArtifact は、pypi.org またはアップストリームレポジトリへの外部接続からではなく、リポジトリへの直接公開によってパッケージバージョンがドメインに入ったことを追跡します。この場合、CodeArtifact は削除されたメタデータをアップストリームのリポジトリまたは pypi.org と同期しません。これは、アップストリームリポジトリに torch 2.0.1 を公開する場合も同様です。パッケージバージョンがあると、削除されたメタデータとアセットがアップストリームグラフの下位にあるリポジトリに伝播されません。