

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

# パッケージグループのオリジンコントロール
<a name="package-group-origin-controls"></a>

パッケージオリジンコントロールを使用して、パッケージバージョンをドメインに入れる方法を設定します。パッケージグループでオリジンコントロールを設定することで、パッケージグループに関連付けられたすべてのパッケージのバージョンを、特定のドメイン内リポジトリに入れる方法を設定できます。

パッケージグループのオリジンコントロール設定には、以下の項目が含まれます。
+ [制限設定](#package-group-origin-control-settings-restrictions): この設定は、パッケージを、CodeArtifact のリポジトリに、公開、内部アップストリーム、外部パブリックリポジトリのいずれから入れることが出来るかを定義します。
+ [許可されたリポジトリリスト](#package-group-origin-control-settings-repositories): 各制限項目ごとに、どのリポジトリを許可するかを個別に指定できます。特定のリポジトリを許可するように制限が設定されている場合、その制限には対応する許可されたリポジトリのリストが含まれます。

**注記**  
パッケージグループのオリジンコントロール設定は、個別パッケージのオリジンコントロール設定と若干異なります。パッケージオリジンコントロール設定の詳細については、「[パッケージオリジンコントロール設定](package-origin-controls.md#package-origin-control-settings)」を参照してください。

## 制限設定
<a name="package-group-origin-control-settings-restrictions"></a>

パッケージグループのオリジンコントロール設定の制限設定によって、そのグループに関連付けられたパッケージがドメイン内のリポジトリに入る方法が決まります。

### 発行
<a name="package-group-origin-control-settings-restrictions-publish"></a>

`PUBLISH` 設定は、パッケージマネージャーや類似のツールを使用してパッケージバージョンをあらゆるドメイン内リポジトリに直接公開できるかどうかを設定します。
+ **[ALLOW]**: すべてのパッケージバージョンを直接公開できます。
+ **[BLOCK]**: パッケージバージョンはどのリポジトリにも直接公開できません。
+ **[ALLOW\$1SPECIFIC\$1REPOSITORIES]**: パッケージバージョンは、公開を許可されたリポジトリリストで指定されたリポジトリにのみ、直接公開できます。
+ **[INHERIT]**: `PUBLISH` 設定は、`INHERIT` ではない設定を持つ最初の親パッケージグループから継承されます。

### EXTERNAL\$1UPSTREAM
<a name="package-group-origin-control-settings-restrictions-ext-upstream"></a>

`EXTERNAL_UPSTREAM` 設定は、パッケージマネージャーからのリクエストに応じて、パッケージバージョンを外部のパブリックリポジトリから取り込むことができるかどうかを設定します。サポートされている外部リポジトリのリストについては、「[サポートされている外部接続リポジトリ](external-connection.md#supported-public-repositories)」を参照してください。
+ **[ALLOW]**: すべてのパッケージバージョンは、外部接続を持つパブリックソースからすべてのリポジトリに取り込むことができます。
+ **[BLOCK]**: パッケージバージョンは、外部接続を持つパブリックソースからリポジトリに取り込むことはできません。
+ **[ALLOW\$1SPECIFIC\$1REPOSITORIES]**: パッケージバージョンは、パブリックソースから、外部アップストリームの許可されたリポジトリリスト内の指定されたリポジトリにのみ取り込むことができます。
+ **[INHERIT]**: `EXTERNAL_UPSTREAM` 設定は、`INHERIT` ではない設定を持つ最初の親パッケージグループから継承されます。

### INTERNAL\$1UPSTREAM
<a name="package-group-origin-control-settings-restrictions-int-upstream"></a>

`INTERNAL_UPSTREAM` 設定は、パッケージマネージャーからのリクエストに応じて、パッケージバージョンを同じ CodeArtifact ドメインの内部アップストリームリポジトリから保持できるかどうかを設定します。
+ **[ALLOW]**: アップストリームリポジトリとして設定された他の CodeArtifact リポジトリからは、任意のパッケージバージョンを保持することができます。
+ **[BLOCK]**: アップストリームリポジトリとして設定された他の CodeArtifact リポジトリからは、パッケージバージョンを保持することはできません。
+ **[ALLOW\$1SPECIFIC\$1REPOSITORIES]**: パッケージバージョンは、アップストリームリポジトリとして設定された他の CodeArtifact リポジトリから、内部アップストリームの許可されたリポジトリリストで指定されたリポジトリに対してのみ保持できます。
+ **[INHERIT]**: `INTERNAL_UPSTREAM` 設定は、`INHERIT` 以外の設定を持つ最初の親パッケージグループから継承されます。

## 許可されたリポジトリリスト
<a name="package-group-origin-control-settings-repositories"></a>

制限設定が `ALLOW_SPECIFIC_REPOSITORIES` として設定されている場合、パッケージグループには、その制限設定で許可されるリポジトリリストを含む、付随する許可されたリポジトリリストが含まれます。したがって、パッケージグループには、`ALLOW_SPECIFIC_REPOSITORIES` として設定された設定ごとに 1 つずつ、0～3 個の許可されたリポジトリリストが含まれます。

パッケージグループの許可されたリポジトリリストにリポジトリを追加するときは、追加先の許可されたリポジトリリストを指定しなければなりません。

許可されるリポジトリリストは次のとおりです。
+ `EXTERNAL_UPSTREAM`: 追加するリポジトリ内の外部リポジトリからのパッケージバージョンの取り込みを許可またはブロックします。
+ `INTERNAL_UPSTREAM`: 追加するリポジトリ内の別の CodeArtifact リポジトリからのパッケージバージョンのプルを許可またはブロックします。
+ `PUBLISH`: パッケージマネージャーから追加するリポジトリへのパッケージバージョンの直接公開を許可またはブロックします。

## パッケージグループオリジンコントロール設定の編集
<a name="package-group-edit-origin-controls"></a>

パッケージグループのオリジンコントロールを追加または編集するには、次の手順に従います。パッケージグループオリジンコントロール設定については、「[制限設定](#package-group-origin-control-settings-restrictions)」および「[許可されたリポジトリリスト](#package-group-origin-control-settings-repositories)」を参照してください。

**パッケージグループオリジンコントロールを追加または編集する方法 (CLI)**

1. まだ設定していない場合は、「[AWS CodeArtifact でのセットアップ](get-set-up-for-codeartifact.md)」の手順に従って AWS CLI を設定してください。

1. パッケージオリジンコントロールを追加または編集するには `update-package-group-origin-configuration` を使用します。
   + `--domain` には、更新するパッケージグループを含む CodeArtifact ドメインを入力します。
   + `--domain-owner` には、ドメインの所有者のアカウント番号を入力します。
   + `--package-group` には、更新するパッケージグループを入力します。
   + `--restrictions` には、オリジンコントロールの制限を表すキーと値のペアを入力します。
   + `--add-allowed-repositories` には、制限タイプとリポジトリ名を含む JSON オブジェクトを入力します。これは、制限に対応する許可されたリポジトリリストに追加されます。
   + `--remove-allowed-repositories` には、制限タイプとリポジトリ名を含む JSON オブジェクトを入力します。これは、制限に対応する許可されたリポジトリリストから削除されます。

   ```
   aws codeartifact update-package-group-origin-configuration \
      --domain my_domain \
      --domain-owner 111122223333 \
      --package-group '/nuget/*' \
      --restrictions INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \
      --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo \
      --remove-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2
   ```

   次の例では、複数の制限と複数のリポジトリを 1 つのコマンドに追加します。

   ```
   aws codeartifact update-package-group-origin-configuration \
      --domain my_domain \
      --domain-owner 111122223333 \
      --package-group '/nuget/*' \
      --restrictions PUBLISH=BLOCK,EXTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES,INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \
      --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2 \
      --remove-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2
   ```

## パッケージグループのオリジンコントロール設定の例
<a name="package-group-origin-control-examples"></a>

次の例は、一般的なパッケージ管理シナリオにおけるパッケージオリジンのコントロール設定です。

### プライベート名を持つパッケージの公開の許可 (取り込みは許可しない)
<a name="package-group-origin-control-examples-one"></a>

このシナリオは、パッケージ管理における一般的なシナリオであると考えられます。
+ プライベート名を持つパッケージについて、パッケージマネージャーからドメイン内リポジトリに公開されることを許可し、外部パブリックリポジトリからドメイン内リポジトリに取り込まれることをブロックします。
+ 他のすべてのパッケージについて、外部パブリックリポジトリからドメイン内リポジトリに取り込まれることを許可し、パッケージマネージャーからドメイン内リポジトリに公開されるることをブロックします。

これを実現するには、プライベート名 (複数可)、および **PUBLISH: ALLOW**、**EXTERNAL\$1UPSTREAM: BLOCK**、および **INTERNAL\$1UPSTREAM: ALLOW** のオリジン設定を含むパターンでパッケージグループを設定する必要があります。これにより、プライベート名を持つパッケージは直接公開されるようになりますが、外部リポジトリから取り込むことはできなくなります。

次の AWS CLI コマンドは、目的の動作に一致するオリジン制限設定を使用してパッケージグループを作成して設定します。

パッケージグループを作成する方法:

```
aws codeartifact create-package-group \
   --domain my_domain \
   --package-group /npm/space/anycompany~ \
   --domain-owner 111122223333 \
   --contact-info contact@email.com | URL \
   --description "my package group"
```

パッケージグループのオリジン設定を更新する方法:

```
aws codeartifact update-package-group-origin-configuration \
   --domain my_domain \
   --domain-owner 111122223333 \
   --package-group '/npm/space/anycompany~' \
   --restrictions PUBLISH=ALLOW,EXTERNAL_UPSTREAM=BLOCK,INTERNAL_UPSTREAM=ALLOW
```

### 特定のリポジトリを介した外部リポジトリからの取り込みの許可
<a name="package-group-origin-control-examples-ingestion-one-repo"></a>

このシナリオでは、ドメインに複数のリポジトリがあります。これらのリポジトリのうち、以下に示すように、`repoA` は `repoB` にアップストリーム接続し、さらに、公開リポジトリ (`npmjs.com`) に外部接続しています。

`repoA --> repoB --> npmjs.com`

特定のパッケージグループからのパッケージの取り込み (`npmjs.com` から `repoA` への `/npm/space/anycompany~` の取り込み) を、`repoB` からのみ許可します。また、パッケージグループに関連付けられたパッケージがドメイン内の他のいかなるリポジトリにも取り込まれないように、またパッケージマネージャーからパッケージが直接公開されないようにブロックしたい場合があります。これを実現するには、パッケージグループを次のように作成、設定します。

**PUBLISH: BLOCK**、**EXTERNAL\$1UPSTREAM: ALLOW\$1SPECIFIC\$1REPOSITORIES**、**INTERNAL\$1UPSTREAM: ALLOW\$1SPECIFIC\$1REPOSITORIES** のオリジン制限設定。

`repoA` と `repoB` を適切な許可されたリポジトリリストに追加します。
+ `repoA` は、内部アップストリーム (`repoB`) からパッケージを取得するため、`INTERNAL_UPSTREAM` リストに追加する必要があります。
+ `repoB` は、外部リポジトリ (`npmjs.com`) からパッケージを取得するため、`EXTERNAL_UPSTREAM` リストに追加する必要があります。

次の AWS CLI コマンドは、目的の動作に一致するオリジン制限設定を使用してパッケージグループを作成して設定します。

パッケージグループを作成する方法:

```
aws codeartifact create-package-group \
   --domain my_domain \
   --package-group /npm/space/anycompany~ \
   --domain-owner 111122223333 \
   --contact-info contact@email.com | URL \
   --description "my package group"
```

パッケージグループのオリジン設定を更新する方法:

```
aws codeartifact update-package-group-origin-configuration \
   --domain my_domain \
   --domain-owner 111122223333 \
   --package-group /npm/space/anycompany~ \
   --restrictions PUBLISH=BLOCK,EXTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES,INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \
   --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=repoA originRestrictionType=EXTERNAL_UPSTREAM,repositoryName=repoB
```

## パッケージグループのオリジンコントロール設定とパッケージオリジンコントロール設定の相互作用
<a name="package-group-origin-control-settings-interaction"></a>

パッケージ、および関連するパッケージグループはそれぞれオリジンコントロール設定を備えているため、これらの 2 つの異なる設定がどのように相互作用するかを理解することが重要です。設定間の相互作用については、「[パッケージオリジンコントロールとパッケージグループオリジンコントロールの相互作用](package-origin-controls.md#package-origin-controls-interaction-package-groups)」を参照してください。