AWS

AWS ECSでECRのリポジトリ使用方法

・ECRのリポジトリをECSで使う方法
・ECRはDockerイメージをプッシュした資材

ECRに管理しているDockerイメージをECSで起動する方法を記載しています。
なお今回利用するDockerイメージは学習で利用したnginxのベースイメージを利用しています。

ECRにDockerイメージをプッシュする方法は下記を参考ください。

ざっくりとした設定順序

今回紹介する順序は、タスク定義>クラスター作成の順序です。

クラスター作成からでも問題無いですが、「クラスター作成」・「タスク定義」・「クラスターに戻りタスクを紐付ける」という3つの工程が予想されるので「タスク定義」から行えば楽なのかなと思いました。

AWS ECSに移動

まずはECSに移動しないと話になりません。

AWSログイン後、下記画像のように「ecs」と検索してECSに移動します。 

ECS

ECSのタスク作成

ECSに移動したら、「タスク定義」を選択します。
そのあと、「新しいタスク定義の作成」を選択します。

ECS.タスク定義

起動タイプ

FARGATE、EC2、EXTERNALの3つ候補ありますがFARGATEを選択します。

ECS.起動タイプ

定義入力

コンテナ定義以外の箇所はデフォルトもしくは最小構成を選択します。
タスク定義名は任意の値を入力します。

ECS.定義1

コンテナ定義

コンテナ定義の箇所で、ECRにプッシュしたDockerイメージを選択します。

「コンテナの追加」を選択します。

コンテナ名は任意の値を入力します。
イメージの箇所は、利用するDockerイメージのイメージ名をペーストします。
場所は、ECR>リポジトリ>作成したリポジトリ>イメージの詳細>イメージのURI です。

ECRイメージ名

それ以外の箇所は必要に応じて設定します。

設定後、最下部にある追加ボタンを選択してタスクを作成します。

ECSのクラスター作成

次はクラスターの作成です。
下記画像のようにECSのクラスターを選択して、「クラスターの作成」を選択します。

クラスターテンプレートの選択

クラスターテンプレートを選択します。
先程のタスクではFARGATEを選択しましたので、ここでは「ネットワーキングのみ」を選択します。

ECS.クラスターテンプレート

クラスターの設定

クラスター名は任意の値を入力します。
そのほかの箇所は必要に応じて入力します。

ECS.クラスターの設定

作成・クラスターの表示

上記入力後、作成ボタンを選択してクラスターを作成します。
作成後の画面に「クラスターを表示」ボタンを選択して作成したクラスターに移動します。

クラスターにタスクを紐付ける

ここまででタスクとクラスターを作成しました。
あとはそれらを紐付ければ完了です。

新しいタスクの実行

クラスター内に移動して、タスクタブを選択します。
タスクタブにある「新しいタスクの実行」を選択します。

タスクの実行

起動タイプとタスク定義を先程作成したタスクを選択します。
起動タイプはFARGATE、タスク定義は作成したタスク定義名を選択します。

その他必須箇所のVPC、サブネットは作成する要件に沿ったものを設定します。
今回は学習用なので一番上にあったものを選択しました。

ECS.タスクの実行

その他任意の箇所は必要に応じてします。
パブリックIP自動付与については、確認だけでしたら「ENABLED」に変更したほうが良いです。

入力完了後、「タスクの実行」ボタンを選択します。
タスクの実行後、クラスターのタスクタブの中にタスクが追加されます。

起動したクラスターの確認

上記の設定でうまくいっていれば、タスクで設定したコンテナが起動されています。

今回はnginxを動かすだけのコンテナですが、本当に動いているか確認したいと思います。

パブリックIP確認

下記画像にある、「タスク」箇所のリンクを選択します。

移動して、詳細タブの下部にある「パブリックIP」が表示されていることを確認します。

表示されているパブリックIPをURLに貼り付けると、Dockerで設定したベースイメージ、nginxが表示されます。

最後に

ここまでがECSの初歩的な設定の紹介となります。

ELBやらEC2とかの設定もあると思いますが、ここまでの私のイメージだとDocker-Composeに近い印象です。

JenkinsなどのCI/CDと組み合わせるとコンテナのデプロイや再定義も軽くできそうな印象でした。