

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

# Amazon ECR でのプライベートイメージレプリケーション
<a name="replication"></a>

リポジトリのレプリケーションをサポートするために、Amazon ECR プライベートレジストリを構成できます。Amazon ECR は、クロスリージョンレプリケーションおよびクロスアカウントレプリケーションの両方をサポートしています。クロスアカウントレプリケーションを実行するには、ターゲットアカウントで、ソースレジストリからのレプリケーションを許可するレジストリのアクセス許可ポリシーを設定する必要があります。詳細については、「[Amazon ECR でのプライベートレジストリのアクセス許可](registry-permissions.md)」を参照してください。

**Topics**
+ [クロスアカウントレプリケーションポリシーの要件](#replication-policy-clarification)
+ [プライベートイメージのレプリケーションに関する考慮事項](#replication-considerations)
+ [Amazon ECR でのプライベートイメージレプリケーションの例](registry-settings-examples.md)
+ [Amazon ECR でのプライベートイメージレプリケーションの設定](registry-settings-configure.md)
+ [Amazon ECR でのプライベートイメージレプリケーション設定の削除](registry-settings-remove.md)

## クロスアカウントレプリケーションポリシーの要件
<a name="replication-policy-clarification"></a>

クロスアカウント ECR レプリケーションを正しく機能させるには、どのアカウントでどのポリシーが設定されているかを理解する必要があります。このセクションでは、送信元アカウントと送信先アカウントの両方のポリシー要件について説明します。

### ポリシー設定の概要
<a name="replication-policy-overview"></a>

クロスアカウント ECR レプリケーションでは、**送信先アカウントのみ**のポリシー設定が必要です。ソースアカウントには、特別なリポジトリポリシーやレジストリポリシーは必要ありません。
+ **ソースアカウント**: レジストリ設定でレプリケーションルールを設定します。ソースリポジトリに追加のポリシーは必要ありません。
+ **送信先アカウント**: ソースアカウントにイメージのレプリケートを許可するレジストリアクセス許可ポリシーを設定します。

### 送信先レジストリポリシーの要件
<a name="destination-registry-policy-requirements"></a>

送信先アカウントは、次のアクションを実行するアクセス許可をソースアカウントに付与するレジストリアクセス許可ポリシーを設定する必要があります。
+ `ecr:ReplicateImage` - ソースアカウントがイメージを送信先レジストリにレプリケートすることを許可します。
+ `ecr:CreateRepository` - リポジトリがまだ存在しない場合、ECR が宛先レジストリにリポジトリを自動的に作成することを許可します。

**重要**  
`ecr:CreateRepository` アクセス許可を付与しない場合は、レプリケーションが成功する前に、レプリケート先アカウントで同じ名前のリポジトリを手動で作成する必要があります。

送信先レジストリポリシーの例:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCrossAccountReplication",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:root"
            },
            "Action": [
                "ecr:ReplicateImage",
                "ecr:CreateRepository"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### ソースアカウント要件
<a name="source-account-requirements"></a>

ソースアカウントには以下のことが必要です。
+ レジストリ設定でレプリケーションルールを設定して、レプリケート先アカウントとリージョンを指定する。
+ レプリケーションを設定する IAM プリンシパルに必要な ECR アクセス許可があることを確認する。

**ソースリポジトリに追加のポリシーは必要ありません。**ソースリポジトリには、レプリケーション許可を付与するリポジトリポリシーは必要ありません。

### 一般的な誤解
<a name="common-misconceptions"></a>

ECR クロスアカウントレプリケーションポリシーに関する一般的な誤解を以下に示します。
+ **誤解**: ソースリポジトリには、送信先アカウントがイメージをレプリケートできるようにするポリシーが必要です。

  **現実**: ソースリポジトリには、レプリケーションのための特別なポリシーは必要ありません。
+ **誤解**: 送信元アカウントと送信先アカウントの両方にレジストリポリシーが必要です。

  **現実**: レジストリアクセス許可ポリシーが必要なのは、送信先アカウントのみです。
+ **誤解**: リポジトリポリシーとレジストリポリシーは同じものです。

  **現実**: リポジトリポリシーは個々のリポジトリへのアクセスを制御し、レジストリポリシーはレプリケーションなどのレジストリレベルのオペレーションを制御します。

### レプリケーション失敗のトラブルシューティング
<a name="replication-troubleshooting"></a>

クロスアカウントレプリケーションが失敗する場合は、以下を確認してください。
+ 送信先アカウントにレジストリアクセス許可ポリシーが設定されていることを確認します。
+ レジストリポリシーに `ecr:ReplicateImage` アクションと `ecr:CreateRepository` アクションの両方が含まれていることを確認します。
+ 送信元アカウント ID が送信先レジストリポリシーで正しく指定されていることを確認します。
+ 送信先リポジトリが存在することを確認する (`ecr:CreateRepository` が付与されていない場合)
+ CloudTrail ログで失敗した `CreateRepository` コールまたは `ReplicateImage` API コールを確認する

## プライベートイメージのレプリケーションに関する考慮事項
<a name="replication-considerations"></a>

プライベートイメージのレプリケーションを使用する際には、以下の点を考慮する必要があります。
+ レプリケーションの設定後にリポジトリにプッシュまたは復元されたリポジトリコンテンツのみがレプリケートされます。リポジトリ内の既存のコンテンツはいずれも複製されません。レプリケーションがオンになった後にイメージが復元されると、レプリケートされます。レプリケーションがオンになる前に復元された場合、レプリケートされません。
+ レプリケーションが行われても、リポジトリ名はリージョンとアカウント間で同じままです。Amazon ECR はレプリケーション中のリポジトリ名の変更をサポートしていません。
+ レプリケーション用にプライベートレジストリを初めて設定すると、Amazon ECR は、お客様に代わってサービスにリンクされた IAM ロールを作成します。サービスにリンクされた IAM ロールは、レジストリでレポジトリの作成とイメージのレプリケートを行うために必要なアクセス許可を Amazon ECR レプリケーションサービスに付与します。詳細については、「[Amazon ECR でのサービスにリンクされたロールの使用](using-service-linked-roles.md)」を参照してください。
+ クロスアカウントレプリケーションを実行するには、プライベートレジストリのレプリケート先が、ソースレジストリによるそのイメージのレプリケートを許可する必要があります。これは、プライベートレジストリの許可ポリシーを設定することによって許可できます。詳細については、「[Amazon ECR でのプライベートレジストリのアクセス許可](registry-permissions.md)」を参照してください。
+ プライベートレジストリの許可ポリシーが許可を取り消すように変更された場合でも、以前に許可された進行中のレプリケーションは完了することができます。
+ クロスリージョンレプリケーションを行うには、そのリージョン内またはリージョンに対してレプリケーションアクションが発生する前に、ソースアカウントとターゲットアカウントの両方がリージョンにオプトインされている必要があります。詳細については、「Amazon Web Services 全般のリファレンス」の「[AWS リージョンの管理](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)」を参照してください。
+  AWS パーティション間のクロスリージョンレプリケーションはサポートされていません。たとえば、`us-west-2` のリポジトリは ` cn-north-1` にレプリケートできません。 AWS パーティションの詳細については、*AWS 「 全般のリファレンス*」の[「ARN 形式](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax)」を参照してください。
+ プライベートレジストリのレプリケーション設定には、すべてのルール (合計で最大 10 個) 全体で最大 25 個の一意のレプリケート先を含めることができます。各ルールには、最大 100 個のフィルターを含めることができます。これは、例えば本番環境やテスト用に使用されるイメージが含まれるリポジトリに対して個別のルールを指定することを可能にします。
+ レプリケーション設定は、リポジトリプレフィックスを指定することによって、プライベートレジストリ内のレプリケートされるリポジトリのフィルタリングをサポートします。例については、「[例: リポジトリフィルターを使用したクロスリージョンレプリケーションの設定](registry-settings-examples.md#registry-settings-examples-crr-filter)」を参照してください。
+ レプリケーションアクションは、イメージのプッシュまたはイメージの復元ごとに 1 回のみ発生します。たとえば、`us-west-2` から ` us-east-1` および `us-east-1` から `us-east-2` へのクロスリージョンレプリケーションを設定した場合、`us-west-2` にプッシュされたイメージは `us-east-1` にのみレプリケートされ、`us-east-2` には再度レプリk-トされません。この動作は、クロスリージョンおよびクロスアカウントのレプリケーションの両方に適用されます。
+ 大部分のイメージは 30 分以内にレプリケートされますが、まれにレプリケーションに時間がかかることがあります。
+ レジストリレプリケーションでは、削除アクションやアーカイブアクションは実行されません。レプリケートされたイメージとリポジトリは、使用されなくなったときに削除またはアーカイブできます。
+ レプリケートするイメージがレプリケート先でアーカイブされている場合、レプリケート先で復元されます。
+ イメージがソースリージョンにアーカイブされている場合、レプリケーション設定で指定されたレプリケート先リージョンにはアーカイブされません。
+ IAM ポリシーやライフサイクルポリシーなどのリポジトリポリシーはレプリケートされず、定義されているリポジトリ以外には影響しません。
+ リポジトリ設定はデフォルトでレプリケートされません。リポジトリ作成テンプレートを使用してリポジトリ設定をレプリケートできます。これらの設定には、タグのミュータビリティ、暗号化、リポジトリのアクセス許可、ライフサイクルポリシーが含まれます。リポジトリ作成テンプレートの詳細については、「[プルスルーキャッシュ、プッシュ時作成、またはレプリケーションアクション中に作成されたリポジトリを制御するテンプレート](repository-creation-templates.md)」を参照してください。
+ リポジトリでタグのイミュータブル性が有効で、既存のイメージと同じタグを使用するイメージをレプリケートする場合、イメージはレプリケートされますが、重複したタグは含まれません。その結果、イメージのタグ付けが解除される可能性があります。
+ イメージをレプリケートするときに、BLOB マウントが設定されている場合、ECR はソースリポジトリのレイヤーがレプリケート先レジストリに既に存在することを確認します。レプリケート先レジストリにレイヤーが既に存在する場合、ECR はそれらのレイヤーをマウントします。

**注記**  
ソースレジストリがレプリケート先レジストリと異なる場合、ECR がレプリケートされたレイヤーをマウントするには、両方のレジストリで BLOB マウントを有効にする必要があります。