AWSコンテナ設計・構築[本格]入門

はじめに

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エンドポイントを使用する必要があります。