概要
ECS の Fargate 起動タイプで Docker 公式の WordPress のコンテナを動かしてみた。
ほぼ EC2 起動タイプについての記事 の Fargate 版。
Fargate とは
Docker コンテナを動かすクラスタとして、自前で管理する EC2 ではなく、AWS 管理のリソースを使用する方式。 要するに、ECS が純粋にコンテナをホスティングするためのプラットフォームとなる。
出典: Introducing AWS Fargate – Run Containers without Managing Infrastructure | AWS News Blog
なにが嬉しいのかというと、こちらに記載したとおり、コンテナのホストとなる EC2 インスタンス (の脆弱性対応やスケーリングなど) を自分で管理するコストが不要となるという点がデカイ。
手順
タスク定義
- Fargate を選択
- タスクから AWS リソースをいじる場合は、適宜タスクロールに IAM ロールを指定
- タスク用のメモリ、vCPU 割当量の指定が必須
- ボリュームを定義できるものの、仕様上、ホストマシンの指定ディレクトリをタスクにマウントすることはできない
Fargate 起動タイプを使用している場合、host および sourcePath パラメーターはサポートされません。
タスク定義パラメーター
WordPress コンテナの起動設定。 コンテナ定義は、 EC2 起動タイプのそれと同様に下記を設定。
- Docker Hub の説明に従って DB 周りの環境変数定義
- 80 番ポートのマッピング設定
- CloudWatch ログ出力設定
Data Volume コンテナは意味がないので、今回は設けない。
クラスター作成
- EC2 を作成しないので「ネットワーキングのみ」を選択
- EC2 起動タイプと比較すると、EC2 インスタンス周りの設定がないのですごくあっさり
サービス定義
- EC2 起動タイプの場合と大差ない
- コンテナの ENI へのパブリック IP 割当てが可能だったので、ELB は設定しなくても、とりあえず外部からアクセスできた
- EIP は設定できないので運用時は ELB など必須
ここまで行うと、ぬるっと WordPress コンテナが作成される。 コンテナの Public IP へアクセスすると WordPress 初期インストール画面が表示されるはず。
所感
- EC2 インスタンスを意識せずにコンテナを動かせるのはインパクトがデカい
- ただの IaaS からコンテナ用 PaaS へのパラダイムシフトみがある
- いろいろ制限があってできないことが多いので要注意
- AWS 管理のホストマシンを使っている都合上? ストレージを永続化できないので、真面目にステートレスなコンテナを実装しないと使えない
各 Fargate タスクはプロビジョニング時に次のストレージを受け取ります。タスクストレージは一時的なものです。Fargate タスクが停止すると、ストレージは削除されます。
Amazon ECS の AWS Fargate