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