

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

# Amazon ECR プライベートリポジトリ
<a name="Repositories"></a>

Amazon ECR プライベートリポジトリには、Docker イメージ、Open Container Initiative (OCI) イメージ、および OCI 互換アーティファクトが含まれます。Amazon ECR API オペレーションまたは Amazon ECR コンソールの **[リポジトリ]** セクションを使用して、イメージリポジトリの作成、監視、削除、およびそれらにアクセスできるユーザーを制御するアクセス許可の設定を行うことができます。また、Amazon ECR と Docker CLI の統合によって、開発環境とリポジトリの間でイメージをプッシュおよびプルすることもできます。

**Topics**
+ [プライベートリポジトリの概念](#repository-concepts)
+ [イメージを保存するための Amazon ECR プライベートリポジトリの作成](repository-create.md)
+ [Amazon ECR でのプライベートリポジトリのコンテンツと詳細の表示](repository-info.md)
+ [Amazon ECR でのプライベートリポジトリの削除](repository-delete.md)
+ [Amazon ECR でのプライベートリポジトリポリシー](repository-policies.md)
+ [Amazon ECR でのプライベートリポジトリのタグ付け](ecr-using-tags.md)

## プライベートリポジトリの概念
<a name="repository-concepts"></a>
+ デフォルトでは、アカウントにはデフォルトリポジトリ (`aws_account_id.dkr.ecr.region.amazonaws.com`) 内のリポジトリへの読み取りおよび書き込みアクセス権があります。ただし、ユーザーには、Amazon ECR API への呼び出しと、リポジトリに対するイメージのプッシュまたはプルを行う許可が必要です。Amazon ECR には、さまざまなレベルでユーザーアクセスを制御するための複数の 管理ポリシーが用意されています。詳細については、「[Amazon Elastic Container Registry のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」を参照してください。
+ リポジトリは、 ユーザーアクセスポリシーと個々のリポジトリポリシーによって制御できます。詳細については、「[Amazon ECR でのプライベートリポジトリポリシー](repository-policies.md)」を参照してください。
+ リポジトリ名では、似たリポジトリをグループ化するのに使用できる名前空間をサポートできます。たとえば、同じレジストリを使用するチームが複数ある場合、チーム A が `team-a` 名前空間を使用し、チーム B が `team-b` 名前を使用することが可能です。こうすることで、各チームは、`web-app` という独自のイメージを持つことができます。各イメージの先頭には、チームの名前空間が付けられます。この設定により、各チームは干渉することなくイメージを同時に使用できます。チーム A のイメージは `team-a/web-app` で、チーム B のイメージは `team-b/web-app` です。
+ イメージは、独自のレジストリ内およびアカウント間でリージョン間で他のリポジトリにレプリケートできます。これを行うには、レジストリ設定でレプリケーション構成を指定します。詳細については、「[Amazon ECR でのプライベートレジストリ設定](registry-settings.md)」を参照してください。
+ BLOB マウントがレジストリレベルで有効になっている場合、リポジトリは共通のイメージレイヤーを共有できます。

# イメージを保存するための Amazon ECR プライベートリポジトリの作成
<a name="repository-create"></a>

**重要**  
 AWS KMS (DSSE-KMS) を使用した二層式サーバー側の暗号化は、 AWS GovCloud (US) リージョンでのみ使用できます。

Amazon ECR プライベートリポジトリを作成し、そのリポジトリを使用してコンテナイメージを保存します。 AWS マネジメントコンソールを使用してプライベートリポジトリを作成する手順は、次のとおりです。

**リポジトリを作成するには (AWS マネジメントコンソール)**

1. [https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories) で Amazon ECR コンソールを開きます。

1. ナビゲーションバーから、リポジトリを作成するリージョンを選択します。

1. **[プライベートリポジトリ]** を選択し、**[リポジトリの作成]** を選択します。

1. [**リポジトリ名**] に、リポジトリの一意の名前を入力します。リポジトリ名は単独で指定できます（`nginx-web-app` など)。リポジトリ名に名前空間を付けて、リポジトリをカテゴリでグループ化することもできます (`project-a/nginx-web-app` など)。
**注記**  
リポジトリ名には最大 `256` 文字まで含めることができます。名前は英字で始まる必要があり、小文字、数字、複数のハイフン、複数のアンダースコア、ピリオド、複数のスラッシュのみを含めることができます。二重スラッシュの使用はサポートされていません。

1. **[Image tag immutability]** で、このリポジトリのタグのミュータビリテイの設定を選択します。
   + **[ミュータブル]** – イメージタグを上書きする場合は、このオプションを選択します。Amazon ECR がキャッシュされたイメージを更新できるように、プルスルーキャッシュアクションを使用するリポジトリに推奨されます。さらに、いくつかのミュータブルタグのタグ更新を無効にするには、**[Mutable tag exclusion]** テキストボックスにタグ名を入力します。複数の類似したタグが一致するワイルドカード (\$1) を使用できます。
   + **[イミュータブル]** – イメージタグが上書きされるのを防ぎ、既存のタグを含むイメージをプッシュするときに、リポジトリ内のすべてのタグと除外に適用する場合、このオプションを選択します。Amazon ECR は、既存のタグを使用してイメージをプッシュしようとすると `ImageTagAlreadyExistsException` を返します。さらに、いくつかのイミュータブルタグのタグ更新を有効にするには、**[Immutable tag exclusion]** テキストボックスにタグ名を入力します。複数の類似したタグが一致するワイルドカード (\$1) を使用できます。
**注記**  
個々のタグの可変性設定はサポートされていません。

1. ** 暗号化設定**では、**AES-256** または のいずれかを選択します** AWS KMS**。詳細については、「[保管中の暗号化](encryption-at-rest.md)」を参照してください。

   1.  を選択した場合 AWS KMS は、シングルレイヤー暗号化とデュアルレイヤー暗号化のどちらかを選択します。 AWS KMS またはデュアルレイヤー暗号化の使用には追加料金がかかります。詳細については、[Amazon ECR サービスの料金](https://aws.amazon.com/ecr/pricing/)を参照してください。

   1. デフォルトでは、エイリアスを含む AWS マネージドキー`aws/ecr`が選択されます。このキーは、 AWS KMS 暗号化を有効にしたリポジトリを初めて作成するときにアカウントに作成されます。**[カスタマーマネージドキー (高度)]** を選択して、独自の AWS KMS キーを選択します。 AWS KMS キーはクラスターと同じリージョンにある必要があります。** AWS KMS キーの作成**を選択してコンソール AWS KMS に移動し、独自のキーを作成します。

1. **[イメージのスキャン設定]** では、基本スキャンに対してリポジトリレベルでのスキャン設定を指定できますが、プライベートレジストリレベルでスキャン設定を指定することがベストプラクティスです。プライベートレジストリレベルでスキャン設定を設定すると、拡張スキャンまたは基本スキャンのいずれかを選択できます。また、スキャンするリポジトリを指定するフィルターを定義することもできます。

1. **[作成]** を選択します。

**リポジトリを作成するには (AWS CLI)**

1.  AWS CLI **aws ecr create-repository** コマンドで を使用してリポジトリを作成できます。

   ```
   aws ecr create-repository \
               --repository-name hello-repository \
               --region region
   ```

1. リポジトリ作成テンプレートが定義されている場合は、使い慣れた Amazon ECR プッシュコマンドと目的のリポジトリ名を使用してイメージをプッシュすることで、リポジトリを作成できます。Amazon ECR は、リポジトリ作成テンプレートの事前定義された設定を使用して、自動的にリポジトリを作成します。リポジトリ作成テンプレートがまだ定義されていない場合、存在しないイメージリポジトリへのリクエストは失敗します。

   ```
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/prefix/my-new-repository:tag
   ```

## 次の手順
<a name="procedure_next_steps"></a>

イメージをリポジトリにプッシュする手順を表示するには、リポジトリを選択し、**[プッシュコマンドの表示]** を選択します。リポジトリへのイメージのプッシュの詳細については、「[Amazon ECR プライベートリポジトリへのイメージのプッシュ](image-push.md)」を参照してください。

# Amazon ECR でのプライベートリポジトリのコンテンツと詳細の表示
<a name="repository-info"></a>

プライベートリポジトリを作成したら、 AWS マネジメントコンソールでリポジトリに関する詳細を表示できます。
+ リポジトリに保存されているイメージ
+ リポジトリに格納されている各イメージの詳細 (各イメージのサイズと SHA ダイジェストを含む)
+ リポジトリのコンテンツに指定されたスキャン頻度
+ リポジトリにアクティブなプルスルーキャッシュルールが関連付けられているかどうか
+ リポジトリの暗号化設定

**注記**  
Docker バージョン 1.9 以降、Docker クライアントは V2 Docker レジストリにプッシュする前にイメージレイヤーを圧縮します。**docker images** コマンドの出力は、圧縮されていないイメージのサイズを表示します。したがって、Docker は、 AWS マネジメントコンソールで表示されているイメージよりも大きなイメージを返す可能性があることに注意してください。

**リポジトリ情報を表示するには (AWS マネジメントコンソール)**

1. [https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories) で Amazon ECR コンソールを開きます。

1. ナビゲーションバーから、表示するリポジトリを含むリージョンを選択します。

1. ナビゲーションペインで、[**Repositories**] を選択します。

1. **[Repositories]** (リポジトリ) ページで、**[Private]** (プライベート) タブを選択し、表示するレポジトリを選択します。

1. リポジトリの詳細ページでは、コンソールはデフォルトで **[Images]** (イメージ) ビューを表示します。ナビゲーションメニューを使用して、リポジトリに関するその他の情報を表示します。
   + **[Summary]** (概要) をクリックして、リポジトリの詳細とリポジトリのプルカウントデータを表示します。
   + **[Images]** (イメージ) を選択して、リポジトリ内のイメージタグに関する情報を表示します。イメージの詳細情報を表示するには、イメージタグを選択します。詳細については、「[Amazon ECR でのイメージの詳細の表示](image-info.md)」を参照してください。

     削除するイメージのうちタグが付いていないものがある場合、削除するリポジトリの左側のボックスを選択し、[**Delete**] (削除) を選択できます。詳細については、「[Amazon ECR でのイメージの削除](delete_image.md)」を参照してください。
   + [**Permissions (アクセス許可)**] を選択し、リポジトリに適用されるリポジトリポリシーを表示します。詳細については、「[Amazon ECR でのプライベートリポジトリポリシー](repository-policies.md)」を参照してください。
   + [**ライフサイクルポリシー**] を選択し、リポジトリに適用されるライフサイクルポリシールールを表示します。ライフサイクルイベント履歴もここに表示されます。詳細については、「[Amazon ECR でのライフサイクルポリシーを使用したイメージのクリーンアップの自動化](LifecyclePolicies.md)」を参照してください。
   + [**タグ**] を選択して、リポジトリに適用されているメタデータタグを表示します。

# Amazon ECR でのプライベートリポジトリの削除
<a name="repository-delete"></a>

使用し終わったリポジトリは削除できます。でリポジトリを削除すると AWS マネジメントコンソール、リポジトリに含まれるすべてのイメージも削除されます。これは元に戻すことはできません。

**重要**  
削除されたリポジトリ内のイメージもすべて削除されます。このオペレーションは元に戻すことができません。

**リポジトリを削除するには (AWS マネジメントコンソール)**

1. [https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories) で Amazon ECR コンソールを開きます。

1. ナビゲーションバーから、削除するリポジトリを含むリージョンを選択します。

1. ナビゲーションペインで、[**Repositories**] を選択します。

1. **[Repositories]** (リポジトリ) ページで、**[Private]** (プライベート) タブを選択し、削除するレポジトリを選択して **[Delete]** (削除) を選びます。

1. [***repository\$1name* の削除**] ウィンドウで、選択されたリポジトリを削除することを確認し、[**削除**] を選択します。

# Amazon ECR でのプライベートリポジトリポリシー
<a name="repository-policies"></a>

Amazon ECR では、リソースベースのアクセス権限を使用してリポジトリへのアクセスを制御します。リソースベースのアクセス許可を使用すると、リポジトリにアクセスできるユーザーやロール、およびそれらのユーザーやロールがリポジトリに対して実行できるアクションを指定できます。デフォルトでは、リポジトリを作成した AWS アカウントのみがリポジトリにアクセスできます。リポジトリに対する追加アクセスを許可するリポジトリポリシーを適用できます。

**Topics**
+ [レポジトリポリシーと IAM ポリシー](#repository-policy-vs-iam-policy)
+ [Amazon ECR でのプライベートリポジトリポリシーの例](repository-policy-examples.md)
+ [Amazon ECR でのプライベートリポジトリポリシーステートメントの設定](set-repository-policy.md)

## レポジトリポリシーと IAM ポリシー
<a name="repository-policy-vs-iam-policy"></a>

Amazon ECR リポジトリポリシーは、個別の Amazon ECR リポジトリへのアクセスを制御することを目的として特に使用される IAM ポリシーのサブセットです。IAM ポリシーは、一般的に Amazon ECR サービス全体にアクセス権限を適用するために使用されますが、特定のリソースへのアクセスを制限するために使用することもできます。

Amazon ECR リポジトリポリシーと IAM ポリシーはどちらも、特定のユーザーまたはロールがリポジトリで実行できるアクションを決定するときに使用されます。ユーザーまたはロールがレポジトリから 1 つのアクションの実行を許可されていても、IAM ポリシーからアクセス権限を拒否される場合 (またはその逆の場合)、そのアクションは拒否されます。ユーザーあるいはロールは、レポジトリポリシーまたは IAM ポリシーのいずれかのみでアクションへのアクセスが許可されていることを必要とし、その両方でこのアクションが許可されている必要はありません。

**重要**  
Amazon ECR では、ユーザーがレジストリへの認証を行って、Amazon ECR リポジトリに対するイメージのプッシュまたはプルを行う前に、IAM ポリシーを介して `ecr:GetAuthorizationToken` API への呼び出しを行う許可が必要です。Amazon ECR には、さまざまなレベルでユーザーアクセスを制御するための複数の IAM マネージドポリシーが用意されています。詳細については、「[Amazon Elastic Container Registry のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」を参照してください。

これらのいずれかのポリシータイプを使用して、次の例に示すようにレポジトリへのアクセスを制御します。

この例は、特定のユーザーがリポジトリ内でリポジトリとイメージを説明することを許可する Amazon ECR リポジトリポリシーを示しています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ECRRepositoryPolicy",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::111122223333:user/username"},
            "Action": [
                "ecr:DescribeImages",
                "ecr:DescribeRepositories"
            ],
            "Resource": "*"
        }
    ]
}
```

------

この例は、リソースパラメータを使用してポリシーで 1 つのレポジトリ (レポジトリの完全な ARN で指定) を対象とすることで、上記と同じ目的を達成する IAM ポリシーを示しています。Amazon リソースネーム (ARN) 形式の詳細については、「[リソース](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources)」を参照してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribeRepoImage",
            "Effect": "Allow",
            "Action": [
                "ecr:DescribeImages",
                "ecr:DescribeRepositories"
            ],
            "Resource": ["arn:aws:ecr:us-east-1:111122223333:repository/repository-name"]
        }
    ]
}
```

------

# Amazon ECR でのプライベートリポジトリポリシーの例
<a name="repository-policy-examples"></a>

**重要**  
このページのリポジトリポリシーの例は、Amazon ECR プライベートリポジトリに適用するためのものです。Amazon ECR リポジトリをリソースとして指定するように変更しない限り、IAM プリンシパルと直接使用すると正しく動作しません。リポジトリポリシーの設定詳細については、「[Amazon ECR でのプライベートリポジトリポリシーステートメントの設定](set-repository-policy.md)」を参照してください。

Amazon ECR リポジトリポリシーは、個別の Amazon ECR リポジトリへのアクセスを制御することを目的として特に使用される IAM ポリシーのサブセットです。IAM ポリシーは、一般的に Amazon ECR サービス全体にアクセス権限を適用するために使用されますが、特定のリソースへのアクセスを制限するために使用することもできます。詳細については、「[レポジトリポリシーと IAM ポリシー](repository-policies.md#repository-policy-vs-iam-policy)」を参照してください。

以下のリポジトリポリシーの例では、Amazon ECR プライベートリポジトリへのアクセスを制御するために使用できる許可ステートメントを示しています。

**重要**  
Amazon ECR では、ユーザーがレジストリへの認証を行って、Amazon ECR リポジトリに対するイメージのプッシュまたはプルを行う前に、IAM ポリシーを介して `ecr:GetAuthorizationToken` API への呼び出しを行う許可が必要です。Amazon ECR には、さまざまなレベルでユーザーアクセスを制御するための複数の IAM マネージドポリシーが用意されています。詳細については、「[Amazon Elastic Container Registry のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」を参照してください。

## 例: 1 名以上の ユーザーを許可する
<a name="IAM_within_account"></a>

次のリポジトリポリシーでは、1 名以上の ユーザーがリポジトリに対してイメージをプッシュまたはプルできます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/push-pull-user-1",
                    "arn:aws:iam::111122223333:user/push-pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:GetDownloadUrlForLayer",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: 別のアカウントを許可する
<a name="IAM_allow_other_accounts"></a>

次のリポジトリポリシーでは、特定のアカウントにイメージのプッシュが許可されます。

**重要**  
アクセス権限を付与するアカウントには、リポジトリポリシーを作成するリージョンが有効になっている必要があります。有効でない場合、エラーが発生します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCrossAccountPush",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

次のリポジトリポリシーでは、一部のユーザーにイメージのプルが許可されますが (*pull-user-1* および *pull-user-2*)、別のユーザーにはフルアクセスが許可されます (*admin-user*)。

**注記**  
で現在サポートされていないより複雑なリポジトリポリシーについては AWS マネジメントコンソール、 [https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html) AWS CLI コマンドを使用してポリシーを適用できます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/pull-user-1",
                    "arn:aws:iam::111122223333:user/pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/admin-user"
            },
            "Action": [
                "ecr:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: すべて拒否する
<a name="IAM_deny_all"></a>

次のリポジトリポリシーでは、すべてのアカウントのすべてのユーザーに対してイメージのプルが拒否されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyPull",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: アクセスを特定の IP アドレスに制限する
<a name="IAM_restrict_ip"></a>

次の例では、特定のアドレス範囲からリポジトリに適用された場合に、Amazon ECR オペレーションを実行するアクセス許可をすべてのユーザーに対して拒否します。

このステートメントの条件では、許可されたインターネットプロトコルバージョン 4 (IPv4) IP アドレスの `54.240.143.*` 範囲を識別します。

`Condition` ブロックは、 `NotIpAddress` 条件と `aws:SourceIp`条件キーを使用します。これは、 AWS全体の条件キーです。これらの条件キーの詳細については、「[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。`aws:sourceIp`IPv4 値は標準の CIDR 表記を使用します。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)の *IP アドレス条件演算子* を参照してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ECRPolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "ecr:*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}
```

------

## 例: AWS サービスを許可する
<a name="IAM_service_linked"></a>

次のリポジトリポリシーは、そのサービスとの統合に必要な Amazon ECR API アクション AWS CodeBuild へのアクセスを許可します。次の例を使用する場合、`aws:SourceArn` 条件キーと `aws:SourceAccount` 条件キーを使用して、これらのアクセス許可を引き受けることができるリソースの範囲を指定する必要があります。詳細については、*AWS CodeBuild ユーザーガイド*の「[CodeBuild の Amazon ECR サンプル](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-ecr.html)」を参照してください。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"CodeBuildAccess",
         "Effect":"Allow",
         "Principal":{
            "Service":"codebuild.amazonaws.com"
         },
         "Action":[
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer"
         ],
         "Resource": "*",
         "Condition":{
            "ArnLike":{
               "aws:SourceArn":"arn:aws:codebuild:us-east-1:123456789012:project/project-name"
            },
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
            }
         }
      }
   ]
}
```

------

# Amazon ECR でのプライベートリポジトリポリシーステートメントの設定
<a name="set-repository-policy"></a>

以下の AWS マネジメントコンソール 手順に従って、 のリポジトリにアクセスポリシーステートメントを追加できます。リポジトリごとに複数のポリシーステートメントを追加できます。エンドポイントポリシーの例については、「[Amazon ECR でのプライベートリポジトリポリシーの例](repository-policy-examples.md)」を参照してください。

**重要**  
Amazon ECR では、ユーザーがレジストリへの認証を行って、Amazon ECR リポジトリに対するイメージのプッシュまたはプルを行う前に、IAM ポリシーを介して `ecr:GetAuthorizationToken` API への呼び出しを行う許可が必要です。Amazon ECR には、さまざまなレベルでユーザーアクセスを制御するための複数の IAM マネージドポリシーが用意されています。詳細については、「[Amazon Elastic Container Registry のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」を参照してください。

**リポジトリポリシーステートメントを設定するには**

1. [https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories) で Amazon ECR コンソールを開きます。

1. ナビゲーションバーから、ポリシーステートメントをオンに設定するリポジトリが含まれるリージョンを選択します。

1. ナビゲーションペインで、[**Repositories**] を選択します。

1. **リポジトリ**ページで、ポリシーステートメントを有効に設定するリポジトリを選択して、リポジトリの内容を表示します。

1. リポジトリイメージのリストビューのナビゲーションペインで、[**アクセス権限**]、[**編集**] を選択します。
**注記**  
ナビゲーションペインに [**Permissions**] (アクセス許可) オプションが表示されない場合、画面がリポジトリイメージリストビューであることを確認します。

1. **許可を編集**ページで [**ステートメントを追加**] を選択します。

1. [**ステートメント名**] に、ステートメントの名前を入力します。

1. [**効果**] で、ポリシーステートメントの結果を許可または明示的な拒否のどちらにするかを指定します。

1. [**プリンシパル**] で、ポリシーステートメントを適用する範囲を選択します。詳細については、*IAM ユーザーガイド*の「[AWS JSON ポリシー要素: プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)」を参照してください。
   + Everyone **(\$1) **チェックボックスをオンにすると、認証されたすべての AWS ユーザーにステートメントを適用できます。
   + [**サービスプリンシパル**] で、特定のサービスにステートメントを適用するサービスプリンシパル名 (`ecs.amazonaws.com` など) を指定します。
   + **AWS アカウント IDs** では、 AWS アカウント番号 ( など`111122223333`) を指定して、特定の AWS アカウントのすべてのユーザーにステートメントを適用します。カンマ区切りのリストを使用して複数のアカウントを指定できます。
**重要**  
アクセス権限を付与するアカウントには、リポジトリポリシーを作成するリージョンが有効になっている必要があります。有効でない場合、エラーが発生します。
   + **IAM エンティティ**の場合、ステートメントを適用する AWS アカウントのロールまたはユーザーを選択します。
**注記**  
で現在サポートされていないより複雑なリポジトリポリシーについては AWS マネジメントコンソール、 [https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html) AWS CLI コマンドを使用してポリシーを適用できます。

1. [**アクション**] で、個別の API オペレーションのリストとの間でポリシーステートメントを適用する Amazon ECR API オペレーションの範囲を選択します。

1. 完了したら、[**Save**] を選択してポリシーを設定します。

1. 追加する各レポジトリポリシーに対して、前のステップを繰り返します。

# Amazon ECR でのプライベートリポジトリのタグ付け
<a name="ecr-using-tags"></a>

Amazon ECR リポジトリの管理に役立つように、 AWS リソース*タグ*を使用して、新規または既存の Amazon ECR リポジトリに独自のメタデータを割り当てることができます。たとえば、アカウントの Amazon ECR リポジトリに対して各リポジトリの所有者を追跡しやすくするため、一連のタグを定義できます。

## タグの基本
<a name="tag-basics"></a>

タグには、Amazon ECR に関連する意味はなく、完全に文字列として解釈されます。タグは自動的にはリソースに割り当てられません。タグキーと値は編集でき、リソースからタグはいつでも削除できます。タグの値を空の文字列に設定することはできますが、タグの値を null に設定することはできません。特定のリソースについて既存のタグと同じキーを持つタグを追加した場合、以前の値は新しい値によって上書きされます。リソースを削除すると、リソースのタグもすべて削除されます。

Amazon ECR コンソール、、 AWS CLIおよび Amazon ECR API を使用してタグを操作できます。

 AWS Identity and Access Management (IAM) を使用すると、 AWS アカウント内のどのユーザーにタグを作成、編集、または削除するためのアクセス許可があるかを制御できます。IAM ポリシー内のタグの詳細については、「[タグベースのアクセスコントロールを使用する](ecr-supported-iam-actions-tagging.md)」を参照してください。

## 請求用のリソースにタグを付ける
<a name="tag-resources-for-billing"></a>

Amazon ECR リポジトリに追加するタグは、コスト配分を有効にした後にコストと使用状況レポートでコスト配分を確認するときに便利です。詳しくは、「[Amazon ECR 使用状況レポート](usage-reports.md)」を参照してください。

リソースを組み合わせたコストを確認するには同じタグキー値を持つリソースに基づいて、請求情報を整理します。例えば、複数のリソースに特定のアプリケーション名のタグを付け、請求情報を整理することで、複数のサービスを利用しているアプリケーションの合計コストを確認することができます。タグによるコスト配分レポートの設定の詳細については、*AWS Billing ユーザーガイド*の「[毎月のコスト配分レポート](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html)」を参照してください。

**注記**  
レポートを有効にすると、約 24 時間後に、今月のデータを表示できるようになります。

# Amazon ECR でのプライベートリポジトリへのタグの追加
<a name="adding-tags-repositories"></a>

プライベートリポジトリにタグを追加できます。

タグの名前とベストプラクティスの詳細については、「 リソースのタグ付けユーザーガイド」の「タグ[の命名制限と要件](https://docs.aws.amazon.com//tag-editor/latest/userguide/tagging.html#tag-conventions)」と[「ベストプラクティス](https://docs.aws.amazon.com//tag-editor/latest/userguide/tagging.html#tag-best-practices)」を参照してください。 * AWS *

## リポジトリへのタグの追加 (AWS マネジメントコンソール)
<a name="tag-resources-console"></a>

1. Amazon ECR コンソール ([https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/)) を開きます。

1. ナビゲーションバーから、使用するリージョンを選択します。

1. ナビゲーションペインで、[**Repositories**] を選択します。

1. **[リポジトリ]** ページで、タグ付けするリポジトリの横にあるチェックボックスを選択します。

1. **[アクション]** メニューから、**[リポジトリタグ]** を選択します。

1. **[リポジトリタグ]** ページで、**[タグの追加]**、**[タグの追加]** の順に選択します。

1. **[リポジトリタグを編集]** ページで、各タグのキーと値を指定してから **[保存]** を選択します。

## リポジトリ (AWS CLI または API) へのタグの追加
<a name="tag-resources-api-sdk"></a>

または API を使用して、1 つ以上のタグを追加 AWS CLI または上書きできます。
+ AWS CLI - [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/ecr/tag-resource.html)
+ API アクション - [TagResource](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_TagResource.html)

次の例は、 AWS CLIを使用してタグを追加する方法を示しています。

**例 1: リポジトリにタグ付けする**  
次のコマンドは、リポジトリにタグ付けします。

```
aws ecr tag-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name \
     --tags Key=stack,Value=dev
```

**例 2: リポジトリに複数のタグをタグ付けする**  
次のコマンドでは、リポジトリに 3 つのタグが追加されます。

```
aws ecr tag-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name \
     --tags Key=key1,Value=value1 Key=key2,Value=value2 Key=key3,Value=value3
```

**例 3: リポジトリのタグを一覧表示する**  
次のコマンドは、リポジトリに関連付けられているタグをリストします。

```
aws ecr list-tags-for-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name
```

**例 4: リポジトリを作成してタグを追加する**  
次のコマンドでは、`test-repo` という名前のリポジトリを作成し、キーが `team` で値が `devs` のタグを追加します。

```
aws ecr create-repository \
     --repository-name test-repo \
     --tags Key=team,Value=devs
```

# Amazon ECR でのプライベートリポジトリからのタグの削除
<a name="deleting-tags-repositories"></a>

プライベートリポジトリからタグを削除できます。

## プライベートリポジトリからタグを削除する手順 (AWS マネジメントコンソール)
<a name="deleting-tags-repositories-console"></a>

1. Amazon ECR コンソール ([https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/)) を開きます。

1. ナビゲーションバーから、使用するリージョンを選択します。

1. **[リポジトリ]** ページで、タグを削除したいリポジトリの横にあるチェックボックスを選択します。

1. **[アクション]** メニューから、**[リポジトリタグ]** を選択します。

1. **[リポジトリタグ]** ページで、**[編集]** を選択します。

1. **[リポジトリタグを編集]** ページで、削除するタグごとに **[削除]** を選択してから **[保存]** を選択します。

## プライベートリポジトリからタグを削除する手順 (AWS CLI)
<a name="deleting-tags-repositories-cli"></a>

または AWS CLI API を使用して、1 つ以上のタグを削除できます。
+ AWS CLI - [untag-resource](https://docs.aws.amazon.com/cli/latest/reference/ecr/untag-resource.html)
+ API アクション - [UntagResource](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_UntagResource.html)

次の例は、 AWS CLIを使用してリポジトリからタグを削除する方法を示しています。

```
aws ecr untag-resource \
     --resource-arn arn:aws:ecr:region:account_id:repository/repository_name \
     --tag-keys tag_key
```