【初心者向け】Amazon ECSでApacheを起動したい~新コンソール版~
こんにちは、つくぼし(tsukuboshi0755)です!
最近コンテナについて詳しくなりたいと思い、ちょこちょこECSを触っています。
今回は新ECSコンソールを使用してECSを作成し、Apacheコンテナの最小環境を構築してみます!
またDocker Hubの代わりに、Amazon ECR Publicを利用してコンテナイメージを取得してみます。
なお旧ECSコンソール版でのApacheコンテナ最小環境の構築方法については、以下の記事をご参照ください。
構成図
旧ECSコンソール版の記事と同じ、ApacheのFargateコンテナ構成を構築します。
ただしコンテナイメージのみ、Docker HubではなくAmazon ECR Publicを用いて取得します。
なぜDocker HubではなくECR Publicを使用するのか?
ここで、パブリックコンテナレジストリとしてDocker Hubを利用しない理由ですが、Docker Hubの無料プランでは以下の通り、特定時間あたりのイメージPull回数制限に制限が生じるためです。
- 匿名ユーザー:100 Pull / 6 時間当たり
- 無料(Personal)ユーザー:200 Pull / 6時間当たり
- Pro, Team, Business:50,000 Pull / 24時間当たり
今回のようにApacheコンテナ最小構成を作るだけであれば、引っかかる事はないと思います。
しかし例えばECSとCodeBuildを連携しようとすると、以下の記事のようなToo Many Requestsエラーが発生する事があります。
(ECS本として有名なAWSコンテナ設計・構築[本格]入門のハンズオンでも、同様の事象が解説されています)
上記の問題は、Docker Hubの代わりに、以下のアップデート記事にもあるAmazon ECR PublicのDockerオフィシャルイメージを使用する事で、解決できるようになっています!
Docker HubのPull回数制限に悩んでいるという方は、Amazon ECR Publicを利用を検討してみるのも良さそうです。
今回はAmazon ECR Publicのオフィシャルイメージでも、ECS上のApacheが問題なく動作するかも合わせて検証してみます!
ECSでの動作検証
以下、新コンソールでのApacheコンテナ最小環境を構築してみます。
VPC/SG作成
初めに、ECSクラスターで使用するVPCを事前に作成しておきます。
なお今回は、パブリックサブネット1つのみの最小構成のため、VPC作成ウィザードで以下の通り設定します。
また、ECSサービスで使用するセキュリティグループも事前に作成しておきます。
今回はApacheコンテナに接続するため、インバウンドルールとしてソース0.0.0.0/0
、ポート80番
を追加しておきます。
ECR Publicでのイメージ検索
次に、以下のECR Public GalleryでApacheコンテナイメージを検索し、イメージURLを確認しておきします。
検索欄でhttpd
と入力すると現れる、ApacheのDockerオフィシャルイメージをクリックします。
Image Tags
タブにて、最新(Latest)のImage URLをメモしておきます。
タスク定義作成
次に、新ECSコンソールを使用してタスク定義を作成します。
ナビゲーションペインのタスク定義
より、新しいタスク定義の作成
をクリックします。
タスク定義ファミリー、及びコンテナ名に任意の名前を入力します。
イメージURLには、先ほどECR Publicでのイメージ検索でメモしたImage URLを入力します。
さらにポートマッピングのポート番号が80
である事を確認します。
CPU及びメモリは、今回は最小としたいため、それぞれ.25vCPU
、.5GB
を指定します。
他の設定は、今回は変更の必要はありません。
確認画面にて設定を確認し、問題なければ作成
ボタンをクリックします。
以下の通り、新しいタスク定義が作成されている事を確認します。
クラスター作成
次に、新ECSコンソールを使用してクラスターをを作成します。
ナビゲーションペインのクラスターの
より、クラスターの作成
をクリックします。
クラスター名に任意の名前を入力します。
VPC及びサブネットでは、事前に作成したVPC及びサブネットを選択します。
インフラストラクチャでは、AWS Fargate
以外は何も選択されていない事を確認します。
設定内容に問題がなければ、作成
ボタンをクリックします。
サービス作成
次に、新ECSコンソールを使用してサービスを作成します。
ナビゲーションペインのクラスター
より、先ほど作成した新しいクラスターをクリックします。
サービス
タブにて、デプロイ
ボタンをクリックします。
コンピューティングオプションは、今回は起動タイプ
を選択します。
起動タイプがFARGATE
、プラットフォームのバージョンがLATEST
(現時点の最新バージョンは1.4.0)である事を確認します。
アプリケーションタイプは、今回はサービス
を選択します。
ファミリーに先ほど作成したタスク定義を選択し、リビジョンを最新
で指定します。
サービス名に任意の名前を入力します。
必要なタスクは、今回は1
とします。
VPC、サブネット及びセキュリティグループには、先ほど作成したリソースを選択します。
今回はALBを介さずコンテナに直接アクセスするため、パブリックIPがオン
になっている事を確認します。
設定内容に問題がなければ、デプロイ
ボタンをクリックします。
Apacheアクセス確認
最後に、Apacheコンテナへの接続を確認します。
タスク
タブにて、先ほど作成した新しいサービスをクリックします。
設定
タブにて、パブリックIPを確認します。
ブラウザで先ほど確認したパブリックIPにアクセスし、It works!という表示が出れば、正常にApacheコンテナに接続できています!
最後に
今回は新ECSコンソールを使用して、Aoacheコンテナ最小構成を作成してみました!
旧ECSコンソールと比較すると、ところどころ設定の仕方が変わっている所があるなあと感じました。
もしまだ触った事がない方がいらっしゃれば、ぜひ新ECSコンソールを触ってみてはいかがでしょうか。
以上、つくぼし(tsukuboshi0755)でした!