in internal/pkg/describe/uri.go [279:335]
func (d *uriDescriber) uri() (accessURI, error) {
svcParams, err := d.svcDescriber.Params()
if err != nil {
return accessURI{}, fmt.Errorf("get stack parameters for service %s: %w", d.svc, err)
}
path := svcParams[stack.WorkloadRulePathParamKey]
httpsEnabled := svcParams[stack.WorkloadHTTPSParamKey] == "true"
// public load balancers use the env DNS name if https is not enabled
if d.albCFNOutputName == envOutputPublicLoadBalancerDNSName && !httpsEnabled {
return d.envDNSName(path)
}
svcResources, err := d.svcDescriber.StackResources()
if err != nil {
return accessURI{}, fmt.Errorf("get stack resources for service %s: %w", d.svc, err)
}
var ruleARNs []string
for _, resource := range svcResources {
if resource.Type == svcStackResourceListenerRuleResourceType &&
((httpsEnabled && strings.HasPrefix(resource.LogicalID, svcStackResourceHTTPSListenerRuleLogicalID)) ||
(!httpsEnabled && strings.HasPrefix(resource.LogicalID, svcStackResourceHTTPListenerRuleLogicalID))) {
ruleARNs = append(ruleARNs, resource.PhysicalID)
}
}
lbDescr, err := d.initLBDescriber(d.env)
if err != nil {
return accessURI{}, nil
}
dnsNames, err := lbDescr.ListenerRulesHostHeaders(ruleARNs)
if err != nil {
return accessURI{}, fmt.Errorf("get host headers for listener rules %s: %w", strings.Join(ruleARNs, ","), err)
}
if len(dnsNames) == 0 {
envVars, _ := d.svcDescriber.EnvVars()
var lbDNS string
for _, envVar := range envVars {
if envVar.Name == LBDNS {
lbDNS = envVar.Value
return accessURI{
HTTPS: httpsEnabled,
DNSNames: []string{lbDNS},
Path: path,
}, nil
}
}
return d.envDNSName(path)
}
return accessURI{
HTTPS: httpsEnabled,
DNSNames: dnsNames,
Path: path,
}, nil
}