src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

endpoints.go (15837B)


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