🌏
[AWS]ECS/Fargateの概念がこれでわかる
概要
ECS
- AWS独自のcontainer orchestrator
- docker composeに近い考え方
- ECSを動かすVMは管理が必要
Fargate
- ManagedなVM
- 水平オートスケールできたり、セキュリティパッチを勝手に当ててくれたりする
- 指定できるスペックはパターンがある
構造
概念構造
- Cluster
- Service,Taskを管理する枠
- VPCと紐つける
- Service
- containerをdaemon起動するもの
- taskの多重度を管理するのもここ
- Task
- one-offのcontainerを起動するもの
- containerのprocessが完了したらtaskも終わる
- EventBridgeやStepFunctionと組み合わせてスクジュールを起動できる
- Task Definition
- docker composeのような定義
- リビジョン管理される
- Active/Deactiveで利用できるリビジョンを管理できる
利用方法
料金体系
- ECS自体は無料でコンピュータリソースに料金がかかる
- Fargateの料金体系
Task Definition
- 基本的にdocker composeと同じ
- AWS独自的な部分は、CloudWatch Logsに出力したり、SSM Parammeterから環境変数を設定したりするあたり
- デベロッパーガイド:定義サンプル
デプロイ
- イメージ
- ECRにimageをpush
- task definitionを登録
- service/taskをデプロイ
- taskの場合
- task definitionのcommand上書きなどを指定
- serviceの場合
- 起動タスク数やオートスケールルールなどを指定
- taskの場合
運用
- ECS Taskを実行するロールが必要
- 手動作成は必要最低限のロールを自動で作成することもできる
- 同じ定義になるので流用するイメージ
- ECS Serviceの再起動
- task数を1 => 2 => 1で変更すれば、無停止で再起動できる
- ECS Execでdocker container execできる
- ユーザガイド:ECS Exec
- Serviceの設定でON -> タスク再起動
-
aws ecs execute-command
で接続できるようになる
Discussion