AWSをざっくり理解する

ECRをざっくり理解する

ECRをざっくり文章で表現する

Amazon ECR(Elastic Container Registry)は、Dockerコンテナイメージを安全に保存・管理・取得できるフルマネージドなコンテナレジストリサービスです。ECSやEKSとの連携がスムーズで、CI/CDにも活用できます。

公式サイト:ECR

ECRをざっくり箇条書きで表現する

  • Dockerイメージを保存・管理するサービス
  • フルマネージドでスケーラブル
  • ECSやEKSと簡単に連携可能
  • セキュアなアクセス制御とスキャン機能
  • CI/CDパイプラインに統合しやすい

ECRのユースケース(どんな時に使えるか)をざっくり

  • 自分たちのコンテナイメージをAWS上に安全に保存しておきたいとき
  • Fargate や ECS / EKS などでアプリケーションを動かすときに、そのイメージの保存場所として
  • CI/CDツール(GitHub Actions や CodePipeline など)から自動でイメージをプッシュ・プルしたいとき
  • 複数の開発者チームで共通のベースイメージを使いたいとき
  • プライベート(非公開)なイメージを扱いたいとき

ECRを使う場合のAWS構成例

この構成では、開発者やCIツールが作成したDockerイメージをAmazon ECRに保存し、FargateやECS/EKSからそのイメージを使ってコンテナアプリケーションを実行します。保存されたイメージは本番環境でのデプロイに利用され、アプリはRDSやS3などのサービスとも連携できます。
        開発者PC(Dockerイメージ作成)
          |
          v
    AWS CLI / CIツール(GitHub Actionsなど)
          |
          v
   +-------------------+
   |     Amazon ECR    | ← イメージを保存
   +-------------------+
          |
          v
   +-------------------+
   |   Amazon ECS/EKS  | ← Fargateでも可
   | (コンテナ実行)   |
   +-------------------+
          |
          v
   +-------------------+
   |   アプリケーション |
   |(Web APIなど)     |
   +-------------------+
          |
          v
   +-------------------+
   |   Amazon RDS / S3 |
   +-------------------+

各パーツの説明

  • 開発者PC / CIツール: アプリケーションのソースコードからDockerイメージを作成します。
  • Amazon ECR: 作成したDockerイメージを保存しておく場所(イメージの倉庫)です。
  • Amazon ECS / Fargate / EKS: ECRにあるイメージを使ってコンテナを起動・実行します。
  • アプリケーション: コンテナ内で動作するWebアプリやAPIなどのシステムです。
  • Amazon RDS / S3: アプリケーションがデータを保存・取得するために利用する外部サービスです。

処理の流れ

  1. 開発者がDockerイメージを作成します。
  2. 作成したイメージをAmazon ECRにアップロード(プッシュ)します。
  3. FargateやECS/EKSがECRからイメージを取得(プル)してコンテナを実行します。
  4. コンテナ内のアプリケーションが起動し、ユーザーからのリクエストを処理します。
  5. 必要に応じて、RDSやS3と連携してデータを読み書きします。

この構成の特徴

  • サーバーを意識せずに、コンテナアプリケーションを実行できます(Fargate使用時)。
  • イメージを中央で一元管理できるため、開発と本番の差が少なくなります。
  • CI/CDとの相性が良く、自動化されたデプロイが可能です。
  • セキュリティスキャン機能により、脆弱性のあるイメージを検知できます。
  • アクセス権限(IAM)によって、誰がイメージを使えるか細かく設定できます。

ECRと一緒によく使うAWSサービス

  • AWS Fargate: ECRにあるコンテナイメージを使って、サーバーレスでコンテナを実行できます。
  • Amazon ECS: コンテナを管理・実行するサービス。ECRと連携してイメージを動かします。
  • Amazon EKS: Kubernetesを使いたいときの選択肢。こちらもECRからイメージを取り込みます。
  • AWS CodePipeline / CodeBuild: CI/CDを自動化するサービス。コードの変更をトリガーにして、ECRにイメージを自動でアップできます。
  • AWS IAM: ECRにアクセスできるユーザーやサービスを管理するために使います(セキュリティ管理)。
  • AWS CloudWatch: コンテナのログやメトリクス(動作状況)を確認できます。
  • Amazon S3: バックアップ用ファイルや静的コンテンツなど、アプリで使う他のデータの保存先として一緒に使われます。

ECRを使う際の注意点

  • プライベートなDockerイメージの保存場所なので、アクセス権の設定に注意する
  • イメージをプッシュ/プルするには、AWS CLIでログインが必要
  • 自動で不要なイメージが削除されないので、古いイメージは自分で管理する
  • ストレージ使用量に応じて課金されるので、使わないイメージは削除がおすすめ
  • イメージのバージョン管理(タグ付け)をしておかないと、どれが最新か分かりにくくなる
  • 異なるAWSリージョンで使う場合、リージョンごとにECRリポジトリが必要
  • コンテナを動かすサービス(Fargate や ECS)と連携して使うのが基本
  • ビルドしたイメージをECRにプッシュするには、Dockerの知識も必要