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