AWS CodeArtifact の概念 - CodeArtifact

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

AWS CodeArtifact の概念

CodeArtifactを使用するときに知っておくべき概念と用語をいくつか紹介します。

アセット

アセットとは、CodeArtifact に格納されている、npm .tgz ファイルや Maven POM、JAR ファイルなど、パッケージのバージョンに関連付けられた個々のファイルのことです。

ドメイン

リポジトリは、ドメインと呼ばれる上位レベルのエンティティに集約されます。すべてのパッケージアセットとメタデータはドメインに格納されますが、リポジトリを通じて消費されます。Maven JARファイルなどの特定のパッケージアセットは、存在するリポジトリの数に関係なく、ドメインごとに 1 回保存されます。ドメイン内のすべてのアセットとメタデータは、AWS Key Management Service(AWS KMS)に格納されているAWS KMS key(KMS key) と同じ方法で暗号化されます。

各リポジトリは単一のドメインのメンバーであり、別のドメインに移動することはできません。

ドメインを使用すると、複数のリポジトリに組織ポリシーを適用できます。このアプローチを使用して、どのアカウントがドメイン内のリポジトリにアクセスできるか、どのパブリックリポジトリをパッケージのソースとして使用できるかを決定します。

1 つの組織が複数のドメインを使用することもできますが、公開されたアーティファクトをすべて含む 1 つの本番ドメインを使用することをお勧めします。そうすることで、チームは組織全体でパッケージを見つけて共有できます。

リポジトリ

CodeArtifactリポジトリには、それぞれがアセットのセットにマップされているパッケージバージョンのセットが含まれている。リポジトリはポリグロットです。単一のリポジトリには、サポートされているあらゆるタイプのパッケージを格納することができます。各リポジトリは、nuget CLI、npm CLI、Maven CLI (mvn)、pip などのツールを使用してパッケージを取得および公開するためのエンドポイントを公開します。ドメインごとに最大 1,000 個のリポジトリを作成できます。

パッケージ

[パッケージ] とは、依存関係の解決とソフトウェアのインストールに必要なソフトウェアとメタデータのバンドルです。CodeArtifact には、パッケージはパッケージ名、@types/node@typesなどの [ネームスペース] (オプション) など、パッケージバージョンのセット、およびパッケージレベルのメタデータ (npm タグなど) が含まれます。

AWS CodeArtifact は、npmPyPIMavenNuGet、および ジェネリックの各パッケージ形式をサポートしています。

パッケージ名前空間

パッケージ形式によっては、パッケージを論理グループに整理し、階層的なパッケージ名をサポートし名前の衝突を回避します。例えば、npm はスコープをサポートします。詳細については、「npm scopes documentation」を参照してください。npm パッケージ@types/nodeはスコープが@types、名前がnodeです。他にも多くのパッケージ名が@typesスコープにあります。CodeArtifactでは、スコープ (“タイプ”) はパッケージ名前空間と呼ばれ、名前 (“ノード”) はパッケージ名と呼ばれます。Maven パッケージの場合、パッケージ名前空間はMaven GroupIDに対応します。Mavenパッケージorg.apache.logging.log4j:log4j は、groupID (パッケージの名前空間)がorg.apache.logging.log4j、artifactID (パッケージ名) がlog4jです。ジェネリックパッケージには名前空間が必要です。PyPI などの一部のパッケージ形式では、npmスコープやMaven GroupIDのような概念を持つ階層名をサポートしていません。パッケージ名をグループ化する方法がないと、名前の衝突を回避するのが難しくなります。

パッケージバージョン

パッケージバージョンは、@types/node 12.6.9のようにパッケージの特定のバージョンを識別します。バージョン番号の形式とセマンティクスは、パッケージ形式によって異なります。例えば、npmパッケージのバージョンはセマンティックバージョニングの仕様 に準拠する必要があります。CodeArtifactでは、パッケージバージョンは、バージョン識別子、パッケージバージョンレベルのメタデータ、およびアセットセットで構成されます。

パッケージバージョンリビジョン

パッケージバージョンリビジョンは、パッケージバージョンの特定のアセットとメタデータのセットを識別する文字列です。パッケージバージョンが更新されるたびに、新しいパッケージバージョンリビジョンが作成されます。例えば、あるバージョンの Pythonパッケージのソース配布用アーカイブ (sdist) を公開し、後で同じバージョンにコンパイルされたコードを含む Python ホイールを追加することができます。ホイールを公開すると、新しいパッケージバージョンリビジョンが作成されます。

アップストリームリポジトリ

ダウンストリームリポジトリのリポジトリエンドポイントからあるリポジトリ内のパッケージバージョンにアクセスできる場合、このリポジトリはアップストリームリポジトリになります。このアプローチは、クライアントの観点から見ると、2 つのリポジトリのコンテンツを効果的に統合します。CodeArtifact を使用すると、2 つのリポジトリ間にアップストリームリレーションシップを作成できます。