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 }