endpoints.go (9199B)
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 Signin 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: "signin.{region}.api.aws", 117 Protocols: []string{"https"}, 118 SignatureVersions: []string{"v4"}, 119 }, 120 { 121 Variant: endpoints.FIPSVariant, 122 }: { 123 Hostname: "signin-fips.{region}.amazonaws.com", 124 Protocols: []string{"https"}, 125 SignatureVersions: []string{"v4"}, 126 }, 127 { 128 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, 129 }: { 130 Hostname: "signin-fips.{region}.api.aws", 131 Protocols: []string{"https"}, 132 SignatureVersions: []string{"v4"}, 133 }, 134 { 135 Variant: 0, 136 }: { 137 Hostname: "signin.{region}.amazonaws.com", 138 Protocols: []string{"https"}, 139 SignatureVersions: []string{"v4"}, 140 }, 141 }, 142 RegionRegex: partitionRegexp.Aws, 143 IsRegionalized: true, 144 }, 145 { 146 ID: "aws-cn", 147 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 148 { 149 Variant: endpoints.DualStackVariant, 150 }: { 151 Hostname: "signin.{region}.api.amazonwebservices.com.cn", 152 Protocols: []string{"https"}, 153 SignatureVersions: []string{"v4"}, 154 }, 155 { 156 Variant: endpoints.FIPSVariant, 157 }: { 158 Hostname: "signin-fips.{region}.amazonaws.com.cn", 159 Protocols: []string{"https"}, 160 SignatureVersions: []string{"v4"}, 161 }, 162 { 163 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, 164 }: { 165 Hostname: "signin-fips.{region}.api.amazonwebservices.com.cn", 166 Protocols: []string{"https"}, 167 SignatureVersions: []string{"v4"}, 168 }, 169 { 170 Variant: 0, 171 }: { 172 Hostname: "signin.{region}.amazonaws.com.cn", 173 Protocols: []string{"https"}, 174 SignatureVersions: []string{"v4"}, 175 }, 176 }, 177 RegionRegex: partitionRegexp.AwsCn, 178 IsRegionalized: true, 179 }, 180 { 181 ID: "aws-eusc", 182 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 183 { 184 Variant: endpoints.DualStackVariant, 185 }: { 186 Hostname: "signin.{region}.api.amazonwebservices.eu", 187 Protocols: []string{"https"}, 188 SignatureVersions: []string{"v4"}, 189 }, 190 { 191 Variant: endpoints.FIPSVariant, 192 }: { 193 Hostname: "signin-fips.{region}.amazonaws.eu", 194 Protocols: []string{"https"}, 195 SignatureVersions: []string{"v4"}, 196 }, 197 { 198 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, 199 }: { 200 Hostname: "signin-fips.{region}.api.amazonwebservices.eu", 201 Protocols: []string{"https"}, 202 SignatureVersions: []string{"v4"}, 203 }, 204 { 205 Variant: 0, 206 }: { 207 Hostname: "signin.{region}.amazonaws.eu", 208 Protocols: []string{"https"}, 209 SignatureVersions: []string{"v4"}, 210 }, 211 }, 212 RegionRegex: partitionRegexp.AwsEusc, 213 IsRegionalized: true, 214 }, 215 { 216 ID: "aws-iso", 217 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 218 { 219 Variant: endpoints.FIPSVariant, 220 }: { 221 Hostname: "signin-fips.{region}.c2s.ic.gov", 222 Protocols: []string{"https"}, 223 SignatureVersions: []string{"v4"}, 224 }, 225 { 226 Variant: 0, 227 }: { 228 Hostname: "signin.{region}.c2s.ic.gov", 229 Protocols: []string{"https"}, 230 SignatureVersions: []string{"v4"}, 231 }, 232 }, 233 RegionRegex: partitionRegexp.AwsIso, 234 IsRegionalized: true, 235 }, 236 { 237 ID: "aws-iso-b", 238 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 239 { 240 Variant: endpoints.FIPSVariant, 241 }: { 242 Hostname: "signin-fips.{region}.sc2s.sgov.gov", 243 Protocols: []string{"https"}, 244 SignatureVersions: []string{"v4"}, 245 }, 246 { 247 Variant: 0, 248 }: { 249 Hostname: "signin.{region}.sc2s.sgov.gov", 250 Protocols: []string{"https"}, 251 SignatureVersions: []string{"v4"}, 252 }, 253 }, 254 RegionRegex: partitionRegexp.AwsIsoB, 255 IsRegionalized: true, 256 }, 257 { 258 ID: "aws-iso-e", 259 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 260 { 261 Variant: endpoints.FIPSVariant, 262 }: { 263 Hostname: "signin-fips.{region}.cloud.adc-e.uk", 264 Protocols: []string{"https"}, 265 SignatureVersions: []string{"v4"}, 266 }, 267 { 268 Variant: 0, 269 }: { 270 Hostname: "signin.{region}.cloud.adc-e.uk", 271 Protocols: []string{"https"}, 272 SignatureVersions: []string{"v4"}, 273 }, 274 }, 275 RegionRegex: partitionRegexp.AwsIsoE, 276 IsRegionalized: true, 277 }, 278 { 279 ID: "aws-iso-f", 280 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 281 { 282 Variant: endpoints.FIPSVariant, 283 }: { 284 Hostname: "signin-fips.{region}.csp.hci.ic.gov", 285 Protocols: []string{"https"}, 286 SignatureVersions: []string{"v4"}, 287 }, 288 { 289 Variant: 0, 290 }: { 291 Hostname: "signin.{region}.csp.hci.ic.gov", 292 Protocols: []string{"https"}, 293 SignatureVersions: []string{"v4"}, 294 }, 295 }, 296 RegionRegex: partitionRegexp.AwsIsoF, 297 IsRegionalized: true, 298 }, 299 { 300 ID: "aws-us-gov", 301 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ 302 { 303 Variant: endpoints.DualStackVariant, 304 }: { 305 Hostname: "signin.{region}.api.aws", 306 Protocols: []string{"https"}, 307 SignatureVersions: []string{"v4"}, 308 }, 309 { 310 Variant: endpoints.FIPSVariant, 311 }: { 312 Hostname: "signin-fips.{region}.amazonaws.com", 313 Protocols: []string{"https"}, 314 SignatureVersions: []string{"v4"}, 315 }, 316 { 317 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, 318 }: { 319 Hostname: "signin-fips.{region}.api.aws", 320 Protocols: []string{"https"}, 321 SignatureVersions: []string{"v4"}, 322 }, 323 { 324 Variant: 0, 325 }: { 326 Hostname: "signin.{region}.amazonaws.com", 327 Protocols: []string{"https"}, 328 SignatureVersions: []string{"v4"}, 329 }, 330 }, 331 RegionRegex: partitionRegexp.AwsUsGov, 332 IsRegionalized: true, 333 }, 334 }