• システム開発に関わる内容をざっくりと書いていく

ざっくりECRについて

**Amazon Elastic Container Registry(ECR)**は、AWSが提供するコンテナイメージのリポジトリサービスで、Docker Hubのような役割を果たす。ECRは、コンテナイメージのセキュアなストレージと管理を提供し、AWS内でのシームレスな統合が可能。これにより、AWSのサービス(ECSやEKSなど)で使用するコンテナイメージを簡単に管理し、デプロイできる。

1. ECRの特徴

  • セキュアなリポジトリ
    ECRは、AWS Identity and Access Management(IAM)を利用した強力なアクセス制御を提供し、コンテナイメージのプッシュやプルの権限を細かく管理できる。
  • プライベートリポジトリ
    ECRのリポジトリはデフォルトでプライベート設定になっており、認証されたユーザーのみがアクセス可能。企業内やチーム内での利用に適している。
  • シームレスな統合
    ECRは、AWSの他のサービス(ECS、EKS、Lambdaなど)と統合されており、CI/CDパイプラインやコンテナベースのアプリケーションに組み込むのが容易。

2. ECRの使用に必要なもの

ECRにコンテナイメージをプッシュするには、いくつかの前提条件と設定が必要。

1. IAMユーザーとアクセス権限の設定

ECRにコンテナイメージをプッシュするためには、プッシュ権限を持ったIAMユーザーを作成し、適切な権限を付与する必要がある。IAMポリシーを設定することで、どのユーザーがECRにアクセスできるかを制御できる。

  • 必要なIAMポリシー
    ECRに対してコンテナイメージのプッシュやプルを行うには、以下のようなポリシーを持つIAMユーザーが必要。
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
],
"Resource": "*"
}
]
}

2. AWS CLIのセットアップ

ECRにコンテナイメージをプッシュするためには、AWS CLI(コマンドラインインターフェイス)が必要。

  • AWS CLIのインストール
    AWS CLIがインストールされていない場合、公式サイトからインストールする。
  • 認証情報の設定
    IAMユーザーのアクセスキーとシークレットキーを使って、CLIで認証情報を設定する。bashコードをコピーするaws configure

3. Dockerのセットアップ

ECRはDockerイメージを管理するためのサービスなので、Dockerが必要。Dockerがインストールされていない場合は、公式サイトからインストールする。

4. ECRへのログイン

AWS CLIを使って、ECRへのログインを行う。ECRは、AWSの認証情報を使ってDockerクライアントにログインする形で動作する。

bash
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com

このコマンドでECRにログインし、後続のプッシュ操作が可能になる。

3. ECRにコンテナイメージをプッシュする手順

1. コンテナイメージのビルド

まず、ローカルでDockerイメージをビルドする。

bash
docker build -t <image-name> .

2. イメージにタグを付ける

ECRにプッシュする前に、イメージにECR用のタグを付ける。

bash
docker tag <image-name>:latest <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository-name>:latest

3. ECRにプッシュ

ECRリポジトリにイメージをプッシュする。

bash
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository-name>:latest

これでECRにコンテナイメージが保存され、後でAWSの他のサービス(ECSやEKS)で使用可能になる。

4. ECRの管理とコスト

ECRの利用にはストレージのコストが発生する。ECRはコンテナイメージを管理するためのストレージサービスでもあるため、リポジトリに保存されたイメージの容量に応じて課金される。定期的に不要なイメージを削除し、ストレージコストを最適化することが推奨される。

  • ライフサイクルポリシー
    ECRにはライフサイクルポリシーを設定でき、一定期間が経過したイメージや特定のタグのイメージを自動的に削除できる。これにより、ストレージの無駄を防ぎ、コストを削減できる。

まとめ

ECRは、AWSのコンテナ管理環境で不可欠なリポジトリサービスで、Dockerイメージの安全な管理とプッシュ・プルが可能。AWSの他のサービスとの統合も容易。適切な権限設定と管理を行い、定期的にストレージのメンテナンスを行うことで、効率的に運用できる。