AWSのAmazon ECRとは
Amazon ECR(Amazon Elastic Container Registry)とは、AWSでコンテナソフトウェアイメージを簡単に保存し、デプロイ・共有するためのクラウドサービスを指します。フルマネージドのコンテナレジストリで、アプリケーションイメージとアーティファクトをデプロイすることができます。
ここでは、Amazon ECRの特徴や機能、使い方を解説します。
【参考】:Amazon Elastic Container Registry
Amazon ECRの特徴
Amazon ECRの特徴は、フルマネージドサービスのためインフラのインストール作業なしにコンテナイメージをプッシュできる点が挙げられます。好きな管理ツールを用いてイメージをプルし、利用します。
Amazon ECRは、Amazon ECS(Amazon Elastic Container Service)およびAmazon EKS(Amazon Elastic Kubernetes Service)と統合されています。そのことから、どちらのオーケストレーターサービスからでも、コンテナイメージの保存や実行が可能です。
操作は、Docker CLIコマンドによるコマンドライン操作やウェブアクセスなど、好みのDockerツールが使用できます。
【参考】:Amazon Elastic Container Registry の特徴
Amazon ECRの機能
Amazon ECRは、コンテナイメージを使うために必要な機能を提供します。コンテナイメージをライフサイクル管理し、不要なイメージをクリーンアップして保全します。この他にも、プルするイメージのキャッシュを管理したり、リージョンやアカウントを超えてイメージを作成したりすることもできます。
【参考】:AWS Docs: Amazon Elastic Container Registry とは
Amazon ECRの構成要素
Amazon ECRの構成要素は、いくつかのコンポーネントにわかれて提供されます。具体的には、次のコンポーネントに分かれます。
・レジストリ サインインしたAWSアカウントに、それぞれ1つのプライベートレジストリが割り当てられます。このレジストリにDockerイメージやOCI(Open Container Initiative)イメージなどを格納します。
・認証トークン クライアントが、イメージをプッシュあるいはプルする際に必要な認証手続きを行います。
・リポジトリ DockerイメージやOCI(Open Container Initiative)イメージなどの集合体です。
・リポジトリポリシー リポジトリの管理ポリシーに基づいて、リポジトリやコンテンツのアクセス制御を行います。
【参考】:AWS Docs: Amazon Elastic Container Registry とは
Amazon ECRとECSの違い
Amazon ECSは、Dockerコンテナの実行や停止などを管理するサービスです。コンテナのオーケストレーションサービスを提供します。Amazon ECRは、管理するコンテナイメージを保存するレジストリを提供します。Docker Hubのようなイメージ共有サービスを提供します。
Amazon ECRとECSの違いは、Amazon ECRがデプロイするコンテナイメージを格納し、Amazon ECSがコンテナの管理を担当する運用サービスという位置付けになります。
Amazon ECRの料金体系
Amazon ECRの料金は、プライベートおよびパブリックのリポジトリの保存データ、ならびにインターネットのデータ転送量で決まります。
無料枠が設定されており、最初の1年間は月当たり500MBのストレージがプライベートリポジトリ向けに無料で利用できます。パブリックリポジトリは、月当たり500GBのデータが新規・既存問わず無料で利用できます。
パブリックリポジトリからインターネットに転送する際も、月当たり5TBが無料で提供されます。
【参考】:Amazon Elastic Container Registry の料金
Amazon ECRの使い方
Amazon ECRを使うには、AWSアカウントにサインインして使用します。すでにAmazon ECSあるいはAmazon EKSを使用している場合は、すぐに利用可能です。作業は、管理ユーザにサインインして進めていきます。
【参考】:Amazon Elastic Container Registry の開始方法 【参考】:AWS Docs: Amazon Elastic Container Registry とは
Amazon ECRのコマンドライン使用
Amazon ECRを使うには、コマンドラインインターフェースのAWS CLIが必要です。コマンドラインでコマンドを用いて、Amazon ECRやAWSのタスクを実行します。AWS CLIは、LinuxやmacOS、Windows版が提供されます。
Linux版は、次のようにインストールします。
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Windows版は、次のようにダウンロード・インストールします。
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
インストール済みのユーザは、手順にしたがってバージョンアップグレードを行います。
【参考】:AWS Docs: AWS CLI での Amazon ECR の使用 【参考】:AWS Docs: AWS CLIの最新バージョンのインストールまたは更新
Dockerのインストール
Amazon ECRを使うには、Dockerが必要です。Docker Desktopは、Linux、macOS、WindowsがDockerでサポートされています。Docker Engineのインストールは、サポートされるLinuxプラットフォームに対して行います。
すでにAmazon EC2を使用中の場合は、Amazon Linux 2023 AMIを使用してインスタンスのインストールパッケージとパッケージキャッシュを更新し、Docker(Docker Community Edition)をインストールします。手順は次の通りです。
sudo yum update -y
sudo yum install docker
インストールが完了したら、Dockerサービスを開始しておきます。
【参考】:AWS Docs: AWS CLI での Amazon ECR の使用 【参考】:Docker Docs: Install Docker Engine
Dockerイメージを作成する
Dockerイメージを作成するには、Dockerfileと呼ばれるファイルを用意します。内容はテキストベースで、基本イメージと実行手順を記述します。Dockerfileの作成が完了したら、Dockerイメージを、”docker buid”コマンドで作成します。
作成されたDockerイメージは、”docker run”コマンドで、実行できます。
【参考】:AWS Docs: AWS CLI での Amazon ECR の使用 【参考】:Docker Docs: Dockerfile reference
Amazon ECRでDockerイメージを使用する
ここまでの作業で、AWS CLIのインストールとDockerのインストールからイメージ作成まで完了しています。
Amazon ECRでDockerイメージを使用するには、Dockerを認証する必要があります。認証するために、”get-login-password”コマンドを使用します。生成された認証トークンをDockerの”docker login”コマンドに渡します。具体的には、次のように使用します。
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
regionはリージョン、usernameはAWS、URIはAmazon ECRの認証されたレジストリを指定します。
【参考】:AWS Docs: AWS CLI での Amazon ECR の使用
Amazon ECRでイメージを使用する
Dockerイメージが準備できたら、Amazon ECRでイメージを使用します。最初にイメージを保存するためのリポジトリを次のように作成します。
aws ecr create-repository --repository-name img-repository --region region
repository-nameはリポジトリ名でここでは”img-repository”、regionはリージョンを指定します。タグをつけるには、”docker tag”で、”latest”などを付記し、リポジトリにイメージをプッシュします。
docker tag img-repository:latest \
aws_account_id.dkr.ecr.region.amazonaws.com/img-repository
docker push aws_account_id.dkr.ecr.region.amazonaws.com/img-repository
Amazon ECRからイメージをプルするには、Dockerはバージョン1.7以降が必要です。認証トークンが”docker login”で設定されており、リポジトリからプルするアクセス許可を得ておきます。プルの手順は次の通りです。
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/img-repository:latest
【参考】:AWS Docs: AWS CLI での Amazon ECR の使用
Amazon ECRの使い方はDockerに慣れることから始めよう
Amazon ECRは、Dockerなどのコンテナイメージを簡単にAWSで扱うためのサービスです。AWSでの統合運用に適しており、操作は簡単です。Dockerの操作が前提となりますので、あらかじめDockerに慣れておくと効率的なコンテナイメージ活用が可能となるでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから