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 STS 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: "sts.{region}.api.aws",
116 Protocols: []string{"https"},
117 SignatureVersions: []string{"v4"},
118 },
119 {
120 Variant: endpoints.FIPSVariant,
121 }: {
122 Hostname: "sts-fips.{region}.amazonaws.com",
123 Protocols: []string{"https"},
124 SignatureVersions: []string{"v4"},
125 },
126 {
127 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
128 }: {
129 Hostname: "sts-fips.{region}.api.aws",
130 Protocols: []string{"https"},
131 SignatureVersions: []string{"v4"},
132 },
133 {
134 Variant: 0,
135 }: {
136 Hostname: "sts.{region}.amazonaws.com",
137 Protocols: []string{"https"},
138 SignatureVersions: []string{"v4"},
139 },
140 },
141 RegionRegex: partitionRegexp.Aws,
142 IsRegionalized: true,
143 Endpoints: endpoints.Endpoints{
144 endpoints.EndpointKey{
145 Region: "af-south-1",
146 }: endpoints.Endpoint{},
147 endpoints.EndpointKey{
148 Region: "ap-east-1",
149 }: endpoints.Endpoint{},
150 endpoints.EndpointKey{
151 Region: "ap-east-2",
152 }: endpoints.Endpoint{},
153 endpoints.EndpointKey{
154 Region: "ap-northeast-1",
155 }: endpoints.Endpoint{},
156 endpoints.EndpointKey{
157 Region: "ap-northeast-2",
158 }: endpoints.Endpoint{},
159 endpoints.EndpointKey{
160 Region: "ap-northeast-3",
161 }: endpoints.Endpoint{},
162 endpoints.EndpointKey{
163 Region: "ap-south-1",
164 }: endpoints.Endpoint{},
165 endpoints.EndpointKey{
166 Region: "ap-south-2",
167 }: endpoints.Endpoint{},
168 endpoints.EndpointKey{
169 Region: "ap-southeast-1",
170 }: endpoints.Endpoint{},
171 endpoints.EndpointKey{
172 Region: "ap-southeast-2",
173 }: endpoints.Endpoint{},
174 endpoints.EndpointKey{
175 Region: "ap-southeast-3",
176 }: endpoints.Endpoint{},
177 endpoints.EndpointKey{
178 Region: "ap-southeast-4",
179 }: endpoints.Endpoint{},
180 endpoints.EndpointKey{
181 Region: "ap-southeast-5",
182 }: endpoints.Endpoint{},
183 endpoints.EndpointKey{
184 Region: "ap-southeast-6",
185 }: endpoints.Endpoint{},
186 endpoints.EndpointKey{
187 Region: "ap-southeast-7",
188 }: endpoints.Endpoint{},
189 endpoints.EndpointKey{
190 Region: "aws-global",
191 }: endpoints.Endpoint{
192 Hostname: "sts.amazonaws.com",
193 CredentialScope: endpoints.CredentialScope{
194 Region: "us-east-1",
195 },
196 },
197 endpoints.EndpointKey{
198 Region: "ca-central-1",
199 }: endpoints.Endpoint{},
200 endpoints.EndpointKey{
201 Region: "ca-west-1",
202 }: endpoints.Endpoint{},
203 endpoints.EndpointKey{
204 Region: "eu-central-1",
205 }: endpoints.Endpoint{},
206 endpoints.EndpointKey{
207 Region: "eu-central-2",
208 }: endpoints.Endpoint{},
209 endpoints.EndpointKey{
210 Region: "eu-north-1",
211 }: endpoints.Endpoint{},
212 endpoints.EndpointKey{
213 Region: "eu-south-1",
214 }: endpoints.Endpoint{},
215 endpoints.EndpointKey{
216 Region: "eu-south-2",
217 }: endpoints.Endpoint{},
218 endpoints.EndpointKey{
219 Region: "eu-west-1",
220 }: endpoints.Endpoint{},
221 endpoints.EndpointKey{
222 Region: "eu-west-2",
223 }: endpoints.Endpoint{},
224 endpoints.EndpointKey{
225 Region: "eu-west-3",
226 }: endpoints.Endpoint{},
227 endpoints.EndpointKey{
228 Region: "il-central-1",
229 }: endpoints.Endpoint{},
230 endpoints.EndpointKey{
231 Region: "me-central-1",
232 }: endpoints.Endpoint{},
233 endpoints.EndpointKey{
234 Region: "me-south-1",
235 }: endpoints.Endpoint{},
236 endpoints.EndpointKey{
237 Region: "mx-central-1",
238 }: endpoints.Endpoint{},
239 endpoints.EndpointKey{
240 Region: "sa-east-1",
241 }: endpoints.Endpoint{},
242 endpoints.EndpointKey{
243 Region: "us-east-1",
244 }: endpoints.Endpoint{},
245 endpoints.EndpointKey{
246 Region: "us-east-1",
247 Variant: endpoints.FIPSVariant,
248 }: {
249 Hostname: "sts-fips.us-east-1.amazonaws.com",
250 },
251 endpoints.EndpointKey{
252 Region: "us-east-1-fips",
253 }: endpoints.Endpoint{
254 Hostname: "sts-fips.us-east-1.amazonaws.com",
255 CredentialScope: endpoints.CredentialScope{
256 Region: "us-east-1",
257 },
258 Deprecated: aws.TrueTernary,
259 },
260 endpoints.EndpointKey{
261 Region: "us-east-2",
262 }: endpoints.Endpoint{},
263 endpoints.EndpointKey{
264 Region: "us-east-2",
265 Variant: endpoints.FIPSVariant,
266 }: {
267 Hostname: "sts-fips.us-east-2.amazonaws.com",
268 },
269 endpoints.EndpointKey{
270 Region: "us-east-2-fips",
271 }: endpoints.Endpoint{
272 Hostname: "sts-fips.us-east-2.amazonaws.com",
273 CredentialScope: endpoints.CredentialScope{
274 Region: "us-east-2",
275 },
276 Deprecated: aws.TrueTernary,
277 },
278 endpoints.EndpointKey{
279 Region: "us-west-1",
280 }: endpoints.Endpoint{},
281 endpoints.EndpointKey{
282 Region: "us-west-1",
283 Variant: endpoints.FIPSVariant,
284 }: {
285 Hostname: "sts-fips.us-west-1.amazonaws.com",
286 },
287 endpoints.EndpointKey{
288 Region: "us-west-1-fips",
289 }: endpoints.Endpoint{
290 Hostname: "sts-fips.us-west-1.amazonaws.com",
291 CredentialScope: endpoints.CredentialScope{
292 Region: "us-west-1",
293 },
294 Deprecated: aws.TrueTernary,
295 },
296 endpoints.EndpointKey{
297 Region: "us-west-2",
298 }: endpoints.Endpoint{},
299 endpoints.EndpointKey{
300 Region: "us-west-2",
301 Variant: endpoints.FIPSVariant,
302 }: {
303 Hostname: "sts-fips.us-west-2.amazonaws.com",
304 },
305 endpoints.EndpointKey{
306 Region: "us-west-2-fips",
307 }: endpoints.Endpoint{
308 Hostname: "sts-fips.us-west-2.amazonaws.com",
309 CredentialScope: endpoints.CredentialScope{
310 Region: "us-west-2",
311 },
312 Deprecated: aws.TrueTernary,
313 },
314 },
315 },
316 {
317 ID: "aws-cn",
318 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
319 {
320 Variant: endpoints.DualStackVariant,
321 }: {
322 Hostname: "sts.{region}.api.amazonwebservices.com.cn",
323 Protocols: []string{"https"},
324 SignatureVersions: []string{"v4"},
325 },
326 {
327 Variant: endpoints.FIPSVariant,
328 }: {
329 Hostname: "sts-fips.{region}.amazonaws.com.cn",
330 Protocols: []string{"https"},
331 SignatureVersions: []string{"v4"},
332 },
333 {
334 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
335 }: {
336 Hostname: "sts-fips.{region}.api.amazonwebservices.com.cn",
337 Protocols: []string{"https"},
338 SignatureVersions: []string{"v4"},
339 },
340 {
341 Variant: 0,
342 }: {
343 Hostname: "sts.{region}.amazonaws.com.cn",
344 Protocols: []string{"https"},
345 SignatureVersions: []string{"v4"},
346 },
347 },
348 RegionRegex: partitionRegexp.AwsCn,
349 IsRegionalized: true,
350 Endpoints: endpoints.Endpoints{
351 endpoints.EndpointKey{
352 Region: "cn-north-1",
353 }: endpoints.Endpoint{},
354 endpoints.EndpointKey{
355 Region: "cn-northwest-1",
356 }: endpoints.Endpoint{},
357 },
358 },
359 {
360 ID: "aws-eusc",
361 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
362 {
363 Variant: endpoints.DualStackVariant,
364 }: {
365 Hostname: "sts.{region}.api.amazonwebservices.eu",
366 Protocols: []string{"https"},
367 SignatureVersions: []string{"v4"},
368 },
369 {
370 Variant: endpoints.FIPSVariant,
371 }: {
372 Hostname: "sts-fips.{region}.amazonaws.eu",
373 Protocols: []string{"https"},
374 SignatureVersions: []string{"v4"},
375 },
376 {
377 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
378 }: {
379 Hostname: "sts-fips.{region}.api.amazonwebservices.eu",
380 Protocols: []string{"https"},
381 SignatureVersions: []string{"v4"},
382 },
383 {
384 Variant: 0,
385 }: {
386 Hostname: "sts.{region}.amazonaws.eu",
387 Protocols: []string{"https"},
388 SignatureVersions: []string{"v4"},
389 },
390 },
391 RegionRegex: partitionRegexp.AwsEusc,
392 IsRegionalized: true,
393 Endpoints: endpoints.Endpoints{
394 endpoints.EndpointKey{
395 Region: "eusc-de-east-1",
396 }: endpoints.Endpoint{},
397 },
398 },
399 {
400 ID: "aws-iso",
401 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
402 {
403 Variant: endpoints.FIPSVariant,
404 }: {
405 Hostname: "sts-fips.{region}.c2s.ic.gov",
406 Protocols: []string{"https"},
407 SignatureVersions: []string{"v4"},
408 },
409 {
410 Variant: 0,
411 }: {
412 Hostname: "sts.{region}.c2s.ic.gov",
413 Protocols: []string{"https"},
414 SignatureVersions: []string{"v4"},
415 },
416 },
417 RegionRegex: partitionRegexp.AwsIso,
418 IsRegionalized: true,
419 Endpoints: endpoints.Endpoints{
420 endpoints.EndpointKey{
421 Region: "us-iso-east-1",
422 }: endpoints.Endpoint{},
423 endpoints.EndpointKey{
424 Region: "us-iso-west-1",
425 }: endpoints.Endpoint{},
426 },
427 },
428 {
429 ID: "aws-iso-b",
430 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
431 {
432 Variant: endpoints.FIPSVariant,
433 }: {
434 Hostname: "sts-fips.{region}.sc2s.sgov.gov",
435 Protocols: []string{"https"},
436 SignatureVersions: []string{"v4"},
437 },
438 {
439 Variant: 0,
440 }: {
441 Hostname: "sts.{region}.sc2s.sgov.gov",
442 Protocols: []string{"https"},
443 SignatureVersions: []string{"v4"},
444 },
445 },
446 RegionRegex: partitionRegexp.AwsIsoB,
447 IsRegionalized: true,
448 Endpoints: endpoints.Endpoints{
449 endpoints.EndpointKey{
450 Region: "us-isob-east-1",
451 }: endpoints.Endpoint{},
452 endpoints.EndpointKey{
453 Region: "us-isob-west-1",
454 }: endpoints.Endpoint{},
455 },
456 },
457 {
458 ID: "aws-iso-e",
459 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
460 {
461 Variant: endpoints.FIPSVariant,
462 }: {
463 Hostname: "sts-fips.{region}.cloud.adc-e.uk",
464 Protocols: []string{"https"},
465 SignatureVersions: []string{"v4"},
466 },
467 {
468 Variant: 0,
469 }: {
470 Hostname: "sts.{region}.cloud.adc-e.uk",
471 Protocols: []string{"https"},
472 SignatureVersions: []string{"v4"},
473 },
474 },
475 RegionRegex: partitionRegexp.AwsIsoE,
476 IsRegionalized: true,
477 Endpoints: endpoints.Endpoints{
478 endpoints.EndpointKey{
479 Region: "eu-isoe-west-1",
480 }: endpoints.Endpoint{},
481 },
482 },
483 {
484 ID: "aws-iso-f",
485 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
486 {
487 Variant: endpoints.FIPSVariant,
488 }: {
489 Hostname: "sts-fips.{region}.csp.hci.ic.gov",
490 Protocols: []string{"https"},
491 SignatureVersions: []string{"v4"},
492 },
493 {
494 Variant: 0,
495 }: {
496 Hostname: "sts.{region}.csp.hci.ic.gov",
497 Protocols: []string{"https"},
498 SignatureVersions: []string{"v4"},
499 },
500 },
501 RegionRegex: partitionRegexp.AwsIsoF,
502 IsRegionalized: true,
503 Endpoints: endpoints.Endpoints{
504 endpoints.EndpointKey{
505 Region: "us-isof-east-1",
506 }: endpoints.Endpoint{},
507 endpoints.EndpointKey{
508 Region: "us-isof-south-1",
509 }: endpoints.Endpoint{},
510 },
511 },
512 {
513 ID: "aws-us-gov",
514 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
515 {
516 Variant: endpoints.DualStackVariant,
517 }: {
518 Hostname: "sts.{region}.api.aws",
519 Protocols: []string{"https"},
520 SignatureVersions: []string{"v4"},
521 },
522 {
523 Variant: endpoints.FIPSVariant,
524 }: {
525 Hostname: "sts.{region}.amazonaws.com",
526 Protocols: []string{"https"},
527 SignatureVersions: []string{"v4"},
528 },
529 {
530 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
531 }: {
532 Hostname: "sts-fips.{region}.api.aws",
533 Protocols: []string{"https"},
534 SignatureVersions: []string{"v4"},
535 },
536 {
537 Variant: 0,
538 }: {
539 Hostname: "sts.{region}.amazonaws.com",
540 Protocols: []string{"https"},
541 SignatureVersions: []string{"v4"},
542 },
543 },
544 RegionRegex: partitionRegexp.AwsUsGov,
545 IsRegionalized: true,
546 Endpoints: endpoints.Endpoints{
547 endpoints.EndpointKey{
548 Region: "us-gov-east-1",
549 }: endpoints.Endpoint{},
550 endpoints.EndpointKey{
551 Region: "us-gov-east-1",
552 Variant: endpoints.FIPSVariant,
553 }: {
554 Hostname: "sts.us-gov-east-1.amazonaws.com",
555 },
556 endpoints.EndpointKey{
557 Region: "us-gov-east-1-fips",
558 }: endpoints.Endpoint{
559 Hostname: "sts.us-gov-east-1.amazonaws.com",
560 CredentialScope: endpoints.CredentialScope{
561 Region: "us-gov-east-1",
562 },
563 Deprecated: aws.TrueTernary,
564 },
565 endpoints.EndpointKey{
566 Region: "us-gov-west-1",
567 }: endpoints.Endpoint{},
568 endpoints.EndpointKey{
569 Region: "us-gov-west-1",
570 Variant: endpoints.FIPSVariant,
571 }: {
572 Hostname: "sts.us-gov-west-1.amazonaws.com",
573 },
574 endpoints.EndpointKey{
575 Region: "us-gov-west-1-fips",
576 }: endpoints.Endpoint{
577 Hostname: "sts.us-gov-west-1.amazonaws.com",
578 CredentialScope: endpoints.CredentialScope{
579 Region: "us-gov-west-1",
580 },
581 Deprecated: aws.TrueTernary,
582 },
583 },
584 },
585 }
586