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 Lightsail 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: "lightsail.{region}.api.aws",
116 Protocols: []string{"https"},
117 SignatureVersions: []string{"v4"},
118 },
119 {
120 Variant: endpoints.FIPSVariant,
121 }: {
122 Hostname: "lightsail-fips.{region}.amazonaws.com",
123 Protocols: []string{"https"},
124 SignatureVersions: []string{"v4"},
125 },
126 {
127 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
128 }: {
129 Hostname: "lightsail-fips.{region}.api.aws",
130 Protocols: []string{"https"},
131 SignatureVersions: []string{"v4"},
132 },
133 {
134 Variant: 0,
135 }: {
136 Hostname: "lightsail.{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: "ap-northeast-1",
146 }: endpoints.Endpoint{},
147 endpoints.EndpointKey{
148 Region: "ap-northeast-2",
149 }: endpoints.Endpoint{},
150 endpoints.EndpointKey{
151 Region: "ap-south-1",
152 }: endpoints.Endpoint{},
153 endpoints.EndpointKey{
154 Region: "ap-southeast-1",
155 }: endpoints.Endpoint{},
156 endpoints.EndpointKey{
157 Region: "ap-southeast-2",
158 }: endpoints.Endpoint{},
159 endpoints.EndpointKey{
160 Region: "ap-southeast-3",
161 }: endpoints.Endpoint{},
162 endpoints.EndpointKey{
163 Region: "ca-central-1",
164 }: endpoints.Endpoint{},
165 endpoints.EndpointKey{
166 Region: "eu-central-1",
167 }: endpoints.Endpoint{},
168 endpoints.EndpointKey{
169 Region: "eu-north-1",
170 }: endpoints.Endpoint{},
171 endpoints.EndpointKey{
172 Region: "eu-west-1",
173 }: endpoints.Endpoint{},
174 endpoints.EndpointKey{
175 Region: "eu-west-2",
176 }: endpoints.Endpoint{},
177 endpoints.EndpointKey{
178 Region: "eu-west-3",
179 }: endpoints.Endpoint{},
180 endpoints.EndpointKey{
181 Region: "us-east-1",
182 }: endpoints.Endpoint{},
183 endpoints.EndpointKey{
184 Region: "us-east-2",
185 }: endpoints.Endpoint{},
186 endpoints.EndpointKey{
187 Region: "us-west-2",
188 }: endpoints.Endpoint{},
189 },
190 },
191 {
192 ID: "aws-cn",
193 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
194 {
195 Variant: endpoints.DualStackVariant,
196 }: {
197 Hostname: "lightsail.{region}.api.amazonwebservices.com.cn",
198 Protocols: []string{"https"},
199 SignatureVersions: []string{"v4"},
200 },
201 {
202 Variant: endpoints.FIPSVariant,
203 }: {
204 Hostname: "lightsail-fips.{region}.amazonaws.com.cn",
205 Protocols: []string{"https"},
206 SignatureVersions: []string{"v4"},
207 },
208 {
209 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
210 }: {
211 Hostname: "lightsail-fips.{region}.api.amazonwebservices.com.cn",
212 Protocols: []string{"https"},
213 SignatureVersions: []string{"v4"},
214 },
215 {
216 Variant: 0,
217 }: {
218 Hostname: "lightsail.{region}.amazonaws.com.cn",
219 Protocols: []string{"https"},
220 SignatureVersions: []string{"v4"},
221 },
222 },
223 RegionRegex: partitionRegexp.AwsCn,
224 IsRegionalized: true,
225 },
226 {
227 ID: "aws-eusc",
228 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
229 {
230 Variant: endpoints.DualStackVariant,
231 }: {
232 Hostname: "lightsail.{region}.api.amazonwebservices.eu",
233 Protocols: []string{"https"},
234 SignatureVersions: []string{"v4"},
235 },
236 {
237 Variant: endpoints.FIPSVariant,
238 }: {
239 Hostname: "lightsail-fips.{region}.amazonaws.eu",
240 Protocols: []string{"https"},
241 SignatureVersions: []string{"v4"},
242 },
243 {
244 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
245 }: {
246 Hostname: "lightsail-fips.{region}.api.amazonwebservices.eu",
247 Protocols: []string{"https"},
248 SignatureVersions: []string{"v4"},
249 },
250 {
251 Variant: 0,
252 }: {
253 Hostname: "lightsail.{region}.amazonaws.eu",
254 Protocols: []string{"https"},
255 SignatureVersions: []string{"v4"},
256 },
257 },
258 RegionRegex: partitionRegexp.AwsEusc,
259 IsRegionalized: true,
260 },
261 {
262 ID: "aws-iso",
263 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
264 {
265 Variant: endpoints.FIPSVariant,
266 }: {
267 Hostname: "lightsail-fips.{region}.c2s.ic.gov",
268 Protocols: []string{"https"},
269 SignatureVersions: []string{"v4"},
270 },
271 {
272 Variant: 0,
273 }: {
274 Hostname: "lightsail.{region}.c2s.ic.gov",
275 Protocols: []string{"https"},
276 SignatureVersions: []string{"v4"},
277 },
278 },
279 RegionRegex: partitionRegexp.AwsIso,
280 IsRegionalized: true,
281 },
282 {
283 ID: "aws-iso-b",
284 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
285 {
286 Variant: endpoints.FIPSVariant,
287 }: {
288 Hostname: "lightsail-fips.{region}.sc2s.sgov.gov",
289 Protocols: []string{"https"},
290 SignatureVersions: []string{"v4"},
291 },
292 {
293 Variant: 0,
294 }: {
295 Hostname: "lightsail.{region}.sc2s.sgov.gov",
296 Protocols: []string{"https"},
297 SignatureVersions: []string{"v4"},
298 },
299 },
300 RegionRegex: partitionRegexp.AwsIsoB,
301 IsRegionalized: true,
302 },
303 {
304 ID: "aws-iso-e",
305 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
306 {
307 Variant: endpoints.FIPSVariant,
308 }: {
309 Hostname: "lightsail-fips.{region}.cloud.adc-e.uk",
310 Protocols: []string{"https"},
311 SignatureVersions: []string{"v4"},
312 },
313 {
314 Variant: 0,
315 }: {
316 Hostname: "lightsail.{region}.cloud.adc-e.uk",
317 Protocols: []string{"https"},
318 SignatureVersions: []string{"v4"},
319 },
320 },
321 RegionRegex: partitionRegexp.AwsIsoE,
322 IsRegionalized: true,
323 },
324 {
325 ID: "aws-iso-f",
326 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
327 {
328 Variant: endpoints.FIPSVariant,
329 }: {
330 Hostname: "lightsail-fips.{region}.csp.hci.ic.gov",
331 Protocols: []string{"https"},
332 SignatureVersions: []string{"v4"},
333 },
334 {
335 Variant: 0,
336 }: {
337 Hostname: "lightsail.{region}.csp.hci.ic.gov",
338 Protocols: []string{"https"},
339 SignatureVersions: []string{"v4"},
340 },
341 },
342 RegionRegex: partitionRegexp.AwsIsoF,
343 IsRegionalized: true,
344 },
345 {
346 ID: "aws-us-gov",
347 Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
348 {
349 Variant: endpoints.DualStackVariant,
350 }: {
351 Hostname: "lightsail.{region}.api.aws",
352 Protocols: []string{"https"},
353 SignatureVersions: []string{"v4"},
354 },
355 {
356 Variant: endpoints.FIPSVariant,
357 }: {
358 Hostname: "lightsail-fips.{region}.amazonaws.com",
359 Protocols: []string{"https"},
360 SignatureVersions: []string{"v4"},
361 },
362 {
363 Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
364 }: {
365 Hostname: "lightsail-fips.{region}.api.aws",
366 Protocols: []string{"https"},
367 SignatureVersions: []string{"v4"},
368 },
369 {
370 Variant: 0,
371 }: {
372 Hostname: "lightsail.{region}.amazonaws.com",
373 Protocols: []string{"https"},
374 SignatureVersions: []string{"v4"},
375 },
376 },
377 RegionRegex: partitionRegexp.AwsUsGov,
378 IsRegionalized: true,
379 },
380 }
381