
AWS入門 初心者が覚えておくべきAWSの基本
Amazon ECS(以下ECSとします。)はDockerコンテナを簡単に実行、停止、管理できるサービスです。
ECSを利用することで、アプリケーションを簡単に実行することが可能となります。
当コラムではECSの簡単な説明と、実際の実践例を紹介します。
こちらのコラム「スケーラブルで高速なコンテナ管理サービス「Amazon ECS」の主な機能と使い方」ではECSの主な機能、メリット、料金等を紹介しています。是非ご確認ください。
ECSとはDockerコンテナ(※)サービスです。
ECSを使用すると、クラスターインフラストラクチャのインストール、運用、スケールから解放されます。さらに、APIを使用することで、コンテナ対応アプリケーションの起動と終了、クラスターの完了状態のクエリ、セキュリティグループ、Elastic Load Balancing、Elastic Block Store、IAMロールなどへのアクセスを実行することができます。
※Dockerコンテナとは?
コンテナ技術の一つでありデファクトスタンダードとなっています。
Docker社が開発しオープンソースソフトウェアとして公開されています。
アプリケーションの動作に必要な環境を1つのイメージにまとめ、そのイメージを使用し、さまざまな環境でアプリケーション実行環境を構築・運用できます。
アプリケーション本体・ライブラリ・設定ファイル等をまとめたコンテナという仮想環境を作成し、コンテナエンジン上で動作するコンテナ技術です。
コンテナの仕組みは以下の図の通りです。
ホストOS上にコンテナのDockerなどの管理ソフトウェアがあります。
管理ソフトウェアはコンテナエンジンと呼ばれます。
コンテナエンジン上で各コンテナが動作する形となっています。
ひとつのOS上にコンテナは複数稼働することが可能であり、コンテナ毎にアプリケーションを実行できることから利用するユーザやサービスの観点からコンテナは独立した個別のサーバーのように使用できます。
コンテナのメリットは以下の通りです。
必要最小限のリソースのみ使用するため、負荷が少なく高速な処理が可能です。
またコマンドを使用し、コンテナ環境の作成や破棄を行えます。
コンテナはアプリケーションを実行するためのリソースをパッケージ化が可能であり、実行する場所はベアメタルサーバー、仮想サーバー、パブリッククラウドのインスタンス上などに簡単にコピー可能なため場所を問わず迅速にアプリケーションを起動できます。
今回はサーバーレスのFargate起動タイプモデルを利用しnginxのコンテナを作成します。
AWSマネジメントコンソールのすべてのサービスからコンテナ「Elastic Container Service」をクリックします。
左側のメニュー欄の「クラスター」をクリックします。
ECS クラスターの作成手順として「クラスターの作成」と「今すぐ始める」があります。
今回はnginxのコンテナイメージが用意されている「今すぐ始める」をクリックします。
ステップ1ではコンテナとタスクの設定を行えます。
コンテナ定義ではコンテナのイメージ「nginx」を選択します。
ステップ1コンテナとタスクのページ下部のタスクの定義では編集せずデフォルトで使用するため「次」のボタンをクリックします。
ステップ2ではセキュリティグループの設定やロードバランサーの設定等を行います。
今回はnginxの動作確認が目的のため、デフォルトのセキュリティグループは自動的に新規作成、ロードバランサーはなしとします。「次」へのボタンをクリックします。
ステップ3ではクラスターの設定を行います。今回は変更せずデフォルトのまま作成します。
「次」へのボタンをクリックします。
ステップ4では作成するクラスターの設定確認となります。
設定が正しいことを確認し、「作成」ボタンをクリックします。
以下の起動ステータス画面に切り替わります。
説明に「これには最大で10分かかる場合があります。」と記載されていますが今回は1~2分で完了しました。
作成したクラスター「default」でnginxコンテナを確認します。
「タスク」タブをクリックします。
タスク名をクリックします。
nginxへアクセスするため、「詳細」タブのネットワークに記載されているパブリックIPをコピーします。
ブラウザのURL欄にパブリックIPをペーストしアクセスします。
以下の画面の通り「Welcome to nginx!」と表示されnginxが正常に動作していることが確認できました。
今回nginxを動作させたようにECSではコンテナを使用して、アプリケーションを簡単に実行することができます。コスト最適化の環境のもとでコンテナに関して幅広いスケーリングとインフラストラクチャー管理ができ、起動タイプモデルの選択によりサーバーレスで使用可能となりますので、構築や運用の負荷を削減できます。