LoginSignup
9
1

More than 3 years have passed since last update.

CopilotでECSを体験してみたい

Last updated at Posted at 2020-12-08

はじめに

この記事はハンズラボ Advent Calendar 2020 9日目の記事となります。

今回のテーマは現在開催中のAWS re:Inventからではないですが、
ECSの構築を簡単にしてくれるCopilotが一般公開されたのでこちらを見てみます。

この記事の対象者

  • 右も左もわからないけど、Dockerやってみたい!ECS気になる!な方
  • ECSでインフラ構築しなくちゃどうしよう。。な方
  • 当時闇雲にインフラ構築をして疲弊していた知識不足な自分に向けて

Copilotとは

概要についてはAWSブログより引用。
ECS CLIの後継にあたるものみたいです。

AWS Copilot は、低レイヤなインフラの手動管理から脱却し、自身のアプリケーションとそのライフサイクルにフォーカスしたい ECS ユーザのためにデザインされました。Copilot は、ECS チームのエンジニアや ECS のお客様が作り上げてきたベストプラクティスに基づき、デフォルトでモダンかつプロダクションレディなインフラを構築します。

AWSだとCloudFormation or CDK(Cloud Development Kit) が良いのかなと考えますが、やっぱり大変ですよね。。

CloudFormationと聞きますと、こちらの記事を思い出します。

CloudFormationの全てを味わいつくせ!「AWSの全てをコードで管理する方法〜その理想と現実〜」

引用

最初の一歩を踏み出すには、中々が勇気がいりそう。。
そんな感じでスルーしてしまうのは非常に勿体ないので、是非Copilotから自動化の素晴らしさを体験してみましょう!!

Copilot動かしてみる

前提

  • macOS
  • aws cliインストール&設定済み (aws configureでデフォルトプロファイルを設定。)

Copilot インストール

$ brew install aws/tap/copilot-cli

copilot --helpを実行すると以下のように表示されます。
image.png

DevlopとReleaseとあって、CI/CDパイプラインもすぐ組めそう。

ドキュメントはこちらから。copilot docsでもいけます。↓
https://aws.github.io/copilot-cli/

アプリを用意

(こちらを拝借)
https://github.com/Daviey/nyan-cat

Dockerfileは以下のようにします。


FROM nginx:alpine
EXPOSE 80
COPY . /usr/share/nginx/html

さっそく実行

copilot init

いくつかのやりとりを経てデプロイが実行されます。
ひとまずテスト環境として、アプリケーションがデプロイされるイメージです。
image.png

途中でCloudFormationのコンソールをみてみると、
こんな感じでスタックが作成されていきます。
image.png

ECRへimageのpushが終わりました。
デプロイが完了したようです。
image.png
一応、デプロイ完了後のCloudFormationコンソールも。。。
image.png

アクセスしてみる

コンソールをみると、URLあるのでそこからアクセスしてみます。
image.png
うごいたーー
猫が飛んでいます。

ここまで15分くらいあれば速攻でECSデプロイいけます。

本番環境へデプロイしたい

本番環境としてデプロイしたい場合には
copilot env initを実行すると、環境ごとのインフラを構築してくれます。
(nameはproductionとします)

設定ファイル(manifest.yaml)の値を書き換えて、
以下コマンドを実行するだけでデプロイができます。

copilot svc deploy --env production

以下のようにenviromentsを上書きするだけで、
複数のAZに対してコンテナを配置して、可用性の高いアプリケーションとすることが出来ます。(す、凄い)

environments:
  production:
    count: 2
    cpu: 1024
    memory: 2048

Copilotはどれだけ楽にしてくれるか

ECSでアプリケーションを実行するには最低でも以下AWSサービスを利用します。

- ECS
- ECR
- EC2( or Fargate)
- ELB
- VPC(サブネットも色々気にしないといけない)
etc...

多いです。
手で作る or Cfnで構築といった場合は上記すべてを網羅しておく必要があります。

先程のcopilot initを絵に表すとこんな感じ。。
(これも細かい所は省いています。間違っていたらすみません。)
image.png

コンテナの恩恵を被るには、結構準備が必要です。

デプロイしたいアプリケーションさえあれば、すぐにリリースできる。
そんなことがCopilotだと可能です。素敵ですね。

考察

所属チームでは、システムのマイグレーションは中長期的な課題ではあるので、
コンテナ化する際の選択肢の一つとしてCopilotはアリかなと考えています。

現状、マイグレーションの一環としてECS化は結構進んでいるので。。

弊社のようにのっぴきならない事情がない限りは、
こういったツールをドンドン活用していった方が良いかなと思われます。。

マイグレーションの歩みはこちらから見れます。
ハンズラボエンジニアブログ

最後に

最後まで読んでいただきありがとうございました。

消し忘れると課金されてしまうので、不要であれば消しましょう。

copilot app delete --env-profiles test=default

image.png

以下でCopilotでの自動デプロイが紹介されているみたいなので、今度試してみたいと思います。
https://aws.amazon.com/jp/blogs/news/automatically-deploying-your-container-application-with-aws-copilot/

参考情報

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1