はじめに
ECS の環境構築を非常に簡単にするツール「AWS Copilot」が少し話題になっています。 今まで ECS の環境構築がかなり面倒だったのが、びっくりするほど簡単になるようです。
こういったツールでは様々なリソースが勝手に作られる分、それらの設定をどこまでカスタマイズできるのかが気になるところだと思います。 そこで、ECS を使う上でほしくなりそうな機能について、Copilot が現時点でどこまで対応しているのかを調べました。
※ この記事は 2020/7/12 時点、Copilot のバージョン 0.1.0 での内容になります。
※ 以下の内容は実際に実行して試してみたわけではなく、ドキュメントやソースコード・GitHub の Issue を見て判断したものになります。
調査内容
AWS Copilot のご紹介 や Getting Started、Manifests に記述されている機能はすぐに目に入ると思うので、これらには書かれていないものの、個人的に確実にほしくなるであろう以下の機能を調査対象としました。
- カスタムドメインの指定
- タスクの IAM ポリシーの設定
- 既存の VPC を使う設定
- タスク定義のカスタマイズ
- AutoScaling の設定
調査結果
サマリ
調査結果のサマリは以下の通りです。
- ドキュメントにあった機能 … カスタムドメインの指定、タスクの IAM ポリシーの変更
- Issue にあがっていた未実装の機能 … 既存の VPC を使う設定、タスク定義のカスタマイズ
- Issue にもドキュメントにもない機能 … AutoScaling の設定
順に調べた内容をまとめます。
ドキュメントにあった機能
カスタムドメインの指定
ロードバランサにカスタムドメインを指定し、かつ ACM で証明書を作成して HTTPS 化したいという需要があると思います。
カスタムドメインの指定については、Applications のページに設定方法が書かれていました。 こちら のコードを見る限り、HTTPS 化も可能なように見えます。
タスクの IAM ポリシーの変更
Additional AWS Resources によると、Serverless Framework などと同じように、CloudFormation のテンプレートの記述により、任意の AWS リソースを作成する機能があるようです。
このテンプレートで作成したリソース (DynamoDB や S3) にアクセスできるよう、タスクの IAM ポリシーを変更する方法もここに書かれていました。
Issue にあがっていた未実装の機能
- 既存の VPC を使うことは可能か
- タスク定義のパラメータはどこまで変更できるか
- AutoScaling は設定可能か
既存の VPC、セキュリティグループ
既存の VPC やセキュリティグループを割り当てる機能は現時点では未実装です。
[Resources] Environment Resource Import #740 という Issue があがっています。
こちら のコードを見た限りでは、VPC の CIDR ブロックがハードコーディングされているため、既存の VPC にある RDS に VPC ピアリングを利用して接続するといったこともできないかもしれません。
タスク定義の詳細設定
タスク定義の設定変更も、一部以外は対応していないようです。
[Manifest] Allow TaskDefinition overrides in the Manifest #948 という Issue があがっています。
Issue にもドキュメントにもない機能
AutoScaling
Copilot の機能としては提供されていないようですが、設定すること自体は可能と思われます。 というのも、ECS の AutoScaling はすでに存在するサービスに対して設定するものなので、Copilot でサービスを作成した上で、CloudFormation などで AutoScaling を設定することが可能と思われます。
ただし、Copilot の Additional AWS Resources の機能で設定可能かは分かりません。 この機能で実現可能かは、実際に試してみるのが確実だと思います。
AutoScaling 対応は検索した限りでは Issue としてあがっていませんでしたが、個人的には manifest で簡単に設定できるようになると嬉しいと思いました。
まとめ
バージョン 0.1.0 なので当たり前ですが、まだ不足している機能がかなり多いため、すぐに実運用するのは難しそうです。
とはいえ、使い勝手は非常に良さそうなので、将来的にはかなり便利になりそうだなと感じました。
まだ機能が少ない分ドキュメントや Issue も小さいので、一通り目を通してみるだけでも面白いかもしれません。 CloudFormation や Terraform などのモジュールを作る際の設計の参考にもなると思います。
参考
Web