omuronの備忘録

個人的な備忘録

「今からでも遅くない。ECSで始めるコンテナ運用 #devio2020 」と共に AWS Copilot を試してみる

ECS をちゃんと触ったことがないので、マネジメントコンソールと噂の AWS Copilot 試してみます。
Copilot を検索すると、副操縦士とでてきますね。 この意味からとったのかな。

今からでも遅くない。ECSで始めるコンテナ運用 #devio2020

www.youtube.com

コンテナの基本の説明から。
タスク定義、タスク、サービスが図示されて概念がわかりやすい。

動画の説明通り、マネジメントコンソールでポチポチするだけで、ECS Fargate を起動することができました。
ECS って、ALB の準備が前提と思ってましたが、Fargate だと ALB を経由しなくてもアクセスできるんですね。
EC2 タイプだけが ALB 必須なんだろうか...それとももともと勘違いしてて不要だったのか?

AWS Copilot

本日発表されて話題沸騰の AWS Copilot

トリさん翻訳の公式とハマコーさんのブログをそのまま試してみました。

aws.amazon.com

dev.classmethod.jp

初回デプロイに 10 分ぐらいかかるけど、 VPC + ALB + ECS Fargate を用いた環境が簡単に作成されました。
デプロイに時間がかかっているのは、CloudFormation のログを見る限り、作成するリソースが多いうえに ALB の作成がそもそも重いのが原因でしょうか。

Serverless FrameworkAWS 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 の作成は見当たらなかったのですが、できるんだろうか?

追記

やっぱり、Fargate のみですね!
トリさんありがとうございました。

所感

ECR 使わないケースで、公開されたコンテナを利用するのであれば、マネジメントコンソールで Fargate を利用することにより、比較的簡単に作成できます。
一方、自作の Dockerfile を利用したい場合は、 ECR にあげる手間暇が通常はかかりますが、 copilot を利用することによりその辺りも含めてとても簡単にデプロイができます。
手元の Docker を AWS でも手軽に利用したいときには、とても役に立ちそうです!