もくじ
ECSの用語
ECR
イメージを保存するリポジトリ。AWS内部のリポジトリなのでセキュアにDockerイメージを設置できる。
クラスター(Cluster)
タスクが実行されるEC2インスタンスの集合体
サービス
- コンテナを常時起動させて、リクエストを待ち受ける
- 接続を受けてポートを動的にマッピングする
- コンテナを死活監視し、死んだら再起動をかける
- 各EC2インスタンスのコンテナをまとめて1つのサービスとしてまとめる
タスク
起動して、処理を実行して削除される。バッチジョブに使える。
マネージャ(Manager)
クラスターのリソースとタスクの状態を管理する
動的ポートマッピング
動的ポートマッピングすることで、1つのインスタンスの複数Dockerに接続できる。
Docker本番利用上の注意
immutable
- 一度起動したインスタンスに設定変更を行わない = SSHで入るような管理をしない
状態を持たないようにする
AutoScalingでの環境もそうだけれど疎結合にしておく。
- セッションをElaticache, 画像をS3などに格納する
環境変数は実行時に外部から注入させる
AWS System Managerを利用することで、SSMのパラメータストア, KMSで機密情報を暗号化した上でECSのインスタンスに環境変数を渡せる。
データベースはコンテナを使わない
- RDS, Aurora
ログは標準出力, 標準エラー出力に出す
- Cloudwatch LogsやFluentd+S3に渡す
- S3fsでS3に設置しても良い
// AWS側のアナウンスとしてS3をファイルシステムとして使うのは非推奨。私は非推奨な設計が好きではないが、運用されているWEBサービスでS3をファイルシステムとしてマウントしているが利用しているサービスがあるが特に問題が起こっていない。
Nginx, PHP-FPM, Laravelそれぞれについて、標準出力/標準エラー出力を出せる。