通过 cloudformation 部署的 Elastic beanstalk 不更新健康检查目标

mor*_*ras 1 amazon-elastic-beanstalk

我有一个通过 CloudFormation 部署的 Elastic Beanstalk 环境。

目前,它是 LoadBalancer 后面的单个 Web 服务器,但将来会通过自动缩放组进行扩展。

这是我模板中的相关片段

"BeanstalkEnvironment": {
    "Type": "AWS::ElasticBeanstalk::Environment",
        "Properties": {
        ...
            "OptionSettings": [
                ...
                {
                    "Namespace": "aws:elasticbeanstalk:application",
                    "OptionName": "Application Healthcheck URL",
                    "Value": "/health"
                },
                {
                    "Namespace": "aws:elasticbeanstalk:environment",
                    "OptionName": "EnvironmentType",
                    "Value": "LoadBalanced"
                },
                {
                    "Namespace": "aws:elasticbeanstalk:environment",
                    "OptionName": "LoadBalancerType",
                    "Value": "application"
                },
                {
                    "Namespace": "aws:elbv2:listener:default",
                    "OptionName": "ListenerEnabled",
                    "Value": "true"
                },
                {
                    "Namespace": "aws:elbv2:listener:443",
                    "OptionName": "ListenerEnabled",
                    "Value": "true"
                },
                {
                    "Namespace": "aws:elbv2:listener:443",
                    "OptionName": "Protocol",
                    "Value": "HTTPS"
                },
                {
                    "Namespace": "aws:elbv2:listener:443",
                    "OptionName": "SSLCertificateArns",
                    "Value": {"Ref": "Certificate"}
                },
                {
                    "Namespace": "aws:autoscaling:asg",
                    "OptionName": "MinSize",
                    "Value": "1"
                },
                {
                    "Namespace": "aws:autoscaling:asg",
                    "OptionName": "MaxSize",
                    "Value": "1"
                }
                ...
            ],
            "SolutionStackName": "64bit Amazon Linux 2 v3.0.3 running PHP 7.4",
        ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

负载均衡器目标组仍在/用作运行状况检查的路径。由于我的 Web 服务器重定向/健康检查失败,因为它没有获得所需的 200 状态代码。
如果我手动更改目标路径,/health那么运行状况检查会按预期工作。

我缺少什么配置才能将运行状况检查路径设置为环境的 CloudFormation 模板的一部分?

Mar*_*cin 5

我认为此设置aws:elasticbeanstalk:application适用于经典负载均衡器 (CLB)。

但是,由于您使用的是ALB(应用程序负载均衡器),因此您应该使用aws:elasticbeanstalk:environment:process:default

此选项允许您设置(除其他外):

  • HealthCheckPath:发送 HTTP 请求以进行健康检查的路径
  • MatcherHTTPCode:以逗号分隔的HTTP 代码列表,表示实例运行状况良好。