

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

# AWS CodeArtifact の概念
<a name="codeartifact-concepts"></a>

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

**Topics**
+ [

## アセット
](#welcome-concepts-asset)
+ [

## ドメイン
](#welcome-concepts-domain)
+ [

## Repository
](#welcome-concepts-repository)
+ [

## パッケージ
](#welcome-concepts-package)
+ [

## パッケージグループ
](#welcome-concepts-package-group)
+ [

## パッケージ名前空間
](#welcome-concepts-package-namespace)
+ [

## パッケージバージョン
](#welcome-concepts-package-version)
+ [

## パッケージバージョンリビジョン
](#welcome-concepts-package-version-revision)
+ [

## アップストリームリポジトリ
](#welcome-concepts-upstream)

## アセット
<a name="welcome-concepts-asset"></a>

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

## ドメイン
<a name="welcome-concepts-domain"></a>

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

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

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

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

## Repository
<a name="welcome-concepts-repository"></a>

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

## パッケージ
<a name="welcome-concepts-package"></a>

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

AWS CodeArtifact は、[Cargo](using-cargo.md)、[ジェネリック](using-generic.md)、[Maven](using-maven.md)、[npm](using-npm.md)、[NuGet](using-nuget.md)、[PyPI](using-python.md)、[Ruby](using-ruby.md)、[Swift](using-swift.md) パッケージ形式をサポートしています。

## パッケージグループ
<a name="welcome-concepts-package-group"></a>

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

## パッケージ名前空間
<a name="welcome-concepts-package-namespace"></a>

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

## パッケージバージョン
<a name="welcome-concepts-package-version"></a>

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

## パッケージバージョンリビジョン
<a name="welcome-concepts-package-version-revision"></a>

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

## アップストリームリポジトリ
<a name="welcome-concepts-upstream"></a>

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