説明
ECSタスク定義にコンテナーのHealthCheckがない場合、この仕組みではアプリケーションの応答状態を確認できません。プロセスが実行中でも、正常な応答は保証されません。
想定される影響
他の確認手段もなければ、応答しないコンテナーの発見と置き換えに時間がかかるおそれがあります。
対処方法
主要なコンテナーに適切なHealthCheckコマンド、間隔、タイムアウトを設定してください。必要なツールをイメージに含め、実際の起動時間と失敗時の動作を確認してください。
例
AppImageにはcurlが含まれ、8080番ポートの/でヘルスチェックに応答する必要があります。コンテナー設定の抜粋で、他のタスク属性は省略しています。
変更前
yaml
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Name: app
Image: !Ref AppImage
Essential: true
変更後
yaml
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Name: app
Image: !Ref AppImage
Essential: true
HealthCheck:
Command:
- CMD-SHELL
- curl -f http://localhost:8080/ || exit 1
Interval: 30
Retries: 3
Timeout: 5