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