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