ECS をちゃんと触ったことがないので、マネジメントコンソールと噂の AWS Copilot 試してみます。
Copilot を検索すると、副操縦士とでてきますね。
この意味からとったのかな。
今からでも遅くない。ECSで始めるコンテナ運用 #devio2020
コンテナの基本の説明から。
タスク定義、タスク、サービスが図示されて概念がわかりやすい。
動画の説明通り、マネジメントコンソールでポチポチするだけで、ECS Fargate を起動することができました。
ECS って、ALB の準備が前提と思ってましたが、Fargate だと ALB を経由しなくてもアクセスできるんですね。
EC2 タイプだけが ALB 必須なんだろうか...それとももともと勘違いしてて不要だったのか?
AWS Copilot
本日発表されて話題沸騰の AWS Copilot
。
トリさん翻訳の公式とハマコーさんのブログをそのまま試してみました。
初回デプロイに 10 分ぐらいかかるけど、 VPC + ALB + ECS Fargate
を用いた環境が簡単に作成されました。
デプロイに時間がかかっているのは、CloudFormation のログを見る限り、作成するリソースが多いうえに ALB の作成がそもそも重いのが原因でしょうか。
Serverless Framework
や AWS SAM
を使って、簡単に API を作れたのと同じ感覚でインフラをあまり意識せずに作成できてしまいました。
API Gateway + Lambda
をよくわからずに作って苦しんでいた時に sls
コマンドでサクッとできてしまったのと同じ感動です。
Copilot
には、サービスタイプが2種類準備されてます。
次にサービスのタイプを聞かれます。2つ選択肢がありますが、大きくは以下の違いです。
- Load Balanced Web Service:インターネットフェーシングなパブリックサービス
- Backend Service:プライベートなバックエンドサービス
(ハマコーさんブログより引用)
ハマコーさんブログ手順で Load Balanced Web Service
を試したので、 copilot app delete
で一旦作成した環境を消してから Backend Service
も試してみます。
コンソールログでの違いは、最後のデプロイ部分。
$ ✔ Deployed copilot-backend-svc, its service discovery endpoint is copilot-backend-svc.exsample-copilot-app.local:80.
ローカルに作成されたログがでました。
ここにアクセスするには、VPC 内に EC2 とか立てないと試すこともできないですね...
copilot
利用時に、EC2 タイプを利用した ECS の作成は見当たらなかったのですが、できるんだろうか?
追記
ブログありがとうございます!
— ポジティブな Tori (@toricls) July 10, 2020
現在は Fargate のみのサポートです〜 > Copilot
やっぱり、Fargate のみですね!
トリさんありがとうございました。
所感
ECR 使わないケースで、公開されたコンテナを利用するのであれば、マネジメントコンソールで Fargate を利用することにより、比較的簡単に作成できます。
一方、自作の Dockerfile を利用したい場合は、 ECR にあげる手間暇が通常はかかりますが、 copilot
を利用することによりその辺りも含めてとても簡単にデプロイができます。
手元の Docker を AWS でも手軽に利用したいときには、とても役に立ちそうです!