AWSコンテナ設計・構築[本格]入門を読みました。
備忘メモとして残しておきます。
ロギング設計
CloudWatch Logs と FireLens
-
CloudWatch Logs
- 例)サブスクリプションフィルター: 指定した文字列を含むログのみを抽出する。
- 抽出したログを Lambda に連携して障害を通知させる。
- 例)サブスクリプションフィルター: 指定した文字列を含むログのみを抽出する。
-
FireLens
- AWS外のSaaSへのログ転送がしやすい。CloudWatch Logs にもログ転送が可能。
メトリクス設計
メトリクスは、定量的な指標として定期的に計測/収集されるシステム内部動作のデータです。CloudWatch メトリクスと CloudWatch Container Insights に分けられます。
-
CloudWatch メトリクス
- CPU使用率、メモリ使用率 (1分間隔、ECSサービス単位)。
- ECSタスクレベルで収集可能。ディスクやネットワーク情報も収集可能。
Bastion設計
各サーバへのログインが必要な際に、セキュリティ面や運用コスト面を考慮した設計が重要です。
- セッションマネージャー経由の接続で、SSH接続が不要。
- IAM権限でログイン可能であり、セキュリティ設定をIAMに集中管理できます。
コンテナイメージの脆弱性スキャン
継続的かつ自動的に実施することが重要です。CI/CDに仕組みを取り入れます。
- CI/CDが実行されなければ脆弱性スキャンが実施されないため、定期的な手動スキャンが必要です。
- CloudWatch Events から Lambda を実行できます。
平文の秘密情報対策
秘密情報を Secrets Manager や SSM パラメータストアに格納することで、環境変数として安全に提供できます。
- 各格納先のARNと環境変数名をタスク定義内でマッピングすることで、コンテナイメージ内のOS環境変数として認識させます。
信頼性設計
マルチAZによる可用性向上
FargateでECSサービスを稼働させると、ECSサービス内部がベストエフォートでAZ間の負荷バランスを調整しながらタスク配置します。
障害時切り離しと復旧
-
CloudWatchを活用したECSタスクの障害検知
- RunningTaskCount と TaskCount メトリクスを組み合わせます。
- ECSサービスによるECSタスクの自動復旧
- ALBと連動したECSタスクの切り離しと自動復旧
- リタイアとリサイクルによるECSタスク停止への対処
- リタイア:AWS内部のHW障害や脆弱性検知時、新しいECSタスクに置き換えるイベント
- リサイクル:Fargate上で稼働しているECSタスクについて、パッチ適用や内部インフラストラクチャ更新のイベント
システムメンテナンス時のサービス停止
メンテナンス時、SorryページやSorryコンテンツを返却できることが理想です。ALBのリスナールールの定義に設定できます。
ECR
ECRはリージョンごとに存在するサービスです。VPC内管理サーバからECRへアクセスするには、インターネット向けOutbonding通信かVPCエンドポイントを使用する必要があります。