AWS CodeArtifact の概念 - CodeArtifact

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

AWS CodeArtifact の概念

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

[アセット]

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

[ドメイン]

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

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

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

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

リポジトリ

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

パッケージ

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

AWS CodeArtifact は、Cargo 汎用 Maven 、npmNuGetPyPIRuby 、Swift パッケージ形式をサポートしています。 Swift CodeArtifact で を使用する

パッケージグループ

パッケージグループを使用すると、パッケージ形式、パッケージ名前空間、パッケージ名を使用して、定義されたパターンに一致する複数のパッケージに設定を適用できます。パッケージグループを使用すると、複数のパッケージのパッケージオリジンコントロールをより便利に設定できます。パッケージオリジンコントロールは、新しいパッケージバージョンの取り込みまたは公開をブロックまたは許可するために使用されます。これにより、依存関係置換攻撃と呼ばれる悪意のあるアクションからユーザーを保護します。

パッケージ名前空間

パッケージ形式によっては、パッケージを論理グループに整理し、階層的なパッケージ名をサポートし名前の衝突を回避します。例えば、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 つのリポジトリ間にアップストリーム関係を作成できます。