in internal/pkg/manifest/validate.go [94:168]
func (l LoadBalancedWebService) validate() error {
var err error
if err = l.LoadBalancedWebServiceConfig.validate(); err != nil {
return err
}
if err = l.Workload.validate(); err != nil {
return err
}
if err = validateTargetContainer(validateTargetContainerOpts{
mainContainerName: aws.StringValue(l.Name),
mainContainerPort: l.ImageConfig.Port,
targetContainer: l.HTTPOrBool.Main.TargetContainer,
sidecarConfig: l.Sidecars,
}); err != nil {
return fmt.Errorf(`validate load balancer target for "http": %w`, err)
}
for idx, rule := range l.HTTPOrBool.AdditionalRoutingRules {
if err = validateTargetContainer(validateTargetContainerOpts{
mainContainerName: aws.StringValue(l.Name),
mainContainerPort: l.ImageConfig.Port,
targetContainer: rule.TargetContainer,
sidecarConfig: l.Sidecars,
}); err != nil {
return fmt.Errorf(`validate load balancer target for "http.additional_rules[%d]": %w`, idx, err)
}
}
if err = validateTargetContainer(validateTargetContainerOpts{
mainContainerName: aws.StringValue(l.Name),
mainContainerPort: l.ImageConfig.Port,
targetContainer: l.NLBConfig.Listener.TargetContainer,
sidecarConfig: l.Sidecars,
}); err != nil {
return fmt.Errorf(`validate target for "nlb": %w`, err)
}
for idx, listener := range l.NLBConfig.AdditionalListeners {
if err = validateTargetContainer(validateTargetContainerOpts{
mainContainerName: aws.StringValue(l.Name),
mainContainerPort: l.ImageConfig.Port,
targetContainer: listener.TargetContainer,
sidecarConfig: l.Sidecars,
}); err != nil {
return fmt.Errorf(`validate target for "nlb.additional_listeners[%d]": %w`, idx, err)
}
}
if err = validateContainerDeps(validateDependenciesOpts{
sidecarConfig: l.Sidecars,
imageConfig: l.ImageConfig.Image,
mainContainerName: aws.StringValue(l.Name),
logging: l.Logging,
}); err != nil {
return fmt.Errorf("validate container dependencies: %w", err)
}
if err = validateExposedPorts(validateExposedPortsOpts{
mainContainerName: aws.StringValue(l.Name),
mainContainerPort: l.ImageConfig.Port,
sidecarConfig: l.Sidecars,
alb: &l.HTTPOrBool.HTTP,
nlb: &l.NLBConfig,
}); err != nil {
return fmt.Errorf("validate unique exposed ports: %w", err)
}
ports, err := l.ExposedPorts()
if err != nil {
return err
}
if err = validateHealthCheckPorts(validateHealthCheckPortsOpts{
exposedPorts: ports,
mainContainerPort: l.ImageConfig.Port,
alb: l.HTTPOrBool.HTTP,
nlb: l.NLBConfig,
}); err != nil {
return fmt.Errorf("validate load balancer health check ports: %w", err)
}
return nil
}