// Code generated by smithy-go-codegen DO NOT EDIT.

package endpoints

import (
	
	
	endpoints 
	
	
	
)

// Options is the endpoint resolver configuration options
type Options struct {
	// Logger is a logging implementation that log events should be sent to.
	Logger logging.Logger

	// LogDeprecated indicates that deprecated endpoints should be logged to the
	// provided logger.
	LogDeprecated bool

	// ResolvedRegion is used to override the region to be resolved, rather then the
	// using the value passed to the ResolveEndpoint method. This value is used by the
	// SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative
	// name. You must not set this value directly in your application.
	ResolvedRegion string

	// DisableHTTPS informs the resolver to return an endpoint that does not use the
	// HTTPS scheme.
	DisableHTTPS bool

	// UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint.
	UseDualStackEndpoint aws.DualStackEndpointState

	// UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint.
	UseFIPSEndpoint aws.FIPSEndpointState
}

func ( Options) () string {
	return .ResolvedRegion
}

func ( Options) () bool {
	return .DisableHTTPS
}

func ( Options) () aws.DualStackEndpointState {
	return .UseDualStackEndpoint
}

func ( Options) () aws.FIPSEndpointState {
	return .UseFIPSEndpoint
}

func ( Options) endpoints.Options {
	return endpoints.Options{
		Logger:               .Logger,
		LogDeprecated:        .LogDeprecated,
		ResolvedRegion:       .ResolvedRegion,
		DisableHTTPS:         .DisableHTTPS,
		UseDualStackEndpoint: .UseDualStackEndpoint,
		UseFIPSEndpoint:      .UseFIPSEndpoint,
	}
}

// Resolver S3 endpoint resolver
type Resolver struct {
	partitions endpoints.Partitions
}

// ResolveEndpoint resolves the service endpoint for the given region and options
func ( *Resolver) ( string,  Options) ( aws.Endpoint,  error) {
	if len() == 0 {
		return , &aws.MissingRegionError{}
	}

	 := transformToSharedOptions()
	return .partitions.ResolveEndpoint(, )
}

// New returns a new Resolver
func () *Resolver {
	return &Resolver{
		partitions: defaultPartitions,
	}
}

var partitionRegexp = struct {
	Aws      *regexp.Regexp
	AwsCn    *regexp.Regexp
	AwsIso   *regexp.Regexp
	AwsIsoB  *regexp.Regexp
	AwsUsGov *regexp.Regexp
}{

	Aws:      regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"),
	AwsCn:    regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
	AwsIso:   regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
	AwsIsoB:  regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
	AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
}

var defaultPartitions = endpoints.Partitions{
	{
		ID: "aws",
		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
			{
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.{region}.amazonaws.com",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.{region}.amazonaws.com",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname:          "s3-fips.dualstack.{region}.amazonaws.com",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: 0,
			}: {
				Hostname:          "s3.{region}.amazonaws.com",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
		},
		RegionRegex:    partitionRegexp.Aws,
		IsRegionalized: true,
		Endpoints: endpoints.Endpoints{
			endpoints.EndpointKey{
				Region: "af-south-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "af-south-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.af-south-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-east-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-east-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-east-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-northeast-1",
			}: endpoints.Endpoint{
				Hostname:          "s3.ap-northeast-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "ap-northeast-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.ap-northeast-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "ap-northeast-2",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-northeast-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-northeast-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-northeast-3",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-northeast-3",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-northeast-3.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-south-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-south-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-south-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-south-2",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-south-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-south-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-southeast-1",
			}: endpoints.Endpoint{
				Hostname:          "s3.ap-southeast-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "ap-southeast-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.ap-southeast-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "ap-southeast-2",
			}: endpoints.Endpoint{
				Hostname:          "s3.ap-southeast-2.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "ap-southeast-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.ap-southeast-2.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "ap-southeast-3",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-southeast-3",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-southeast-3.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "ap-southeast-4",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ap-southeast-4",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ap-southeast-4.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "aws-global",
			}: endpoints.Endpoint{
				Hostname:          "s3.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
				CredentialScope: endpoints.CredentialScope{
					Region: "us-east-1",
				},
			},
			endpoints.EndpointKey{
				Region: "ca-central-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "ca-central-1",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname: "s3-fips.ca-central-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region:  "ca-central-1",
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname: "s3-fips.dualstack.ca-central-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region:  "ca-central-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.ca-central-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-central-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-central-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-central-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-central-2",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-central-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-central-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-north-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-north-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-north-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-south-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-south-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-south-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-south-2",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-south-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-south-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-west-1",
			}: endpoints.Endpoint{
				Hostname:          "s3.eu-west-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "eu-west-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.eu-west-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "eu-west-2",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-west-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-west-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "eu-west-3",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "eu-west-3",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.eu-west-3.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "fips-ca-central-1",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.ca-central-1.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "ca-central-1",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "fips-us-east-1",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.us-east-1.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "us-east-1",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "fips-us-east-2",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.us-east-2.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "us-east-2",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "fips-us-west-1",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.us-west-1.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "us-west-1",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "fips-us-west-2",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.us-west-2.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "us-west-2",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "me-central-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "me-central-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.me-central-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "me-south-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "me-south-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.me-south-1.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "s3-external-1",
			}: endpoints.Endpoint{
				Hostname:          "s3-external-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
				CredentialScope: endpoints.CredentialScope{
					Region: "us-east-1",
				},
			},
			endpoints.EndpointKey{
				Region: "sa-east-1",
			}: endpoints.Endpoint{
				Hostname:          "s3.sa-east-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "sa-east-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.sa-east-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "us-east-1",
			}: endpoints.Endpoint{
				Hostname:          "s3.us-east-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-east-1",
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname:          "s3-fips.dualstack.us-east-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-east-1",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.us-east-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-east-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.us-east-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "us-east-2",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "us-east-2",
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname: "s3-fips.dualstack.us-east-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region:  "us-east-2",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname: "s3-fips.us-east-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region:  "us-east-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.us-east-2.amazonaws.com",
			},
			endpoints.EndpointKey{
				Region: "us-west-1",
			}: endpoints.Endpoint{
				Hostname:          "s3.us-west-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-west-1",
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname:          "s3-fips.dualstack.us-west-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-west-1",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.us-west-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-west-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.us-west-1.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region: "us-west-2",
			}: endpoints.Endpoint{
				Hostname:          "s3.us-west-2.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-west-2",
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname:          "s3-fips.dualstack.us-west-2.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-west-2",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.us-west-2.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
			endpoints.EndpointKey{
				Region:  "us-west-2",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.us-west-2.amazonaws.com",
				SignatureVersions: []string{"s3", "s3v4"},
			},
		},
	},
	{
		ID: "aws-cn",
		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
			{
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.{region}.amazonaws.com.cn",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.{region}.amazonaws.com.cn",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname:          "s3-fips.{region}.api.amazonwebservices.com.cn",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: 0,
			}: {
				Hostname:          "s3.{region}.amazonaws.com.cn",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
		},
		RegionRegex:    partitionRegexp.AwsCn,
		IsRegionalized: true,
		Endpoints: endpoints.Endpoints{
			endpoints.EndpointKey{
				Region: "cn-north-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "cn-north-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.cn-north-1.amazonaws.com.cn",
			},
			endpoints.EndpointKey{
				Region: "cn-northwest-1",
			}: endpoints.Endpoint{},
			endpoints.EndpointKey{
				Region:  "cn-northwest-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname: "s3.dualstack.cn-northwest-1.amazonaws.com.cn",
			},
		},
	},
	{
		ID: "aws-iso",
		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
			{
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.{region}.c2s.ic.gov",
				Protocols:         []string{"https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: 0,
			}: {
				Hostname:          "s3.{region}.c2s.ic.gov",
				Protocols:         []string{"https"},
				SignatureVersions: []string{"s3v4"},
			},
		},
		RegionRegex:    partitionRegexp.AwsIso,
		IsRegionalized: true,
		Endpoints: endpoints.Endpoints{
			endpoints.EndpointKey{
				Region: "us-iso-east-1",
			}: endpoints.Endpoint{
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			endpoints.EndpointKey{
				Region: "us-iso-west-1",
			}: endpoints.Endpoint{},
		},
	},
	{
		ID: "aws-iso-b",
		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
			{
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.{region}.sc2s.sgov.gov",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
			{
				Variant: 0,
			}: {
				Hostname:          "s3.{region}.sc2s.sgov.gov",
				Protocols:         []string{"http", "https"},
				SignatureVersions: []string{"s3v4"},
			},
		},
		RegionRegex:    partitionRegexp.AwsIsoB,
		IsRegionalized: true,
		Endpoints: endpoints.Endpoints{
			endpoints.EndpointKey{
				Region: "us-isob-east-1",
			}: endpoints.Endpoint{},
		},
	},
	{
		ID: "aws-us-gov",
		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
			{
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:          "s3.dualstack.{region}.amazonaws.com",
				Protocols:         []string{"https"},
				SignatureVersions: []string{"s3", "s3v4"},
			},
			{
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:          "s3-fips.{region}.amazonaws.com",
				Protocols:         []string{"https"},
				SignatureVersions: []string{"s3", "s3v4"},
			},
			{
				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
			}: {
				Hostname:          "s3-fips.dualstack.{region}.amazonaws.com",
				Protocols:         []string{"https"},
				SignatureVersions: []string{"s3", "s3v4"},
			},
			{
				Variant: 0,
			}: {
				Hostname:          "s3.{region}.amazonaws.com",
				Protocols:         []string{"https"},
				SignatureVersions: []string{"s3", "s3v4"},
			},
		},
		RegionRegex:    partitionRegexp.AwsUsGov,
		IsRegionalized: true,
		Endpoints: endpoints.Endpoints{
			endpoints.EndpointKey{
				Region: "fips-us-gov-east-1",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.us-gov-east-1.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "us-gov-east-1",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "fips-us-gov-west-1",
			}: endpoints.Endpoint{
				Hostname: "s3-fips.us-gov-west-1.amazonaws.com",
				CredentialScope: endpoints.CredentialScope{
					Region: "us-gov-west-1",
				},
				Deprecated: aws.TrueTernary,
			},
			endpoints.EndpointKey{
				Region: "us-gov-east-1",
			}: endpoints.Endpoint{
				Hostname:  "s3.us-gov-east-1.amazonaws.com",
				Protocols: []string{"http", "https"},
			},
			endpoints.EndpointKey{
				Region:  "us-gov-east-1",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:  "s3-fips.us-gov-east-1.amazonaws.com",
				Protocols: []string{"http", "https"},
			},
			endpoints.EndpointKey{
				Region:  "us-gov-east-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:  "s3.dualstack.us-gov-east-1.amazonaws.com",
				Protocols: []string{"http", "https"},
			},
			endpoints.EndpointKey{
				Region: "us-gov-west-1",
			}: endpoints.Endpoint{
				Hostname:  "s3.us-gov-west-1.amazonaws.com",
				Protocols: []string{"http", "https"},
			},
			endpoints.EndpointKey{
				Region:  "us-gov-west-1",
				Variant: endpoints.FIPSVariant,
			}: {
				Hostname:  "s3-fips.us-gov-west-1.amazonaws.com",
				Protocols: []string{"http", "https"},
			},
			endpoints.EndpointKey{
				Region:  "us-gov-west-1",
				Variant: endpoints.DualStackVariant,
			}: {
				Hostname:  "s3.dualstack.us-gov-west-1.amazonaws.com",
				Protocols: []string{"http", "https"},
			},
		},
	},
}

// GetDNSSuffix returns the dnsSuffix URL component for the given partition id
func ( string,  Options) (string, error) {
	 := transformToSharedOptions().GetEndpointVariant()
	switch {
	case strings.EqualFold(, "aws"):
		switch  {
		case endpoints.DualStackVariant:
			return "amazonaws.com", nil

		case endpoints.FIPSVariant:
			return "amazonaws.com", nil

		case endpoints.FIPSVariant | endpoints.DualStackVariant:
			return "amazonaws.com", nil

		case 0:
			return "amazonaws.com", nil

		default:
			return "", fmt.Errorf("unsupported endpoint variant %v, in partition %s", , )

		}

	case strings.EqualFold(, "aws-cn"):
		switch  {
		case endpoints.DualStackVariant:
			return "amazonaws.com.cn", nil

		case endpoints.FIPSVariant:
			return "amazonaws.com.cn", nil

		case endpoints.FIPSVariant | endpoints.DualStackVariant:
			return "api.amazonwebservices.com.cn", nil

		case 0:
			return "amazonaws.com.cn", nil

		default:
			return "", fmt.Errorf("unsupported endpoint variant %v, in partition %s", , )

		}

	case strings.EqualFold(, "aws-iso"):
		switch  {
		case endpoints.FIPSVariant:
			return "c2s.ic.gov", nil

		case 0:
			return "c2s.ic.gov", nil

		default:
			return "", fmt.Errorf("unsupported endpoint variant %v, in partition %s", , )

		}

	case strings.EqualFold(, "aws-iso-b"):
		switch  {
		case endpoints.FIPSVariant:
			return "sc2s.sgov.gov", nil

		case 0:
			return "sc2s.sgov.gov", nil

		default:
			return "", fmt.Errorf("unsupported endpoint variant %v, in partition %s", , )

		}

	case strings.EqualFold(, "aws-us-gov"):
		switch  {
		case endpoints.DualStackVariant:
			return "amazonaws.com", nil

		case endpoints.FIPSVariant:
			return "amazonaws.com", nil

		case endpoints.FIPSVariant | endpoints.DualStackVariant:
			return "amazonaws.com", nil

		case 0:
			return "amazonaws.com", nil

		default:
			return "", fmt.Errorf("unsupported endpoint variant %v, in partition %s", , )

		}

	default:
		return "", fmt.Errorf("unknown partition")

	}
}

// GetDNSSuffixFromRegion returns the DNS suffix for the provided region and
// options.
func ( string,  Options) (string, error) {
	switch {
	case partitionRegexp.Aws.MatchString():
		return GetDNSSuffix("aws", )

	case partitionRegexp.AwsCn.MatchString():
		return GetDNSSuffix("aws-cn", )

	case partitionRegexp.AwsIso.MatchString():
		return GetDNSSuffix("aws-iso", )

	case partitionRegexp.AwsIsoB.MatchString():
		return GetDNSSuffix("aws-iso-b", )

	case partitionRegexp.AwsUsGov.MatchString():
		return GetDNSSuffix("aws-us-gov", )

	default:
		return GetDNSSuffix("aws", )

	}
}