endpoints.go

  1// Code generated by smithy-go-codegen DO NOT EDIT.
  2
  3package endpoints
  4
  5import (
  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
 13type 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
 38func (o Options) GetResolvedRegion() string {
 39	return o.ResolvedRegion
 40}
 41
 42func (o Options) GetDisableHTTPS() bool {
 43	return o.DisableHTTPS
 44}
 45
 46func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState {
 47	return o.UseDualStackEndpoint
 48}
 49
 50func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState {
 51	return o.UseFIPSEndpoint
 52}
 53
 54func 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
 66type Resolver struct {
 67	partitions endpoints.Partitions
 68}
 69
 70// ResolveEndpoint resolves the service endpoint for the given region and options
 71func (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
 81func New() *Resolver {
 82	return &Resolver{
 83		partitions: defaultPartitions,
 84	}
 85}
 86
 87var partitionRegexp = struct {
 88	Aws      *regexp.Regexp
 89	AwsCn    *regexp.Regexp
 90	AwsIso   *regexp.Regexp
 91	AwsIsoB  *regexp.Regexp
 92	AwsIsoE  *regexp.Regexp
 93	AwsIsoF  *regexp.Regexp
 94	AwsUsGov *regexp.Regexp
 95}{
 96
 97	Aws:      regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$"),
 98	AwsCn:    regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
 99	AwsIso:   regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
100	AwsIsoB:  regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
101	AwsIsoE:  regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"),
102	AwsIsoF:  regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"),
103	AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
104}
105
106var defaultPartitions = endpoints.Partitions{
107	{
108		ID: "aws",
109		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
110			{
111				Variant: endpoints.DualStackVariant,
112			}: {
113				Hostname:          "sts.{region}.api.aws",
114				Protocols:         []string{"https"},
115				SignatureVersions: []string{"v4"},
116			},
117			{
118				Variant: endpoints.FIPSVariant,
119			}: {
120				Hostname:          "sts-fips.{region}.amazonaws.com",
121				Protocols:         []string{"https"},
122				SignatureVersions: []string{"v4"},
123			},
124			{
125				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
126			}: {
127				Hostname:          "sts-fips.{region}.api.aws",
128				Protocols:         []string{"https"},
129				SignatureVersions: []string{"v4"},
130			},
131			{
132				Variant: 0,
133			}: {
134				Hostname:          "sts.{region}.amazonaws.com",
135				Protocols:         []string{"https"},
136				SignatureVersions: []string{"v4"},
137			},
138		},
139		RegionRegex:    partitionRegexp.Aws,
140		IsRegionalized: true,
141		Endpoints: endpoints.Endpoints{
142			endpoints.EndpointKey{
143				Region: "af-south-1",
144			}: endpoints.Endpoint{},
145			endpoints.EndpointKey{
146				Region: "ap-east-1",
147			}: endpoints.Endpoint{},
148			endpoints.EndpointKey{
149				Region: "ap-northeast-1",
150			}: endpoints.Endpoint{},
151			endpoints.EndpointKey{
152				Region: "ap-northeast-2",
153			}: endpoints.Endpoint{},
154			endpoints.EndpointKey{
155				Region: "ap-northeast-3",
156			}: endpoints.Endpoint{},
157			endpoints.EndpointKey{
158				Region: "ap-south-1",
159			}: endpoints.Endpoint{},
160			endpoints.EndpointKey{
161				Region: "ap-south-2",
162			}: endpoints.Endpoint{},
163			endpoints.EndpointKey{
164				Region: "ap-southeast-1",
165			}: endpoints.Endpoint{},
166			endpoints.EndpointKey{
167				Region: "ap-southeast-2",
168			}: endpoints.Endpoint{},
169			endpoints.EndpointKey{
170				Region: "ap-southeast-3",
171			}: endpoints.Endpoint{},
172			endpoints.EndpointKey{
173				Region: "ap-southeast-4",
174			}: endpoints.Endpoint{},
175			endpoints.EndpointKey{
176				Region: "aws-global",
177			}: endpoints.Endpoint{
178				Hostname: "sts.amazonaws.com",
179				CredentialScope: endpoints.CredentialScope{
180					Region: "us-east-1",
181				},
182			},
183			endpoints.EndpointKey{
184				Region: "ca-central-1",
185			}: endpoints.Endpoint{},
186			endpoints.EndpointKey{
187				Region: "ca-west-1",
188			}: endpoints.Endpoint{},
189			endpoints.EndpointKey{
190				Region: "eu-central-1",
191			}: endpoints.Endpoint{},
192			endpoints.EndpointKey{
193				Region: "eu-central-2",
194			}: endpoints.Endpoint{},
195			endpoints.EndpointKey{
196				Region: "eu-north-1",
197			}: endpoints.Endpoint{},
198			endpoints.EndpointKey{
199				Region: "eu-south-1",
200			}: endpoints.Endpoint{},
201			endpoints.EndpointKey{
202				Region: "eu-south-2",
203			}: endpoints.Endpoint{},
204			endpoints.EndpointKey{
205				Region: "eu-west-1",
206			}: endpoints.Endpoint{},
207			endpoints.EndpointKey{
208				Region: "eu-west-2",
209			}: endpoints.Endpoint{},
210			endpoints.EndpointKey{
211				Region: "eu-west-3",
212			}: endpoints.Endpoint{},
213			endpoints.EndpointKey{
214				Region: "il-central-1",
215			}: endpoints.Endpoint{},
216			endpoints.EndpointKey{
217				Region: "me-central-1",
218			}: endpoints.Endpoint{},
219			endpoints.EndpointKey{
220				Region: "me-south-1",
221			}: endpoints.Endpoint{},
222			endpoints.EndpointKey{
223				Region: "sa-east-1",
224			}: endpoints.Endpoint{},
225			endpoints.EndpointKey{
226				Region: "us-east-1",
227			}: endpoints.Endpoint{},
228			endpoints.EndpointKey{
229				Region:  "us-east-1",
230				Variant: endpoints.FIPSVariant,
231			}: {
232				Hostname: "sts-fips.us-east-1.amazonaws.com",
233			},
234			endpoints.EndpointKey{
235				Region: "us-east-1-fips",
236			}: endpoints.Endpoint{
237				Hostname: "sts-fips.us-east-1.amazonaws.com",
238				CredentialScope: endpoints.CredentialScope{
239					Region: "us-east-1",
240				},
241				Deprecated: aws.TrueTernary,
242			},
243			endpoints.EndpointKey{
244				Region: "us-east-2",
245			}: endpoints.Endpoint{},
246			endpoints.EndpointKey{
247				Region:  "us-east-2",
248				Variant: endpoints.FIPSVariant,
249			}: {
250				Hostname: "sts-fips.us-east-2.amazonaws.com",
251			},
252			endpoints.EndpointKey{
253				Region: "us-east-2-fips",
254			}: endpoints.Endpoint{
255				Hostname: "sts-fips.us-east-2.amazonaws.com",
256				CredentialScope: endpoints.CredentialScope{
257					Region: "us-east-2",
258				},
259				Deprecated: aws.TrueTernary,
260			},
261			endpoints.EndpointKey{
262				Region: "us-west-1",
263			}: endpoints.Endpoint{},
264			endpoints.EndpointKey{
265				Region:  "us-west-1",
266				Variant: endpoints.FIPSVariant,
267			}: {
268				Hostname: "sts-fips.us-west-1.amazonaws.com",
269			},
270			endpoints.EndpointKey{
271				Region: "us-west-1-fips",
272			}: endpoints.Endpoint{
273				Hostname: "sts-fips.us-west-1.amazonaws.com",
274				CredentialScope: endpoints.CredentialScope{
275					Region: "us-west-1",
276				},
277				Deprecated: aws.TrueTernary,
278			},
279			endpoints.EndpointKey{
280				Region: "us-west-2",
281			}: endpoints.Endpoint{},
282			endpoints.EndpointKey{
283				Region:  "us-west-2",
284				Variant: endpoints.FIPSVariant,
285			}: {
286				Hostname: "sts-fips.us-west-2.amazonaws.com",
287			},
288			endpoints.EndpointKey{
289				Region: "us-west-2-fips",
290			}: endpoints.Endpoint{
291				Hostname: "sts-fips.us-west-2.amazonaws.com",
292				CredentialScope: endpoints.CredentialScope{
293					Region: "us-west-2",
294				},
295				Deprecated: aws.TrueTernary,
296			},
297		},
298	},
299	{
300		ID: "aws-cn",
301		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
302			{
303				Variant: endpoints.DualStackVariant,
304			}: {
305				Hostname:          "sts.{region}.api.amazonwebservices.com.cn",
306				Protocols:         []string{"https"},
307				SignatureVersions: []string{"v4"},
308			},
309			{
310				Variant: endpoints.FIPSVariant,
311			}: {
312				Hostname:          "sts-fips.{region}.amazonaws.com.cn",
313				Protocols:         []string{"https"},
314				SignatureVersions: []string{"v4"},
315			},
316			{
317				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
318			}: {
319				Hostname:          "sts-fips.{region}.api.amazonwebservices.com.cn",
320				Protocols:         []string{"https"},
321				SignatureVersions: []string{"v4"},
322			},
323			{
324				Variant: 0,
325			}: {
326				Hostname:          "sts.{region}.amazonaws.com.cn",
327				Protocols:         []string{"https"},
328				SignatureVersions: []string{"v4"},
329			},
330		},
331		RegionRegex:    partitionRegexp.AwsCn,
332		IsRegionalized: true,
333		Endpoints: endpoints.Endpoints{
334			endpoints.EndpointKey{
335				Region: "cn-north-1",
336			}: endpoints.Endpoint{},
337			endpoints.EndpointKey{
338				Region: "cn-northwest-1",
339			}: endpoints.Endpoint{},
340		},
341	},
342	{
343		ID: "aws-iso",
344		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
345			{
346				Variant: endpoints.FIPSVariant,
347			}: {
348				Hostname:          "sts-fips.{region}.c2s.ic.gov",
349				Protocols:         []string{"https"},
350				SignatureVersions: []string{"v4"},
351			},
352			{
353				Variant: 0,
354			}: {
355				Hostname:          "sts.{region}.c2s.ic.gov",
356				Protocols:         []string{"https"},
357				SignatureVersions: []string{"v4"},
358			},
359		},
360		RegionRegex:    partitionRegexp.AwsIso,
361		IsRegionalized: true,
362		Endpoints: endpoints.Endpoints{
363			endpoints.EndpointKey{
364				Region: "us-iso-east-1",
365			}: endpoints.Endpoint{},
366			endpoints.EndpointKey{
367				Region: "us-iso-west-1",
368			}: endpoints.Endpoint{},
369		},
370	},
371	{
372		ID: "aws-iso-b",
373		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
374			{
375				Variant: endpoints.FIPSVariant,
376			}: {
377				Hostname:          "sts-fips.{region}.sc2s.sgov.gov",
378				Protocols:         []string{"https"},
379				SignatureVersions: []string{"v4"},
380			},
381			{
382				Variant: 0,
383			}: {
384				Hostname:          "sts.{region}.sc2s.sgov.gov",
385				Protocols:         []string{"https"},
386				SignatureVersions: []string{"v4"},
387			},
388		},
389		RegionRegex:    partitionRegexp.AwsIsoB,
390		IsRegionalized: true,
391		Endpoints: endpoints.Endpoints{
392			endpoints.EndpointKey{
393				Region: "us-isob-east-1",
394			}: endpoints.Endpoint{},
395		},
396	},
397	{
398		ID: "aws-iso-e",
399		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
400			{
401				Variant: endpoints.FIPSVariant,
402			}: {
403				Hostname:          "sts-fips.{region}.cloud.adc-e.uk",
404				Protocols:         []string{"https"},
405				SignatureVersions: []string{"v4"},
406			},
407			{
408				Variant: 0,
409			}: {
410				Hostname:          "sts.{region}.cloud.adc-e.uk",
411				Protocols:         []string{"https"},
412				SignatureVersions: []string{"v4"},
413			},
414		},
415		RegionRegex:    partitionRegexp.AwsIsoE,
416		IsRegionalized: true,
417	},
418	{
419		ID: "aws-iso-f",
420		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
421			{
422				Variant: endpoints.FIPSVariant,
423			}: {
424				Hostname:          "sts-fips.{region}.csp.hci.ic.gov",
425				Protocols:         []string{"https"},
426				SignatureVersions: []string{"v4"},
427			},
428			{
429				Variant: 0,
430			}: {
431				Hostname:          "sts.{region}.csp.hci.ic.gov",
432				Protocols:         []string{"https"},
433				SignatureVersions: []string{"v4"},
434			},
435		},
436		RegionRegex:    partitionRegexp.AwsIsoF,
437		IsRegionalized: true,
438	},
439	{
440		ID: "aws-us-gov",
441		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
442			{
443				Variant: endpoints.DualStackVariant,
444			}: {
445				Hostname:          "sts.{region}.api.aws",
446				Protocols:         []string{"https"},
447				SignatureVersions: []string{"v4"},
448			},
449			{
450				Variant: endpoints.FIPSVariant,
451			}: {
452				Hostname:          "sts.{region}.amazonaws.com",
453				Protocols:         []string{"https"},
454				SignatureVersions: []string{"v4"},
455			},
456			{
457				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
458			}: {
459				Hostname:          "sts-fips.{region}.api.aws",
460				Protocols:         []string{"https"},
461				SignatureVersions: []string{"v4"},
462			},
463			{
464				Variant: 0,
465			}: {
466				Hostname:          "sts.{region}.amazonaws.com",
467				Protocols:         []string{"https"},
468				SignatureVersions: []string{"v4"},
469			},
470		},
471		RegionRegex:    partitionRegexp.AwsUsGov,
472		IsRegionalized: true,
473		Endpoints: endpoints.Endpoints{
474			endpoints.EndpointKey{
475				Region: "us-gov-east-1",
476			}: endpoints.Endpoint{},
477			endpoints.EndpointKey{
478				Region:  "us-gov-east-1",
479				Variant: endpoints.FIPSVariant,
480			}: {
481				Hostname: "sts.us-gov-east-1.amazonaws.com",
482			},
483			endpoints.EndpointKey{
484				Region: "us-gov-east-1-fips",
485			}: endpoints.Endpoint{
486				Hostname: "sts.us-gov-east-1.amazonaws.com",
487				CredentialScope: endpoints.CredentialScope{
488					Region: "us-gov-east-1",
489				},
490				Deprecated: aws.TrueTernary,
491			},
492			endpoints.EndpointKey{
493				Region: "us-gov-west-1",
494			}: endpoints.Endpoint{},
495			endpoints.EndpointKey{
496				Region:  "us-gov-west-1",
497				Variant: endpoints.FIPSVariant,
498			}: {
499				Hostname: "sts.us-gov-west-1.amazonaws.com",
500			},
501			endpoints.EndpointKey{
502				Region: "us-gov-west-1-fips",
503			}: endpoints.Endpoint{
504				Hostname: "sts.us-gov-west-1.amazonaws.com",
505				CredentialScope: endpoints.CredentialScope{
506					Region: "us-gov-west-1",
507				},
508				Deprecated: aws.TrueTernary,
509			},
510		},
511	},
512}