【AWS】Amazon Elastic Container Registry(ECR)について解説します。
近年、ビジネスを成功させるには、ソフトウェアやサービスをいかにスピーディーに開発するか、どのように効率良くシステムを運用するかが重要となってきました。そのような開発の高速化とサービスの進化を実現するためには、短期間で要件定義からリリースまでを反復させるシステムの導入や、サービスの停止時間をできる限り削減しながら、継続的にサービスを提供、運用することが求められます。そのような取り組みを実現するためのテクノロジーとして、「コンテナ技術」やコンテナ実行環境「Docker」が人気となっています。AWSではAmazon Elastic Container Registry(ECR)というコンテナレジストリサービスがあります。ここではAmazon ECRについて紹介していきます。
■Amazon Elastic Container Registry(ECR)
正式名称はAmazon Elastic Container Registryで、フルマネージドなDockerコンテナレジストリサービスです。Dockerコンテナイメージの保存、管理、デプロイができます。
AWS公式では、
Amazon Elastic Container Registry(ECR)は、完全マネージド型のDockerコンテナレジストリです。このレジストリを使うと、開発者はDockerコンテナイメージを簡単に保存、管理、デプロイできます。Amazon ECRは、Amazon Elastic Container Service(ECS)に統合されているため、開発から本稼働までのワークフローを簡略化できます。Amazon ECRを使用すると、自前のコンテナリポジトリの運用や、基盤となるインフラストラクチャのスケーリングの検討は不要になります。Amazon ECRは非常に可用性が高くスケーラブルなアーキテクチャでイメージをホストするため、コンテナをアプリケーションに確実にデプロイすることが可能です。AWS Identity and Access Management(IAM)に統合すると、各リポジトリをリソースレベルで制御できます。Amazon ECRに前払い料金などの義務はありません。リポジトリに保存するデータとインターネットに転送するデータの量に対してのみ、料金をお支払いいただきます。
と紹介されています。
- ・Docker:Linux上で独立した別のLinuxシステムを起動するコンテナ型仮想化を利用するための管理ソフトウェアの一つ。Docker社(旧dotCloud社)が開発し、オープンソースソフトウェアとして公開されている。
- ・Amazon Elastic Container Service(ECS):クラスターでDockerコンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速なコンテナ管理サービス。
- ・AWS Identity and Access Management(IAM):AWSリソースへのアクセスを安全に管理するためのウェブサービス。
■Amazon Elastic Container Registryのメリット
- 【完全マネージド型】
- Amazon ECRを使用すると、コンテナレジストリを動かすためのインフラストラクチャの運用やスケーリングが不要になります。インストールや管理が必要なソフトウェアなどの、スケールが必要なインフラストラクチャはなく、コンテナイメージをAmazon ECRにプッシュし、デプロイが必要なときにコンテナ管理ツールを使用してそのイメージをプルするだけの操作で完了することができます。
- 【高可用性】
- Amazon ECRは非常にスケーラブルで、冗長性と耐久性に優れたアーキテクチャです。コンテナイメージは可用性が高くてアクセスしやすいため、アプリケーションに新しいコンテナを確実にデプロイできます。
- 【セキュア】
- Amazon ECRでは、コンテナイメージがHTTPS経由で転送され、保管時にはイメージが自動的に暗号化されます。AWS IAMのユーザーとロールを使用して、イメージへのアクセス権限の管理やアクセスの制御を行えるようポリシーを設定できるため、認証情報をEC2インスタンスで直接管理する必要はありません。
- 【シンプルなワークフロー】
- Amazon ECRは、Amazon ECSとDocker CLIに統合されているため、開発から本稼働までのワークフローを簡略化できます。Docker CLIを使用して開発マシンからコンテナイメージを簡単にAmazon ECRにプッシュでき、Amazon ECSはそのコンテナイメージを本番用デプロイにプルできます。
- ・Docker CLI:Dockerコマンドラインインターフェイス。
■Amazon Elastic Container Registryの特徴
- ▼Amazon Elastic Container Serviceの統合
- Amazon ECRはAmazon ECSと統合されているため、Amazon ECSで実行中のアプリケーションのコンテナイメージを容易に保存、実行、管理できます。タスク定義でAmazon ECRリポジトリを指定するだけで、Amazon ECSがアプリケーションに最適なイメージを取得します。
- ▼Dockerのサポート
- Amazon ECRではDocker Registry HTTP API V2がサポートされているので、Docker CLIコマンド(push、pull、list、tagなど)や、またはお好みのDockerツールを使用してAmazon ECRとやり取りができ、既存の開発ワークフローを維持できます。Amazon ECRには、クラウド、オンプレミス、ローカルマシンなど、どのようなDocker環境からでも容易にアクセスできます。
- ・Docker Registry HTTP API V2:APIを利用してDockerのイメージの情報を収集することが可能。エントリーポイントによっては認証をする必要がある。
- ・API(Application Programming Interface):あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。
- ▼AWS Marketplace
- Amazon ECRは、作成したコンテナとAWS Marketplaceで購入したコンテナソフトウェアの両方を保存します。Containers向けAWS Marketplaceは、コンテナアプリケーションを管理、分析、保護すSaaS製品だけでなく、高性能コンピューティング、セキュリティ、開発ツール向けに検証されたコンテナソフトウェアも提供します。
- ・AWS Marketplace:ソリューションを構築してビジネスを運営するために必要なサードパーティーのソフトウェア、データ、およびサービスを簡単に検索、購入、デプロイ、管理するために使用できる厳選されたデジタルカタログ。
- ▼高可用性と耐久性
- Amazon ECRでは、コンテナイメージはAmazon S3に保存されます。データは冗長化されて複数の施設に保存され、各施設内でも複数のデバイスに保存されます。
- ・Amazon S3:データの記録や読み書きが可能なオンラインストレージサービス。いわゆるオブジェクトストレージをクラウド方式で遠隔から利用できる。
- ▼チームコラボレーション
- Amazon ECRは、名前空間を使用してレジストリ内のリポジトリの定義と整理を行う機能をサポートしています。これにより、チームの既存のワークフローに基づいてリポジトリを整理できるようになります。リポジトリで他のユーザーが実行できるAPIアクションの種類(作成、リスト、説明、削除、取得など)について、リソースレベルのポリシーを使用して設定できるため、さまざまなユーザーおよびAWSアカウントに対するリポジトリの共有が簡単にできます。
- ▼アクセスコントロール
- Amazon ECRは、AWS IAMを使用して、コンテナイメージにアクセスできるユーザーや他のアクセス元(EC2 インスタンスなど)を管理および監視します。AWS IAMでは、ポリシーを定義して、同じAWSアカウントや他のアカウントのユーザーからコンテナイメージへのアクセスを許可できます。ユーザーやロールごとに許可(プッシュ、プル、管理者権限のフルアクセスなど)を指定することにより、これらのポリシーをさらに絞り込むこともできます。
- ▼暗号化
- Amazon ECRとのコンテナイメージの送受信は、HTTPS経由で行えます。また、イメージはAmazon S3のサーバー側暗号化を使用して、保管時に自動的に暗号化されます。
- ▼サードパーティとの統合
- Amazon ECRはサードパーティの開発者ツールと統合されています。Amazon ECRを自社のCI/CDプロセスに統合して、既存の開発ワークフローをそのまま維持できます。
■Amazon Elastic Container Registryのコンポーネント
Amazon ECRには、次のコンポーネントが含まれています。
- ▽レジストリ
- Amazon ECRレジストリは、AWSアカウントごとに用意されています。レジストリ内にイメージリポジトリを作成して、これらのリポジトリにイメージを保存できます。
- ▽認証トークン
- Dockerクライアントがイメージをプッシュおよびプルするには、AWSユーザーとしてAmazon ECRレジストリに対して認証する必要があります。
- ▽リポジトリ
- Amazon ECRイメージリポジトリには、DockerまたはOpen Container Initiative(OCI)イメージが含まれます。
- Open Container Initiative(OCI):OSレベル仮想化(英語版)の一種である「コンテナ」のフォーマット・ランタイムの業界標準策定を目的として設立されたイニシアチブである。Linux Foundationプロジェクトの1つ。
- ▽リポジトリポリシー
- リポジトリポリシーを使用して、リポジトリとリポジトリ内のイメージへのアクセス権を制御できます。
- ▽イメージ
- リポジトリには、コンテナイメージをプッシュおよびプルできます。開発システムでこれらのイメージをローカルに使用したり、Amazon ECSタスク定義とAmazon EKSポッド仕様で使用したりすることができます。
- Amazon EKS(Elastic Kubernetes Service):独自のKubernetesコントロールプレーンまたはノードをインストール、操作、維持することなく、AWSでKubernetesを簡単に実行できるようにするマネージド型サービス。
- Kubernetes:コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステム。
■まとめ
インフラにAWSを使っているのなら、Amazon ECRを使用すれば、他のAWSサービスとの統合が簡単になり、ひとつのサービスでまとめて管理できるので利便性が高まるでしょう。AWSでは他にも類似サービスがあるため、プロジェクトに最適な構成を考えて、この機会に導入検討はいかがでしょうか。