src

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

endpoints.go (12298B)


      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 Route 53 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:          "route53.{region}.api.aws",
    117 				Protocols:         []string{"https"},
    118 				SignatureVersions: []string{"v4"},
    119 			},
    120 			{
    121 				Variant: endpoints.FIPSVariant,
    122 			}: {
    123 				Hostname:          "route53-fips.{region}.amazonaws.com",
    124 				Protocols:         []string{"https"},
    125 				SignatureVersions: []string{"v4"},
    126 			},
    127 			{
    128 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    129 			}: {
    130 				Hostname:          "route53-fips.{region}.api.aws",
    131 				Protocols:         []string{"https"},
    132 				SignatureVersions: []string{"v4"},
    133 			},
    134 			{
    135 				Variant: 0,
    136 			}: {
    137 				Hostname:          "route53.{region}.amazonaws.com",
    138 				Protocols:         []string{"https"},
    139 				SignatureVersions: []string{"v4"},
    140 			},
    141 		},
    142 		RegionRegex:       partitionRegexp.Aws,
    143 		IsRegionalized:    false,
    144 		PartitionEndpoint: "aws-global",
    145 		Endpoints: endpoints.Endpoints{
    146 			endpoints.EndpointKey{
    147 				Region: "aws-global",
    148 			}: endpoints.Endpoint{
    149 				Hostname: "route53.amazonaws.com",
    150 				CredentialScope: endpoints.CredentialScope{
    151 					Region: "us-east-1",
    152 				},
    153 			},
    154 			endpoints.EndpointKey{
    155 				Region:  "aws-global",
    156 				Variant: endpoints.FIPSVariant,
    157 			}: {
    158 				Hostname: "route53-fips.amazonaws.com",
    159 				CredentialScope: endpoints.CredentialScope{
    160 					Region: "us-east-1",
    161 				},
    162 			},
    163 			endpoints.EndpointKey{
    164 				Region: "fips-aws-global",
    165 			}: endpoints.Endpoint{
    166 				Hostname: "route53-fips.amazonaws.com",
    167 				CredentialScope: endpoints.CredentialScope{
    168 					Region: "us-east-1",
    169 				},
    170 				Deprecated: aws.TrueTernary,
    171 			},
    172 		},
    173 	},
    174 	{
    175 		ID: "aws-cn",
    176 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    177 			{
    178 				Variant: endpoints.DualStackVariant,
    179 			}: {
    180 				Hostname:          "route53.{region}.api.amazonwebservices.com.cn",
    181 				Protocols:         []string{"https"},
    182 				SignatureVersions: []string{"v4"},
    183 			},
    184 			{
    185 				Variant: endpoints.FIPSVariant,
    186 			}: {
    187 				Hostname:          "route53-fips.{region}.amazonaws.com.cn",
    188 				Protocols:         []string{"https"},
    189 				SignatureVersions: []string{"v4"},
    190 			},
    191 			{
    192 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    193 			}: {
    194 				Hostname:          "route53-fips.{region}.api.amazonwebservices.com.cn",
    195 				Protocols:         []string{"https"},
    196 				SignatureVersions: []string{"v4"},
    197 			},
    198 			{
    199 				Variant: 0,
    200 			}: {
    201 				Hostname:          "route53.{region}.amazonaws.com.cn",
    202 				Protocols:         []string{"https"},
    203 				SignatureVersions: []string{"v4"},
    204 			},
    205 		},
    206 		RegionRegex:       partitionRegexp.AwsCn,
    207 		IsRegionalized:    false,
    208 		PartitionEndpoint: "aws-cn-global",
    209 		Endpoints: endpoints.Endpoints{
    210 			endpoints.EndpointKey{
    211 				Region: "aws-cn-global",
    212 			}: endpoints.Endpoint{
    213 				Hostname: "route53.amazonaws.com.cn",
    214 				CredentialScope: endpoints.CredentialScope{
    215 					Region: "cn-northwest-1",
    216 				},
    217 			},
    218 		},
    219 	},
    220 	{
    221 		ID: "aws-eusc",
    222 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    223 			{
    224 				Variant: endpoints.DualStackVariant,
    225 			}: {
    226 				Hostname:          "route53.{region}.api.amazonwebservices.eu",
    227 				Protocols:         []string{"https"},
    228 				SignatureVersions: []string{"v4"},
    229 			},
    230 			{
    231 				Variant: endpoints.FIPSVariant,
    232 			}: {
    233 				Hostname:          "route53-fips.{region}.amazonaws.eu",
    234 				Protocols:         []string{"https"},
    235 				SignatureVersions: []string{"v4"},
    236 			},
    237 			{
    238 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    239 			}: {
    240 				Hostname:          "route53-fips.{region}.api.amazonwebservices.eu",
    241 				Protocols:         []string{"https"},
    242 				SignatureVersions: []string{"v4"},
    243 			},
    244 			{
    245 				Variant: 0,
    246 			}: {
    247 				Hostname:          "route53.{region}.amazonaws.eu",
    248 				Protocols:         []string{"https"},
    249 				SignatureVersions: []string{"v4"},
    250 			},
    251 		},
    252 		RegionRegex:    partitionRegexp.AwsEusc,
    253 		IsRegionalized: true,
    254 	},
    255 	{
    256 		ID: "aws-iso",
    257 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    258 			{
    259 				Variant: endpoints.FIPSVariant,
    260 			}: {
    261 				Hostname:          "route53-fips.{region}.c2s.ic.gov",
    262 				Protocols:         []string{"https"},
    263 				SignatureVersions: []string{"v4"},
    264 			},
    265 			{
    266 				Variant: 0,
    267 			}: {
    268 				Hostname:          "route53.{region}.c2s.ic.gov",
    269 				Protocols:         []string{"https"},
    270 				SignatureVersions: []string{"v4"},
    271 			},
    272 		},
    273 		RegionRegex:       partitionRegexp.AwsIso,
    274 		IsRegionalized:    false,
    275 		PartitionEndpoint: "aws-iso-global",
    276 		Endpoints: endpoints.Endpoints{
    277 			endpoints.EndpointKey{
    278 				Region: "aws-iso-global",
    279 			}: endpoints.Endpoint{
    280 				Hostname: "route53.c2s.ic.gov",
    281 				CredentialScope: endpoints.CredentialScope{
    282 					Region: "us-iso-east-1",
    283 				},
    284 			},
    285 		},
    286 	},
    287 	{
    288 		ID: "aws-iso-b",
    289 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    290 			{
    291 				Variant: endpoints.FIPSVariant,
    292 			}: {
    293 				Hostname:          "route53-fips.{region}.sc2s.sgov.gov",
    294 				Protocols:         []string{"https"},
    295 				SignatureVersions: []string{"v4"},
    296 			},
    297 			{
    298 				Variant: 0,
    299 			}: {
    300 				Hostname:          "route53.{region}.sc2s.sgov.gov",
    301 				Protocols:         []string{"https"},
    302 				SignatureVersions: []string{"v4"},
    303 			},
    304 		},
    305 		RegionRegex:       partitionRegexp.AwsIsoB,
    306 		IsRegionalized:    false,
    307 		PartitionEndpoint: "aws-iso-b-global",
    308 		Endpoints: endpoints.Endpoints{
    309 			endpoints.EndpointKey{
    310 				Region: "aws-iso-b-global",
    311 			}: endpoints.Endpoint{
    312 				Hostname: "route53.sc2s.sgov.gov",
    313 				CredentialScope: endpoints.CredentialScope{
    314 					Region: "us-isob-east-1",
    315 				},
    316 			},
    317 		},
    318 	},
    319 	{
    320 		ID: "aws-iso-e",
    321 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    322 			{
    323 				Variant: endpoints.FIPSVariant,
    324 			}: {
    325 				Hostname:          "route53-fips.{region}.cloud.adc-e.uk",
    326 				Protocols:         []string{"https"},
    327 				SignatureVersions: []string{"v4"},
    328 			},
    329 			{
    330 				Variant: 0,
    331 			}: {
    332 				Hostname:          "route53.{region}.cloud.adc-e.uk",
    333 				Protocols:         []string{"https"},
    334 				SignatureVersions: []string{"v4"},
    335 			},
    336 		},
    337 		RegionRegex:       partitionRegexp.AwsIsoE,
    338 		IsRegionalized:    false,
    339 		PartitionEndpoint: "aws-iso-e-global",
    340 		Endpoints: endpoints.Endpoints{
    341 			endpoints.EndpointKey{
    342 				Region: "aws-iso-e-global",
    343 			}: endpoints.Endpoint{
    344 				Hostname: "route53.cloud.adc-e.uk",
    345 				CredentialScope: endpoints.CredentialScope{
    346 					Region: "eu-isoe-west-1",
    347 				},
    348 			},
    349 		},
    350 	},
    351 	{
    352 		ID: "aws-iso-f",
    353 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    354 			{
    355 				Variant: endpoints.FIPSVariant,
    356 			}: {
    357 				Hostname:          "route53-fips.{region}.csp.hci.ic.gov",
    358 				Protocols:         []string{"https"},
    359 				SignatureVersions: []string{"v4"},
    360 			},
    361 			{
    362 				Variant: 0,
    363 			}: {
    364 				Hostname:          "route53.{region}.csp.hci.ic.gov",
    365 				Protocols:         []string{"https"},
    366 				SignatureVersions: []string{"v4"},
    367 			},
    368 		},
    369 		RegionRegex:       partitionRegexp.AwsIsoF,
    370 		IsRegionalized:    false,
    371 		PartitionEndpoint: "aws-iso-f-global",
    372 		Endpoints: endpoints.Endpoints{
    373 			endpoints.EndpointKey{
    374 				Region: "aws-iso-f-global",
    375 			}: endpoints.Endpoint{
    376 				Hostname: "route53.csp.hci.ic.gov",
    377 				CredentialScope: endpoints.CredentialScope{
    378 					Region: "us-isof-south-1",
    379 				},
    380 			},
    381 		},
    382 	},
    383 	{
    384 		ID: "aws-us-gov",
    385 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    386 			{
    387 				Variant: endpoints.DualStackVariant,
    388 			}: {
    389 				Hostname:          "route53.{region}.api.aws",
    390 				Protocols:         []string{"https"},
    391 				SignatureVersions: []string{"v4"},
    392 			},
    393 			{
    394 				Variant: endpoints.FIPSVariant,
    395 			}: {
    396 				Hostname:          "route53-fips.{region}.amazonaws.com",
    397 				Protocols:         []string{"https"},
    398 				SignatureVersions: []string{"v4"},
    399 			},
    400 			{
    401 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    402 			}: {
    403 				Hostname:          "route53-fips.{region}.api.aws",
    404 				Protocols:         []string{"https"},
    405 				SignatureVersions: []string{"v4"},
    406 			},
    407 			{
    408 				Variant: 0,
    409 			}: {
    410 				Hostname:          "route53.{region}.amazonaws.com",
    411 				Protocols:         []string{"https"},
    412 				SignatureVersions: []string{"v4"},
    413 			},
    414 		},
    415 		RegionRegex:       partitionRegexp.AwsUsGov,
    416 		IsRegionalized:    false,
    417 		PartitionEndpoint: "aws-us-gov-global",
    418 		Endpoints: endpoints.Endpoints{
    419 			endpoints.EndpointKey{
    420 				Region: "aws-us-gov-global",
    421 			}: endpoints.Endpoint{
    422 				Hostname: "route53.us-gov.amazonaws.com",
    423 				CredentialScope: endpoints.CredentialScope{
    424 					Region: "us-gov-west-1",
    425 				},
    426 			},
    427 			endpoints.EndpointKey{
    428 				Region:  "aws-us-gov-global",
    429 				Variant: endpoints.FIPSVariant,
    430 			}: {
    431 				Hostname: "route53.us-gov.amazonaws.com",
    432 				CredentialScope: endpoints.CredentialScope{
    433 					Region: "us-gov-west-1",
    434 				},
    435 			},
    436 			endpoints.EndpointKey{
    437 				Region: "fips-aws-us-gov-global",
    438 			}: endpoints.Endpoint{
    439 				Hostname: "route53.us-gov.amazonaws.com",
    440 				CredentialScope: endpoints.CredentialScope{
    441 					Region: "us-gov-west-1",
    442 				},
    443 				Deprecated: aws.TrueTernary,
    444 			},
    445 		},
    446 	},
    447 }