翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パッケージの概要
[パッケージ] とは、依存関係の解決とソフトウェアのインストールに必要なソフトウェアとメタデータのバンドルです。では CodeArtifact、パッケージはパッケージ名、オプションの名前空間 (@types
in など)、パッケージバージョンのセット@types/node
、および npm タグなどのパッケージレベルのメタデータで構成されます。
目次
サポートされるパッケージ形式
AWS CodeArtifact npm 、PyPI、Maven NuGet、および汎用パッケージ形式をサポートします。
メッセージの公開
、、、、などのツールを使用してnpm
、 CodeArtifact twineサポートされている任意のパッケージ形式の新しいバージョンをリポジトリに公開できます。Maven
Gradle
nuget
dotnet
公開許可
AWS Identity and Access Management (IAM) ユーザーまたはロールには、ターゲットリポジトリに公開する権限が必要です。パッケージを公開するには、以下の権限が必要です。
-
Maven:
codeartifact:PublishPackageVersion
そしてcodeartifact:PutPackageMetadata
-
npm
codeartifact:PublishPackageVersion
-
NuGet:
codeartifact:PublishPackageVersion
とcodeartifact:ReadFromRepository
-
Python:
codeartifact:PublishPackageVersion
-
ジェネリック:
codeartifact:PublishPackageVersion
上記の権限リストでは、IAM ポリシーで codeartifact:PublishPackageVersion
権限と codeartifact:PutPackageMetadata
権限の package
リソースを指定する必要があります。また、codeartifact:ReadFromRepository
権限の repository
リソースも指定する必要があります。
の権限の詳細については CodeArtifact、を参照してくださいAWS CodeArtifact アクセス許可リファレンス。
パッケージアセットの上書き
別のコンテンツで既に存在するパッケージアセットを再公開することはできません。例えば、JAR アセット mypackage-1.0.jar
を持つ Maven パッケージをすでに公開したとします。古いアセットのチェックサムと新しいアセットのチェックサムが同じである場合のみ、そのアセットを再度公開できます。新しいコンテンツで同じアセットを再公開するには、最初にdelete-package-versionsコマンドを使ってパッケージバージョンを削除してください。異なるコンテンツで同じアセット名を再公開しようとすると、HTTP 409 の競合エラーが発生します。
複数のアセット (PyPI と Maven) をサポートするパッケージ形式の場合、必要な権限を持っていれば、いつでも既存のパッケージバージョンに異なる名前の新しいアセットを追加できます。ジェネリックパッケージの場合、パッケージバージョンが Unfinished
状態にある限り、新しいアセットを追加できます。npm はパッケージバージョンごとにひとつのアセットしかサポートしないため、公開されたパッケージバージョンを何らかの方法で変更するには、まず、delete-package-versionsを使用してそれを削除する必要があります。
すでに存在するアセットを再公開しようとした場合 (例えば、mypackage-1.0.jar
)、公開されたアセットと新規アセットの内容が同じである場合、操作が冪等であるため、この操作は成功します。
プライベートパッケージと公開リポジトリ
CodeArtifact CodeArtifact リポジトリに保存されているパッケージを npmjs.com や Maven Central などのパブリックリポジトリに公開しません。 CodeArtifact パブリックリポジトリからリポジトリにパッケージをインポートしますが、 CodeArtifact パッケージを逆方向に移動させることはありません。 CodeArtifact リポジトリに公開したパッケージはプライベートのままで、 AWS アクセスを許可したアカウント、ロール、ユーザーのみが使用できます。
パッチが適用されたパッケージバージョンの公開
場合によっては、公開リポジトリで利用可能な変更パッケージバージョンを公開したい場合があります。例えば、mydep 1.1
という重要なアプリケーション依存関係にバグが見つかった場合、パッケージベンダーがその変更をレビューして承認できるよりも早く修正する必要があるとしましょう。前に説明したように、 CodeArtifact CodeArtifact上流のリポジトリと外部接続を経由してリポジトリからパブリックリポジトリにアクセスできる場合は、mydep 1.1
CodeArtifact リポジトリに公開できなくなります。
これを回避するには、 CodeArtifact パブリックリポジトリにアクセスできない別のリポジトリにパッケージバージョンを公開します。次に、copy-package-versions
API を使用して、mydep 1.1
パッチを適用したバージョンを、 CodeArtifact 使用するリポジトリにコピーします。
公開時のアセットサイズ制限
公開できるパッケージアセットの最大サイズは、「AWSCodeArtifactにおけるクォータ」に示されているアセットファイルサイズの最大クォータによって制限されます。例えば、現在のアセットファイルサイズの最大クォータを超える Maven JAR または Python ホイールを公開することはできません。より大きなアセットを格納する必要がある場合は CodeArtifact、クォータの増額をリクエストしてください。
アセットファイルサイズの最大クォータに加えて、npm パッケージの公開リクエストの最大サイズは 2 GB の制限があります。この制限はアセットファイルサイズの最大クォータとは関係なく、クォータを引き上げることで増やすことはできません。npm 公開リクエスト (HTTP PUT) では、パッケージメタデータと npm パッケージ tar アーカイブのコンテンツが一緒にバンドルされます。このため、公開できる npm パッケージの実際の最大サイズは、含まれるメタデータのサイズによって異なります。
注記
公開される npm パッケージの最大サイズは 2 GB 未満に制限されています。
公開時のレイテンシー
CodeArtifact リポジトリに公開されたPackage バージョンは、多くの場合、1 秒未満でダウンロード可能になります。例えば、npm パッケージのバージョンを CodeArtifact with に公開した場合npm publish
、そのバージョンは 1 npm
install
秒以内にコマンドで利用できるようになるはずです。ただし、公開には一貫性がなく、時間がかかることがあります。公開後すぐにパッケージバージョンを使用する必要がある場合は、再試行を行ってダウンロードの信頼性を確保してください。例えば、パッケージバージョンを公開した後、公開したばかりのパッケージバージョンが最初にダウンロードできなかった場合は、ダウンロードを最大 3 回繰り返します。
注記
通常、パブリックリポジトリからパッケージバージョンをインポートすると、公開よりも時間がかかります。詳細については、「外部接続のレイテンシー」を参照してください。
パッケージバージョンのステータス
CodeArtifact のすべてのパッケージバージョンには、そのパッケージバージョンの現在の状態と可用性を説明するステータスがあります。 AWS CLI と SDK で、パッケージバージョンのステータスを変更することができます。詳細については、「パッケージバージョンのステータスの更新」を参照してください。
パッケージバージョンのステータスに設定できる値は以下の通りです。
-
[公開] - パッケージバージョンは正常に公開され、パッケージマネージャーを使用してリクエストできます。パッケージバージョンは、
npm view <package-name> versions
の出力など、パッケージマネージャーによって返されるパッケージバージョンリストに含まれます。パッケージバージョンのすべてのアセットは、リポジトリから入手できます。 -
[未完了] - クライアントはパッケージバージョンの 1 つ以上のアセットをアップロードしましたが、それを
Published
状態に移行してアップロードを完了することができませんでした。現在Unfinished
のステータスになり得るのは、ジェネリックパッケージバージョンと Maven パッケージバージョンのみです。これは、クライアントがパッケージバージョンの 1 つ以上のアセットをアップロードしたものの、そのバージョンを含むパッケージのmaven-metadata.xml
ファイルを公開しなかった場合に発生します。Maven パッケージバージョンが [未完了] の場合、mvn
やgradle
などのクライアントに返されるバージョンリストには含まれないため、ビルドの一部として使用することはできません。APIunfinished
を呼び出すときにフラグを指定することで、Unfinished
ジェネリックパッケージを意図的にその状態に保つことができます。PublishPackageVersionジェネリックパッケージは、unfinished
フラグを省略するか APIPublished
を呼び出すことでその状態に変更できます。UpdatePackageVersionsStatus -
[一覧表示されていない] - パッケージバージョンのアセットはリポジトリからダウンロードできますが、パッケージマネージャーによって返されるパッケージバージョンのリストには含まれません。例えば、npm パッケージの場合、
npm view <package-name> versions
の出力にパッケージバージョンは含まれません。つまり、npm の依存関係解決論理は、使用可能なバージョンのリストに表示されないため、パッケージのバージョンを選択しません。ただし、[一覧表示されていない] パッケージバージョンがすでにすべてのnpm package-lock.json
ファイルで参照されていれば、npm ci
の実行時などに、ダウンロードしてインストールできます。 -
[アーカイブ済み] - パッケージバージョンのアセットはこれ以降ダウンロードできません。パッケージバージョンは、パッケージマネージャーによって返されるバージョンのリストには含まれません。アセットが使用できないため、クライアントによるパッケージバージョンの使用はブロックされます。アプリケーションのビルドが、[アーカイブ済み] に更新されたバージョンに依存している場合、パッケージのバージョンがローカルにキャッシュされていないと仮定されるため、構築は中断されます。アーカイブされたパッケージバージョンはリポジトリにまだ存在するため、パッケージマネージャーやビルドツールを使用して再公開することはできません。ただし、パッケージバージョンのステータスを API を使用して [限定公開] または [公開済み] に戻すことができます。UpdatePackageVersionsStatus
-
[開放済み] - パッケージバージョンはリストに表示されず、アセットをリポジトリからダウンロードできません。「破棄」と「アーカイブ済み」の主な違いは、ステータスが「破棄」の場合、パッケージバージョンのアセットはによって完全に削除される点です。 CodeArtifactこのため、パッケージバージョンを[開放済み] から[アーカイブ済み]、[一覧表示されていない]、または [公開] に移動することはできません。アセットが削除されているため、パッケージバージョンはこれ以降使用できません。パッケージバージョンが [開放済み] としてマークされた後は、パッケージアセットの保存に関する費用は、これ以降請求されなくなります。
list-package-versions --status
パラメータなしで呼び出すと、すべてのステータスのPackage バージョンがデフォルトで返されます。
前述の状態とは別に、パッケージバージョンは DeletePackageVersionsAPI を使用して削除することもできます。削除後、パッケージバージョンはリポジトリ内に存在しなくなり、パッケージマネージャーまたはビルドツールを使用して、そのパッケージバージョンを自由に再公開できます。パッケージバージョンが [開放済み] としてマークされた後は、パッケージアセットの保存に関する費用は、これ以降請求されなくなります。
パッケージ名、パッケージバージョン、アセット名の正規化
CodeArtifact パッケージ名、パッケージバージョン、アセット名を正規化してから保存します。つまり、に含まれる名前やバージョンは、 CodeArtifact パッケージが公開されたときに指定された名前やバージョンと異なる場合があります。 CodeArtifact パッケージタイプごとに名前とバージョンを正規化する方法について詳しくは、以下のドキュメントを参照してください。
CodeArtifact 他のパッケージ形式では正規化を行いません。