src

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

endpoints.go (15274B)


      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.FIPSVariant,
    364 			}: {
    365 				Hostname:          "sts-fips.{region}.amazonaws.eu",
    366 				Protocols:         []string{"https"},
    367 				SignatureVersions: []string{"v4"},
    368 			},
    369 			{
    370 				Variant: 0,
    371 			}: {
    372 				Hostname:          "sts.{region}.amazonaws.eu",
    373 				Protocols:         []string{"https"},
    374 				SignatureVersions: []string{"v4"},
    375 			},
    376 		},
    377 		RegionRegex:    partitionRegexp.AwsEusc,
    378 		IsRegionalized: true,
    379 	},
    380 	{
    381 		ID: "aws-iso",
    382 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    383 			{
    384 				Variant: endpoints.FIPSVariant,
    385 			}: {
    386 				Hostname:          "sts-fips.{region}.c2s.ic.gov",
    387 				Protocols:         []string{"https"},
    388 				SignatureVersions: []string{"v4"},
    389 			},
    390 			{
    391 				Variant: 0,
    392 			}: {
    393 				Hostname:          "sts.{region}.c2s.ic.gov",
    394 				Protocols:         []string{"https"},
    395 				SignatureVersions: []string{"v4"},
    396 			},
    397 		},
    398 		RegionRegex:    partitionRegexp.AwsIso,
    399 		IsRegionalized: true,
    400 		Endpoints: endpoints.Endpoints{
    401 			endpoints.EndpointKey{
    402 				Region: "us-iso-east-1",
    403 			}: endpoints.Endpoint{},
    404 			endpoints.EndpointKey{
    405 				Region: "us-iso-west-1",
    406 			}: endpoints.Endpoint{},
    407 		},
    408 	},
    409 	{
    410 		ID: "aws-iso-b",
    411 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    412 			{
    413 				Variant: endpoints.FIPSVariant,
    414 			}: {
    415 				Hostname:          "sts-fips.{region}.sc2s.sgov.gov",
    416 				Protocols:         []string{"https"},
    417 				SignatureVersions: []string{"v4"},
    418 			},
    419 			{
    420 				Variant: 0,
    421 			}: {
    422 				Hostname:          "sts.{region}.sc2s.sgov.gov",
    423 				Protocols:         []string{"https"},
    424 				SignatureVersions: []string{"v4"},
    425 			},
    426 		},
    427 		RegionRegex:    partitionRegexp.AwsIsoB,
    428 		IsRegionalized: true,
    429 		Endpoints: endpoints.Endpoints{
    430 			endpoints.EndpointKey{
    431 				Region: "us-isob-east-1",
    432 			}: endpoints.Endpoint{},
    433 			endpoints.EndpointKey{
    434 				Region: "us-isob-west-1",
    435 			}: endpoints.Endpoint{},
    436 		},
    437 	},
    438 	{
    439 		ID: "aws-iso-e",
    440 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    441 			{
    442 				Variant: endpoints.FIPSVariant,
    443 			}: {
    444 				Hostname:          "sts-fips.{region}.cloud.adc-e.uk",
    445 				Protocols:         []string{"https"},
    446 				SignatureVersions: []string{"v4"},
    447 			},
    448 			{
    449 				Variant: 0,
    450 			}: {
    451 				Hostname:          "sts.{region}.cloud.adc-e.uk",
    452 				Protocols:         []string{"https"},
    453 				SignatureVersions: []string{"v4"},
    454 			},
    455 		},
    456 		RegionRegex:    partitionRegexp.AwsIsoE,
    457 		IsRegionalized: true,
    458 		Endpoints: endpoints.Endpoints{
    459 			endpoints.EndpointKey{
    460 				Region: "eu-isoe-west-1",
    461 			}: endpoints.Endpoint{},
    462 		},
    463 	},
    464 	{
    465 		ID: "aws-iso-f",
    466 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    467 			{
    468 				Variant: endpoints.FIPSVariant,
    469 			}: {
    470 				Hostname:          "sts-fips.{region}.csp.hci.ic.gov",
    471 				Protocols:         []string{"https"},
    472 				SignatureVersions: []string{"v4"},
    473 			},
    474 			{
    475 				Variant: 0,
    476 			}: {
    477 				Hostname:          "sts.{region}.csp.hci.ic.gov",
    478 				Protocols:         []string{"https"},
    479 				SignatureVersions: []string{"v4"},
    480 			},
    481 		},
    482 		RegionRegex:    partitionRegexp.AwsIsoF,
    483 		IsRegionalized: true,
    484 		Endpoints: endpoints.Endpoints{
    485 			endpoints.EndpointKey{
    486 				Region: "us-isof-east-1",
    487 			}: endpoints.Endpoint{},
    488 			endpoints.EndpointKey{
    489 				Region: "us-isof-south-1",
    490 			}: endpoints.Endpoint{},
    491 		},
    492 	},
    493 	{
    494 		ID: "aws-us-gov",
    495 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    496 			{
    497 				Variant: endpoints.DualStackVariant,
    498 			}: {
    499 				Hostname:          "sts.{region}.api.aws",
    500 				Protocols:         []string{"https"},
    501 				SignatureVersions: []string{"v4"},
    502 			},
    503 			{
    504 				Variant: endpoints.FIPSVariant,
    505 			}: {
    506 				Hostname:          "sts.{region}.amazonaws.com",
    507 				Protocols:         []string{"https"},
    508 				SignatureVersions: []string{"v4"},
    509 			},
    510 			{
    511 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    512 			}: {
    513 				Hostname:          "sts-fips.{region}.api.aws",
    514 				Protocols:         []string{"https"},
    515 				SignatureVersions: []string{"v4"},
    516 			},
    517 			{
    518 				Variant: 0,
    519 			}: {
    520 				Hostname:          "sts.{region}.amazonaws.com",
    521 				Protocols:         []string{"https"},
    522 				SignatureVersions: []string{"v4"},
    523 			},
    524 		},
    525 		RegionRegex:    partitionRegexp.AwsUsGov,
    526 		IsRegionalized: true,
    527 		Endpoints: endpoints.Endpoints{
    528 			endpoints.EndpointKey{
    529 				Region: "us-gov-east-1",
    530 			}: endpoints.Endpoint{},
    531 			endpoints.EndpointKey{
    532 				Region:  "us-gov-east-1",
    533 				Variant: endpoints.FIPSVariant,
    534 			}: {
    535 				Hostname: "sts.us-gov-east-1.amazonaws.com",
    536 			},
    537 			endpoints.EndpointKey{
    538 				Region: "us-gov-east-1-fips",
    539 			}: endpoints.Endpoint{
    540 				Hostname: "sts.us-gov-east-1.amazonaws.com",
    541 				CredentialScope: endpoints.CredentialScope{
    542 					Region: "us-gov-east-1",
    543 				},
    544 				Deprecated: aws.TrueTernary,
    545 			},
    546 			endpoints.EndpointKey{
    547 				Region: "us-gov-west-1",
    548 			}: endpoints.Endpoint{},
    549 			endpoints.EndpointKey{
    550 				Region:  "us-gov-west-1",
    551 				Variant: endpoints.FIPSVariant,
    552 			}: {
    553 				Hostname: "sts.us-gov-west-1.amazonaws.com",
    554 			},
    555 			endpoints.EndpointKey{
    556 				Region: "us-gov-west-1-fips",
    557 			}: endpoints.Endpoint{
    558 				Hostname: "sts.us-gov-west-1.amazonaws.com",
    559 				CredentialScope: endpoints.CredentialScope{
    560 					Region: "us-gov-west-1",
    561 				},
    562 				Deprecated: aws.TrueTernary,
    563 			},
    564 		},
    565 	},
    566 }