

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

# AWS CodeArtifact とは
<a name="welcome"></a>

AWS CodeArtifact は、組織がアプリケーション開発用のソフトウェアパッケージを保存および共有するのに役立つ、安全でスケーラブルなマネージドアーティファクトリポジトリサービスです。CodeArtifact は、NuGet CLI、Maven、Gradle、npm、yarn、pip、twine などの一般的なビルドツールやパッケージマネージャーで使用できます。CodeArtifact によって、インフラストラクチャのスケーリングに関する懸念や、独自のアーティファクトストレージシステムを管理する必要がなくなります。CodeArtifact リポジトリに保存できるパッケージの数や合計サイズに制限はありません。

ユーザーは、プライベート CodeArtifact リポジトリと npmjs.com や Maven Central などの外部のパブリックリポジトリの間に接続を作成することができます。その後、CodeArtifact は、パッケージマネージャーからリクエストを受けた場合に、パブリックリポジトリからパッケージをオンデマンドで取得して保存します。これにより、アプリケーションで使用するオープンソースの依存関係を簡単に使用でき、構築や開発で依存関係をいつでも利用できるようになります。また、プライベートパッケージを CodeArtifact リポジトリに公開することもできます。これにより、組織内の複数のアプリケーションや開発チームに固有のソフトウェアコンポーネントを共有できるようになります。

 詳細については、[AWS CodeArtifact](https://aws.amazon.com/codeartifact/)を参照してください。

## CodeArtifactの仕組みとは?
<a name="codeartifact-how-does-it-work"></a>

CodeArtifactはソフトウェアパッケージをリポジトリに格納します。リポジトリはポリグロットです-単一のリポジトリには、サポートされている任意のタイプのパッケージを含めることができます。すべての CodeArtifactリポジトリは、単一のCodeArtifactドメインのメンバーです。1 つまたは複数のリポジトリを持つ組織では、1 つのプロダクションドメインを使用することをお勧めします。例えば、各リポジトリを別の開発チーム用に使用することがあります。リポジトリ内のパッケージは、複数開発チーム間で検出して共有できます。

リポジトリにパッケージを追加するには、npm や Maven などのパッケージマネージャーがリポジトリのエンドポイント (URL) を使用するように設定します。その後、パッケージマネージャーを使用して、パッケージをリポジトリに公開できます。また、npmjs、NuGet Gallery、Maven Central、PyPI などのパブリックリポジトリへの外部接続を設定することで、オープンソースパッケージをリポジトリにインポートすることもできます。詳細については、「[CodeArtifact リポジトリをパブリックリポジトリに接続する](external-connection.md)」を参照してください。

 あるリポジトリ内のパッケージを、同じドメイン内の別のリポジトリで使用できるようにすることができます。これを行うには、一方のリポジトリをもう一方のリポジトリのアップストリームとして設定します。アップストリームリポジトリで使用可能なすべてのパッケージバージョンは、ダウンストリームリポジトリでも使用できます。さらに、パブリックリポジトリへの外部接続を介してアップストリームリポジトリで使用できるすべてのパッケージは、ダウンストリームリポジトリでも使用できます。詳細については、「[CodeArtifact でアップストリームリポジトリを操作する](repos-upstream.md)」を参照してください。

CodeArtifactでは、パッケージバージョンを公開したり消費したりするために、ユーザーがサービスで認証を受ける必要があります。CodeArtifactサービスを利用するには、自分の AWS 資格情報を使って認可トークンを作成し、認証を受ける必要があります。CodeArtifact リポジトリのパッケージは公開できません。CodeArtifact の認証とアクセスに関する詳細については、「[AWSCodeArtifact認証とトークン](tokens-authentication.md)」を参照してください。

# 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 つのリポジトリ間にアップストリームリレーションシップを作成できます。

## CodeArtifactの使用を開始するにはどうしたらいいですか?
<a name="how-do-i-get-started"></a>

 次の手順を実行することをお勧めします。

1.  「[AWS CodeArtifact の概念](codeartifact-concepts.md)」を参照して CodeArtifact の詳細について**学ぶ**。

1.  の手順に従って AWS アカウント、 AWS CLI、、および IAM ユーザー**を設定します**[AWS CodeArtifact でのセットアップ](get-set-up-for-codeartifact.md)。

1.  「[CodeArtifact の開始方法](getting-started.md)」の指示に従って、CodeArtifact を**使用**する。