Skip to content

Commit 04c8c64

Browse files
committed
[extension/sigv4authextension] Add support for endpoint based names for logs and traces
Adds support for default endpoint based service name and region detection for AWS CloudWatchLogs and Traces endpoints
1 parent e1bd751 commit 04c8c64

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

extension/sigv4authextension/signingroundtripper.go

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -114,28 +114,33 @@ func (si *signingRoundTripper) inferServiceAndRegion(r *http.Request) (service s
114114
service = si.service
115115
region = si.region
116116

117-
h := r.Host
118-
if strings.HasPrefix(h, "aps-workspaces") {
119-
if service == "" {
120-
service = "aps"
121-
}
122-
rest := h[strings.Index(h, ".")+1:]
123-
if region == "" {
124-
region = rest[0:strings.Index(rest, ".")]
125-
}
126-
} else if strings.HasPrefix(h, "search-") {
127-
if service == "" {
128-
service = "es"
129-
}
130-
rest := h[strings.Index(h, ".")+1:]
131-
if region == "" {
132-
region = rest[0:strings.Index(rest, ".")]
133-
}
117+
host := r.Host
118+
switch {
119+
case strings.HasPrefix(host, "aps-workspaces"):
120+
service, region = extractServiceAndRegion(service, region, host, "aps")
121+
case strings.HasPrefix(host, "search-"):
122+
service, region = extractServiceAndRegion(service, region, host, "es")
123+
case strings.HasPrefix(host, "logs"):
124+
service, region = extractServiceAndRegion(service, region, host, "logs")
125+
case strings.HasPrefix(host, "xray"):
126+
service, region = extractServiceAndRegion(service, region, host, "xray")
134127
}
135128

136129
if service == "" || region == "" {
137130
si.logger.Warn("Unable to infer region and/or service from the URL. Please provide values for region and/or service in the collector configuration.")
138131
}
132+
133+
return service, region
134+
}
135+
136+
func extractServiceAndRegion(service, region, host, defaultService string) (string, string) {
137+
if service == "" {
138+
service = defaultService
139+
}
140+
rest := host[strings.Index(host, ".")+1:]
141+
if region == "" {
142+
region = rest[0:strings.Index(rest, ".")]
143+
}
139144
return service, region
140145
}
141146

0 commit comments

Comments
 (0)