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 }