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 }