- aws上でcontainerを利用したインフラを構築できるフルマネージドコンテナオーケストレーションサービス
- 実行環境は
EC2
とfargate
から選択可能 (EC2にはsshできますがfargate起動タイプはsshできません) - タスク単位でコンテナの管理が可能
- 常時起動が必要なコンテナは「サービス」
- イベントやスケジュールにより処理を開始するコンテナは「タスクスケジュール」
Log周りは工夫が必要
基本的には標準出力に出すようにする -> cloud watch logsで確認可能 ログ管理ツールなどに出力したい場合は
FireLens
などを使ってログのルーティングが可能 https://qiita.com/charon/items/65ac91caa9dc5aec8635
0.IAMロール(必要であれば)
1.ECSクラスタの作成
2.ALBの作成(httpリクエスト受ける等の場合)
3.ECSタスクの定義
4.ECSサービスの定義
ecsを実行するためのもの(GKEなどのクラスタと同等) CloudWatch Container Insights を有効にするとCPU/メモリ使用率などがCloudWatchに登録されます(月額料金UPします)
ALBはいつもどおりにポチポチ作成を... (サービス定義時に作成するのでALB作成後ターゲットグループとリスナは削除しておいてください) LB周りの参考に...https://qiita.com/NaokiIshimura/items/bf4c21500a5f542dff9a
- タスクはサーバ定義みたいなもの
- タスクの定義ではコンテナの実行場所、利用リソース、実行するコンテナの指定などを定義する
- 指定できるコンテナレジストリはdockerhub / ecr
- 同一タスク内の通信に関してはローカルホストでの指定になる
同一タスク内にnginx の後ろにアプリケーションサーバを置く場合localhostでの接続になるので、ポートマッピングなどは指定しないでもアクセスできます
- サービスを実行することで常時稼働のタスクを実現
- サービスでは先程指定したtaskを指定し起動させてください
- サービスの作成が完了するとtaskが起動しnginxのトップが見れると思います
- タスク数を 1 から 2にすると冗長化構成になります(AutoScaringの設定はサービスから設定可能)
- 定期的なタスクの実行
ecsによるスケジューリング / cloud watch eventでのタスク実行 / state machineによるstep実行なども可能 実行コマンドはdockerfile上のCMD もしくは スケジュール作成時のコマンドの上書きでどうぞ
- ecrへのlogin
aws ecr get-login-password --region ap-northeast-1 --profile あれば | docker login --username AWS --password-stdin アカウントID.dkr.ecr.ap-northeast-1.amazonaws.com
先程の nginxのコンテナの後ろにアプリケーションサーバを設置してより本番にのアプリケーションに近いものを作ってみよう。