ECS運用に役立ちそうなものまとめ
ECS運用に便利な機能まとめ。
経験が浅い自分のような人は、ついつい長期的に運用する観点を忘れてしまいがちです。
細々とした設定ファイル書いたりするより、「早くモノを作りたい!」の気持ちが勝つのでしょうがないけど。。。
最近は未経験者がポートフォリオでECS使ったりするのもあるあるらしいですが(スゲェ……)、
運用的な観点からいくつか機能を追加すると、ライバルに差をつけられるかもですね。
モニタリング
CloudWatch logs
連携することにより、簡単にログの収集が可能。
FireLens
Fargate環境で利用可能なログルーティング。
Firehoseと連携しCloudWatch logsのみではなく、S3やRedshift等への転送が可能。
AWSから「Fluent Bit」のコンテナイメージが提供されているため、ECSのタスク定義の中にアプリケーションコンテナと共に設置し、コンテナ経由でログを収集可能。
ECSの仕様として、コンテナごとにログドライバーが一つまでとなっている。
そのため、Fluent Bitを設定し、CloudWatch logs とS3 の両方、または種類ごとにどちらかに一方のみの出力とするのがベター。
※ ログの出力先の分岐にはFluent Bitのコンテナイメージのカスタマイズが必要。
メトリクス
メトリクスとは「定量的な指標として定期的に計測・収集される動作データ」。
「CloudWatch メトリクス」と「CloudWatch アラート」でアラート通知なども可能。
トレース
アプリケーションの内部処理の呼び出し、各サービス間のトランザクション情報などを取得。
X-Ray
「X-Ray」で収集可能。
タスク定義にX-Rayコンテナを同梱し、アプリケーションにX-Ray用のコーディングを施すことで利用可能。
ECSのコンテナアプリケーションからX-Rayにトレース情報を書き込むには、IAM管理ポリシーの「AWSRayDeamonWriteAccess」がECSタスクロールに付与されている必要がある。
またECSタスクがプライベートサブネットにデプロイされている場合、インターフェース型のVPCエンドポイントを設置する必要あり。
メンテナンス
ECR
コンテナイメージのリポジトリ。
裏側ではS3が動いているため、ライフサイクルポリシーの設定で一定の条件での保存と破棄可能、かつ高い耐久性を持つ。
タグ付けでリソースを管理する。
踏み台設計
パブリックサブネットにEC2を置く
通常のパターン。SSHで接続。
EC2運用の手間がかかる。踏み台がインターネット向けに公開されるリスクもあり。
セッションマネージャーを利用する
セッションマネージャーを利用することで、コンソールから接続できる。プライベートサブネットに置いても接続できるため、踏み台がインターネット向けに公開されるリスクを減らせる。
ECSで踏み台を設計
タスク内にSSMエージェントを設置することで、セッションマネージャーから接続できる。
インスタンス管理等の手間が省ける。
参考
AWSでECSを利用したコンテナ環境を設計、運用するうえでとても参考になります。