endpoints.go raw
1 // Code generated by smithy-go-codegen DO NOT EDIT.
2
3 package endpoints
4
5 import (
6 "github.com/aws/aws-sdk-go-v2/aws"
7 endpoints "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2"
8 "github.com/aws/smithy-go/logging"
9 "regexp"
10 )
11
12 // Options is the endpoint resolver configuration options
13 type Options struct {
14 // Logger is a logging implementation that log events should be sent to.
15 Logger logging.Logger
16
17 // LogDeprecated indicates that deprecated endpoints should be logged to the
18 // provided logger.
19 LogDeprecated bool
20
21 // ResolvedRegion is used to override the region to be resolved, rather then the
22 // using the value passed to the ResolveEndpoint method. This value is used by the
23 // SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative
24 // name. You must not set this value directly in your application.
25 ResolvedRegion string
26
27 // DisableHTTPS informs the resolver to return an endpoint that does not use the
28 // HTTPS scheme.
29 DisableHTTPS bool
30
31 // UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint.
32 UseDualStackEndpoint aws.DualStackEndpointState
33
34 // UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint.
35 UseFIPSEndpoint aws.FIPSEndpointState
36 }
37
38 func (o Options) GetResolvedRegion() string {
39 return o.ResolvedRegion
40 }
41
42 func (o Options) GetDisableHTTPS() bool {
43 return o.DisableHTTPS
44 }
45
46 func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState {
47 return o.UseDualStackEndpoint
48 }
49
50 func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState {
51 return o.UseFIPSEndpoint
52 }
53
54 func transformToSharedOptions(options Options) endpoints.Options {
55 return endpoints.Options{
56 Logger: options.Logger,
57 LogDeprecated: options.LogDeprecated,
58 ResolvedRegion: options.ResolvedRegion,
59 DisableHTTPS: options.DisableHTTPS,
60 UseDualStackEndpoint: options.UseDualStackEndpoint,
61 UseFIPSEndpoint: options.UseFIPSEndpoint,
62 }
63 }
64
65 // Resolver Route 53 endpoint resolver
66 type Resolver struct {
67 partitions endpoints.Partitions
68 }
69
70 // ResolveEndpoint resolves the service endpoint for the given region and options
71 func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) {
72 if len(region) == 0 {
73 return endpoint, &aws.MissingRegionError{}
74 }
75
76 opt := transformToSharedOptions(options)
77 return r.partitions.ResolveEndpoint(region, opt)
78 }
79
80 // New returns a new Resolver
81 func New() *Resolver {
82 return &Resolver{
83 partitions: defaultPartitions,
84 }
85 }
86
87 var partitionRegexp = struct {
88 Aws *regexp.Regexp
89 AwsCn *regexp.Regexp
90 AwsEusc *regexp.Regexp
91 AwsIso *regexp.Regexp
92 AwsIsoB *regexp.Regexp
93 AwsIsoE *regexp.Regexp
94 AwsIsoF *regexp.Regexp
95 AwsUsGov *regexp.Regexp
96 }{
97
98 Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"),
99 AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
100 AwsEusc: regexp.MustCompile("^eusc\\-(de)\\-\\w+\\-\\d+$"),
101 AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
102 AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
103 AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"),
104 AwsIsoF: regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"),
105 AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
106 }
107
108 var defaultPartitions = endpoints.Partitions{
109 {
110 ID: "aws",
111 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
112 {
113 Variant: endpoints.DualStackVariant,
114 }: {
115 Hostname: "route53.{region}.api.aws",
116 Protocols: []string{"https"},
117 SignatureVersions: []string{"v4"},
118 },
119 {
120 Variant: endpoints.FIPSVariant,
121 }: {
122 Hostname: "route53-fips.{region}.amazonaws.com",
123 Protocols: []string{"https"},
124 SignatureVersions: []string{"v4"},
125 },
126 {
127 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
128 }: {
129 Hostname: "route53-fips.{region}.api.aws",
130 Protocols: []string{"https"},
131 SignatureVersions: []string{"v4"},
132 },
133 {
134 Variant: 0,
135 }: {
136 Hostname: "route53.{region}.amazonaws.com",
137 Protocols: []string{"https"},
138 SignatureVersions: []string{"v4"},
139 },
140 },
141 RegionRegex: partitionRegexp.Aws,
142 IsRegionalized: false,
143 PartitionEndpoint: "aws-global",
144 Endpoints: endpoints.Endpoints{
145 endpoints.EndpointKey{
146 Region: "aws-global",
147 }: endpoints.Endpoint{
148 Hostname: "route53.amazonaws.com",
149 CredentialScope: endpoints.CredentialScope{
150 Region: "us-east-1",
151 },
152 },
153 endpoints.EndpointKey{
154 Region: "aws-global",
155 Variant: endpoints.FIPSVariant,
156 }: {
157 Hostname: "route53-fips.amazonaws.com",
158 CredentialScope: endpoints.CredentialScope{
159 Region: "us-east-1",
160 },
161 },
162 endpoints.EndpointKey{
163 Region: "fips-aws-global",
164 }: endpoints.Endpoint{
165 Hostname: "route53-fips.amazonaws.com",
166 CredentialScope: endpoints.CredentialScope{
167 Region: "us-east-1",
168 },
169 Deprecated: aws.TrueTernary,
170 },
171 },
172 },
173 {
174 ID: "aws-cn",
175 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
176 {
177 Variant: endpoints.DualStackVariant,
178 }: {
179 Hostname: "route53.{region}.api.amazonwebservices.com.cn",
180 Protocols: []string{"https"},
181 SignatureVersions: []string{"v4"},
182 },
183 {
184 Variant: endpoints.FIPSVariant,
185 }: {
186 Hostname: "route53-fips.{region}.amazonaws.com.cn",
187 Protocols: []string{"https"},
188 SignatureVersions: []string{"v4"},
189 },
190 {
191 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
192 }: {
193 Hostname: "route53-fips.{region}.api.amazonwebservices.com.cn",
194 Protocols: []string{"https"},
195 SignatureVersions: []string{"v4"},
196 },
197 {
198 Variant: 0,
199 }: {
200 Hostname: "route53.{region}.amazonaws.com.cn",
201 Protocols: []string{"https"},
202 SignatureVersions: []string{"v4"},
203 },
204 },
205 RegionRegex: partitionRegexp.AwsCn,
206 IsRegionalized: false,
207 PartitionEndpoint: "aws-cn-global",
208 Endpoints: endpoints.Endpoints{
209 endpoints.EndpointKey{
210 Region: "aws-cn-global",
211 }: endpoints.Endpoint{
212 Hostname: "route53.amazonaws.com.cn",
213 CredentialScope: endpoints.CredentialScope{
214 Region: "cn-northwest-1",
215 },
216 },
217 },
218 },
219 {
220 ID: "aws-eusc",
221 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
222 {
223 Variant: endpoints.DualStackVariant,
224 }: {
225 Hostname: "route53.{region}.api.amazonwebservices.eu",
226 Protocols: []string{"https"},
227 SignatureVersions: []string{"v4"},
228 },
229 {
230 Variant: endpoints.FIPSVariant,
231 }: {
232 Hostname: "route53-fips.{region}.amazonaws.eu",
233 Protocols: []string{"https"},
234 SignatureVersions: []string{"v4"},
235 },
236 {
237 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
238 }: {
239 Hostname: "route53-fips.{region}.api.amazonwebservices.eu",
240 Protocols: []string{"https"},
241 SignatureVersions: []string{"v4"},
242 },
243 {
244 Variant: 0,
245 }: {
246 Hostname: "route53.{region}.amazonaws.eu",
247 Protocols: []string{"https"},
248 SignatureVersions: []string{"v4"},
249 },
250 },
251 RegionRegex: partitionRegexp.AwsEusc,
252 IsRegionalized: true,
253 },
254 {
255 ID: "aws-iso",
256 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
257 {
258 Variant: endpoints.FIPSVariant,
259 }: {
260 Hostname: "route53-fips.{region}.c2s.ic.gov",
261 Protocols: []string{"https"},
262 SignatureVersions: []string{"v4"},
263 },
264 {
265 Variant: 0,
266 }: {
267 Hostname: "route53.{region}.c2s.ic.gov",
268 Protocols: []string{"https"},
269 SignatureVersions: []string{"v4"},
270 },
271 },
272 RegionRegex: partitionRegexp.AwsIso,
273 IsRegionalized: false,
274 PartitionEndpoint: "aws-iso-global",
275 Endpoints: endpoints.Endpoints{
276 endpoints.EndpointKey{
277 Region: "aws-iso-global",
278 }: endpoints.Endpoint{
279 Hostname: "route53.c2s.ic.gov",
280 CredentialScope: endpoints.CredentialScope{
281 Region: "us-iso-east-1",
282 },
283 },
284 },
285 },
286 {
287 ID: "aws-iso-b",
288 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
289 {
290 Variant: endpoints.FIPSVariant,
291 }: {
292 Hostname: "route53-fips.{region}.sc2s.sgov.gov",
293 Protocols: []string{"https"},
294 SignatureVersions: []string{"v4"},
295 },
296 {
297 Variant: 0,
298 }: {
299 Hostname: "route53.{region}.sc2s.sgov.gov",
300 Protocols: []string{"https"},
301 SignatureVersions: []string{"v4"},
302 },
303 },
304 RegionRegex: partitionRegexp.AwsIsoB,
305 IsRegionalized: false,
306 PartitionEndpoint: "aws-iso-b-global",
307 Endpoints: endpoints.Endpoints{
308 endpoints.EndpointKey{
309 Region: "aws-iso-b-global",
310 }: endpoints.Endpoint{
311 Hostname: "route53.sc2s.sgov.gov",
312 CredentialScope: endpoints.CredentialScope{
313 Region: "us-isob-east-1",
314 },
315 },
316 },
317 },
318 {
319 ID: "aws-iso-e",
320 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
321 {
322 Variant: endpoints.FIPSVariant,
323 }: {
324 Hostname: "route53-fips.{region}.cloud.adc-e.uk",
325 Protocols: []string{"https"},
326 SignatureVersions: []string{"v4"},
327 },
328 {
329 Variant: 0,
330 }: {
331 Hostname: "route53.{region}.cloud.adc-e.uk",
332 Protocols: []string{"https"},
333 SignatureVersions: []string{"v4"},
334 },
335 },
336 RegionRegex: partitionRegexp.AwsIsoE,
337 IsRegionalized: false,
338 PartitionEndpoint: "aws-iso-e-global",
339 Endpoints: endpoints.Endpoints{
340 endpoints.EndpointKey{
341 Region: "aws-iso-e-global",
342 }: endpoints.Endpoint{
343 Hostname: "route53.cloud.adc-e.uk",
344 CredentialScope: endpoints.CredentialScope{
345 Region: "eu-isoe-west-1",
346 },
347 },
348 },
349 },
350 {
351 ID: "aws-iso-f",
352 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
353 {
354 Variant: endpoints.FIPSVariant,
355 }: {
356 Hostname: "route53-fips.{region}.csp.hci.ic.gov",
357 Protocols: []string{"https"},
358 SignatureVersions: []string{"v4"},
359 },
360 {
361 Variant: 0,
362 }: {
363 Hostname: "route53.{region}.csp.hci.ic.gov",
364 Protocols: []string{"https"},
365 SignatureVersions: []string{"v4"},
366 },
367 },
368 RegionRegex: partitionRegexp.AwsIsoF,
369 IsRegionalized: false,
370 PartitionEndpoint: "aws-iso-f-global",
371 Endpoints: endpoints.Endpoints{
372 endpoints.EndpointKey{
373 Region: "aws-iso-f-global",
374 }: endpoints.Endpoint{
375 Hostname: "route53.csp.hci.ic.gov",
376 CredentialScope: endpoints.CredentialScope{
377 Region: "us-isof-south-1",
378 },
379 },
380 },
381 },
382 {
383 ID: "aws-us-gov",
384 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
385 {
386 Variant: endpoints.DualStackVariant,
387 }: {
388 Hostname: "route53.{region}.api.aws",
389 Protocols: []string{"https"},
390 SignatureVersions: []string{"v4"},
391 },
392 {
393 Variant: endpoints.FIPSVariant,
394 }: {
395 Hostname: "route53-fips.{region}.amazonaws.com",
396 Protocols: []string{"https"},
397 SignatureVersions: []string{"v4"},
398 },
399 {
400 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
401 }: {
402 Hostname: "route53-fips.{region}.api.aws",
403 Protocols: []string{"https"},
404 SignatureVersions: []string{"v4"},
405 },
406 {
407 Variant: 0,
408 }: {
409 Hostname: "route53.{region}.amazonaws.com",
410 Protocols: []string{"https"},
411 SignatureVersions: []string{"v4"},
412 },
413 },
414 RegionRegex: partitionRegexp.AwsUsGov,
415 IsRegionalized: false,
416 PartitionEndpoint: "aws-us-gov-global",
417 Endpoints: endpoints.Endpoints{
418 endpoints.EndpointKey{
419 Region: "aws-us-gov-global",
420 }: endpoints.Endpoint{
421 Hostname: "route53.us-gov.amazonaws.com",
422 CredentialScope: endpoints.CredentialScope{
423 Region: "us-gov-west-1",
424 },
425 },
426 endpoints.EndpointKey{
427 Region: "aws-us-gov-global",
428 Variant: endpoints.FIPSVariant,
429 }: {
430 Hostname: "route53.us-gov.amazonaws.com",
431 CredentialScope: endpoints.CredentialScope{
432 Region: "us-gov-west-1",
433 },
434 },
435 endpoints.EndpointKey{
436 Region: "fips-aws-us-gov-global",
437 }: endpoints.Endpoint{
438 Hostname: "route53.us-gov.amazonaws.com",
439 CredentialScope: endpoints.CredentialScope{
440 Region: "us-gov-west-1",
441 },
442 Deprecated: aws.TrueTernary,
443 },
444 },
445 },
446 }
447