この記事の目次
Amazon ECRは、AWSクラウドでコンテナイメージを共有するための大事なツールです!
私たちは、Amazonの代表的なクラウドサービスAWS(Amazon Web Service)の中で、インターネットを介した仮想のVPC(Virtual Private Cloud)環境を提供されています。
このクラウドの特性を生かして、自分が書いたコードが、AWSクラウド内やオンプレミス環境でも実行できれば、仕事の幅が大きく広がることになります。
自分のいる組織の壁を越えて、コンテナイメージを共有することで、クラウド上でコードを実行してくれるのが、Amazon ECR(Elastic Container Registry)です。
これから、Amazonの完全マネージド型コンテナレジストリである、Amazon ECRについてご紹介していきます。
AWSクラウド上で、自分のコードがどのようにして実行できるようになるのか?
具体的にAmazon ECRについてお話しするために、Amazon ECRを経由することによって、どのように自分が書いたコードがAWSクラウド上で実行されるようになるのか、その仕組みについてお話しします。
この仕組みが実現するためは、Amazon ECRによってコンテナが稼働できるようになることが重要なプロセスです。
ここでは、AWSクラウド上やオンプレミス環境で、自分のコードがどのように実行されるのかをお話しします。
Amazon ECRを経由したコード実行に関わる構成要素は?
ユーザーが書いたコードは、Amazon ECRがコンテナイメージとして引き出したコンテナを稼働し、AWS Lambdaを介してクラウド上やオンプレミス環境のAmazon ECS(Elastic Container Service)やAmazon EKS(Elastic Kubernetes Service)で実行されます。
こうした構成要素のうち、特に、AWS Lambda、Amazon ECSとAmazon EKSについてご紹介します。
AWS Lambda
AWS Lambdaによって、ユーザー自身がVPC環境にあるサーバーを設定したり運用管理したりすることなく、コードをアップロードするだけでコードが実行できます。
さらに、Docker CLIなどにより、Lambda関数を最大10GBまでコンテナイメージとしてパッケージ化およびデプロイできるようになり、AWS LambdaからDockerにコンテナイメージをアップロードするシステムの構築が可能になりました。
Amazon ECS
Amazon ECSは、Dockerコンテナに対応した非常にスケーラブルで高性能なコンテナ管理サービスで、Amazon EC2(Elastic Container Cloud)インスタンスのマネージドクラスター上でアプリケーションを簡単に実行できるものです。
Amazon ECSの特徴は、簡単なAPI操作によって高度なセキュリティを維持できること、柔軟にクラスター上のコンテナの配置をスケジューリングできることが挙げられます。
さらに、スケジューリングにあたっては、独自のスケジューラまたは第三者機関によるスケジューラを統合することも可能です。
Amazon EKS
Amazon EKSは、AWSクラウド上とオンプレミス環境で、コンテナ化されたアプリケーションをデプロイおよび管理する機能を持つKubernetesアプリケーションをコントロールできる、マネージドKubernetesサービスです。
Amazon EKSによって、すべての環境で簡単に操作を標準化できるようになることから、標準的なKubernetesアプリケーションならどれでもEKSに簡単な移行が可能になります。
Amazon ECRを経由したコード実行の仕組みは?
ユーザーが書いたコードが、実際にAWSクラウド上やオンプレミス環境で実行されるために、Amazon ECRが果たす役割は、コンテナイメージをコンテナアプリケーションに効率よくデプロイすることです。
まず、ユーザーが書いたコードが、Dockerイメージとしてパッケージされ、Amazon ECRに送られます。
Amazon ECRでは、Dockerイメージが圧縮されて暗号化も進められるとともに、バージョンや処理のためのタグ付けをはじめとして、Dockerイメージのライフサイクルに従ってアクセスが管理されます。
Dockerイメージが引き出されたあと、あらゆる場所にあるコンテナが稼働したことをトリガーとして、AWS Lambdaから、AWSクラウド上のAmazon ECSやAmazon EKS、またはオンプレミス環境に情報が伝わり、ユーザーのリクエストが実現します。
Amazon ECRは、なぜすべての環境で、コンテナアプリケーションを確実にデプロイできるのか?
これまで、ユーザーが書いたコードが、エッジで実行されるまでの一連の流れをお話ししてきました。
ここからは、コンテナアプリケーションを確実にデプロイするAmazon ECRの詳細と、導入するメリットについてご紹介します。
コンテナアプリケーションを確実にデプロイするAmazon ECRとは?
完全マネージド型コンテナレジストリであるAmazon ECRは、Amazon ECS、Amazon EKSおよびAWS Lambdaと連携して、開発から本稼働までのプロセスを簡素化します。
コンテナアプリケーションを確実にデプロイするために、Amazon ECRは、AWS Fargateを経由するか、独自のコンテナ環境を利用することも可能です。
また、AWS Identity and Access Management(IAM)に統合すれば、各リポジトリをリソースのレベルで制御することも可能になります。
ここで、コンテナを実行するためのエンジンであるAWS Fargateと、アクセス権限を制御するAWS IAMについて補足していきます。
AWS Fargate
AWS Fargateは、Amazon ECSとAmazon EKSでコンテナを実行するサーバーレスコンピューティングエンジンです。
実行するタスクとポッドで、それぞれ独立した環境が使われるため、アプリケーションの設計段階からセキュリティが保たれることになります。
AWS IAM
AWS IAMでは、暗号化によるアクセスキー、パスワードなど、個別にセキュリティが設定されている認証情報によって、厳密なアクセス権限に基づくユーザーグループを作成し、AWSへのアクセスが安全に管理されます。
また、AWS IAMのユーザーとロールによって、コンテナイメージへのアクセス権限が管理され、アクセスを制御できるようにポリシーが設定されるため、EC2インスタンスで認証情報を直接管理することはありません。
Amazon ECRを導入するメリットは?
Amazon ECRは、AWS IAMで安全に守られたフルマネージドレジストリであり、Amazon ECS、Amazon EKSおよびAWS Lambdaとの連携を得ることにより、安全な高可用性アクセスを実現することで、コンテナデプロイのプロセスを簡素化できます。
Amazon ECRを使うことで、安全な高可用性アクセスを実現できるのは、コンテナイメージがHTTPSによって転送され、Amazon S3(Simple Storage Service)に保管されるときに暗号化されるためです。
また、コンテナアプリケーションのレプリカを複数のAWSリージョンで自動的に作成して、ダウンロード時間を短縮することによって、可用性を向上させることができます。
このほか、コスト面では、リポジトリに保存するデータ量とインターネットに転送するデータ量に対してだけ課金が発生するため、コスト低減に繋がります。
Amazon ECRを使えば、AWSクラウド上で自分のコードを自由に実行できます!
私たちは、AWSの中で、インターネットを介した仮想のVPC環境を提供されています。
Amazon ECRは、クラウドの特性を生かして、ユーザー自身が書いたコードを、AWSクラウド上やオンプレミス環境で実行してくれます。
Amazon ECRは、自分の組織の垣根を越えて、仕事の幅を大きく広げてくれる確かなツールです!