Estou tentando automatizar a configuração do meu aplicativo Elastic Beanstalk usando salvo Configs .
Alguém tem um exemplo de como obter o balanceador de carga de aplicativo criado a partir do Elastic Beanstalk para usar uma porta de verificação de integridade diferente?
Se não, existe uma maneira de acessar o recurso subjacente para que eu possa aplicar um HealthCheckPort: 8081
personalizado ao Grupo-alvo?
Detalhes e tentativas até a data:
O aplicativo é um aplicativo Java simples baseado no DropWizard, que fornece APIs HTTP na porta 8080, e uma API de verificação de integridade na porta 8081.
Tive sucesso na configuração do ambiente usando um ELB clássico por meio das seguintes opções:
OptionSettings:
aws:elasticbeanstalk:environment:
EnvironmentType: LoadBalanced
LoadBalancerType: classic
aws:elasticbeanstalk:application:
Application Healthcheck URL: HTTP:8081/healthcheck
aws:elasticbeanstalk:environment:process:default:
MatcherHTTPCode: '200'
Port: '8080'
Protocol: HTTP
aws:elb:healthcheck:
HealthyThreshold: '3'
Interval: '10'
Timeout: '5'
UnhealthyThreshold: '5'
aws:elb:listener:80:
ListenerProtocol: HTTP
InstancePort: '8080'
InstanceProtocol: HTTP
ListenerEnabled: true
aws:elb:loadbalancer:
CrossZone: true
No entanto, quando atualizo a configuração para usar um ELB de Aplicativo, a verificação de integridade associada ao grupo de destino é definida como a porta do aplicativo (8080) e não a porta de verificação de integridade (8081). Isso faz com que o aplicativo inicie em um estado de falha, que só pode ser corrigido alterando manualmente a porta de verificação de integridade do Grupo-alvo.
OptionSettings:
aws:elasticbeanstalk:environment:
EnvironmentType: LoadBalanced
LoadBalancerType: application
aws:elasticbeanstalk:application:
Application Healthcheck URL: HTTP:8081/healthcheck
aws:elasticbeanstalk:environment:process:default:
MatcherHTTPCode: '200'
Port: '8080'
Protocol: HTTP
aws:elbv2:listener:default:
DefaultProcess: default
ListenerEnabled: true
Protocol: HTTP
aws:elbv2:loadbalancer:
AccessLogsS3Enabled: false
IdleTimeout: '60'
Não consigo encontrar outros campos relevantes na documentação das opções de comando do AWS Elastic Beanstalk.
Eu também pensei em fazer modificações de recursos personalizados , mas o único ELB mencionado é AWSEBLoadBalancer
do tipo AWS::ElasticLoadBalancing::LoadBalancer
, que é um balanceador de carga clássico, mas a modificação que preciso fazer está no tipo AWS::ElasticLoadBalancingV2::TargetGroup
para o balanceador de carga do aplicativo.