endpoints.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. // Code generated by smithy-go-codegen DO NOT EDIT.
  2. package endpoints
  3. import (
  4. "github.com/aws/aws-sdk-go-v2/aws"
  5. endpoints "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2"
  6. "github.com/aws/smithy-go/logging"
  7. "regexp"
  8. )
  9. // Options is the endpoint resolver configuration options
  10. type Options struct {
  11. // Logger is a logging implementation that log events should be sent to.
  12. Logger logging.Logger
  13. // LogDeprecated indicates that deprecated endpoints should be logged to the
  14. // provided logger.
  15. LogDeprecated bool
  16. // ResolvedRegion is used to override the region to be resolved, rather then the
  17. // using the value passed to the ResolveEndpoint method. This value is used by the
  18. // SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative
  19. // name. You must not set this value directly in your application.
  20. ResolvedRegion string
  21. // DisableHTTPS informs the resolver to return an endpoint that does not use the
  22. // HTTPS scheme.
  23. DisableHTTPS bool
  24. // UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint.
  25. UseDualStackEndpoint aws.DualStackEndpointState
  26. // UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint.
  27. UseFIPSEndpoint aws.FIPSEndpointState
  28. }
  29. func (o Options) GetResolvedRegion() string {
  30. return o.ResolvedRegion
  31. }
  32. func (o Options) GetDisableHTTPS() bool {
  33. return o.DisableHTTPS
  34. }
  35. func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState {
  36. return o.UseDualStackEndpoint
  37. }
  38. func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState {
  39. return o.UseFIPSEndpoint
  40. }
  41. func transformToSharedOptions(options Options) endpoints.Options {
  42. return endpoints.Options{
  43. Logger: options.Logger,
  44. LogDeprecated: options.LogDeprecated,
  45. ResolvedRegion: options.ResolvedRegion,
  46. DisableHTTPS: options.DisableHTTPS,
  47. UseDualStackEndpoint: options.UseDualStackEndpoint,
  48. UseFIPSEndpoint: options.UseFIPSEndpoint,
  49. }
  50. }
  51. // Resolver STS endpoint resolver
  52. type Resolver struct {
  53. partitions endpoints.Partitions
  54. }
  55. // ResolveEndpoint resolves the service endpoint for the given region and options
  56. func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) {
  57. if len(region) == 0 {
  58. return endpoint, &aws.MissingRegionError{}
  59. }
  60. opt := transformToSharedOptions(options)
  61. return r.partitions.ResolveEndpoint(region, opt)
  62. }
  63. // New returns a new Resolver
  64. func New() *Resolver {
  65. return &Resolver{
  66. partitions: defaultPartitions,
  67. }
  68. }
  69. var partitionRegexp = struct {
  70. Aws *regexp.Regexp
  71. AwsCn *regexp.Regexp
  72. AwsIso *regexp.Regexp
  73. AwsIsoB *regexp.Regexp
  74. AwsUsGov *regexp.Regexp
  75. }{
  76. Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"),
  77. AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
  78. AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
  79. AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
  80. AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
  81. }
  82. var defaultPartitions = endpoints.Partitions{
  83. {
  84. ID: "aws",
  85. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  86. {
  87. Variant: endpoints.DualStackVariant,
  88. }: {
  89. Hostname: "sts.{region}.api.aws",
  90. Protocols: []string{"https"},
  91. SignatureVersions: []string{"v4"},
  92. },
  93. {
  94. Variant: endpoints.FIPSVariant,
  95. }: {
  96. Hostname: "sts-fips.{region}.amazonaws.com",
  97. Protocols: []string{"https"},
  98. SignatureVersions: []string{"v4"},
  99. },
  100. {
  101. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  102. }: {
  103. Hostname: "sts-fips.{region}.api.aws",
  104. Protocols: []string{"https"},
  105. SignatureVersions: []string{"v4"},
  106. },
  107. {
  108. Variant: 0,
  109. }: {
  110. Hostname: "sts.{region}.amazonaws.com",
  111. Protocols: []string{"https"},
  112. SignatureVersions: []string{"v4"},
  113. },
  114. },
  115. RegionRegex: partitionRegexp.Aws,
  116. IsRegionalized: true,
  117. Endpoints: endpoints.Endpoints{
  118. endpoints.EndpointKey{
  119. Region: "af-south-1",
  120. }: endpoints.Endpoint{},
  121. endpoints.EndpointKey{
  122. Region: "ap-east-1",
  123. }: endpoints.Endpoint{},
  124. endpoints.EndpointKey{
  125. Region: "ap-northeast-1",
  126. }: endpoints.Endpoint{},
  127. endpoints.EndpointKey{
  128. Region: "ap-northeast-2",
  129. }: endpoints.Endpoint{},
  130. endpoints.EndpointKey{
  131. Region: "ap-northeast-3",
  132. }: endpoints.Endpoint{},
  133. endpoints.EndpointKey{
  134. Region: "ap-south-1",
  135. }: endpoints.Endpoint{},
  136. endpoints.EndpointKey{
  137. Region: "ap-south-2",
  138. }: endpoints.Endpoint{},
  139. endpoints.EndpointKey{
  140. Region: "ap-southeast-1",
  141. }: endpoints.Endpoint{},
  142. endpoints.EndpointKey{
  143. Region: "ap-southeast-2",
  144. }: endpoints.Endpoint{},
  145. endpoints.EndpointKey{
  146. Region: "ap-southeast-3",
  147. }: endpoints.Endpoint{},
  148. endpoints.EndpointKey{
  149. Region: "ap-southeast-4",
  150. }: endpoints.Endpoint{},
  151. endpoints.EndpointKey{
  152. Region: "aws-global",
  153. }: endpoints.Endpoint{
  154. Hostname: "sts.amazonaws.com",
  155. CredentialScope: endpoints.CredentialScope{
  156. Region: "us-east-1",
  157. },
  158. },
  159. endpoints.EndpointKey{
  160. Region: "ca-central-1",
  161. }: endpoints.Endpoint{},
  162. endpoints.EndpointKey{
  163. Region: "eu-central-1",
  164. }: endpoints.Endpoint{},
  165. endpoints.EndpointKey{
  166. Region: "eu-central-2",
  167. }: endpoints.Endpoint{},
  168. endpoints.EndpointKey{
  169. Region: "eu-north-1",
  170. }: endpoints.Endpoint{},
  171. endpoints.EndpointKey{
  172. Region: "eu-south-1",
  173. }: endpoints.Endpoint{},
  174. endpoints.EndpointKey{
  175. Region: "eu-south-2",
  176. }: endpoints.Endpoint{},
  177. endpoints.EndpointKey{
  178. Region: "eu-west-1",
  179. }: endpoints.Endpoint{},
  180. endpoints.EndpointKey{
  181. Region: "eu-west-2",
  182. }: endpoints.Endpoint{},
  183. endpoints.EndpointKey{
  184. Region: "eu-west-3",
  185. }: endpoints.Endpoint{},
  186. endpoints.EndpointKey{
  187. Region: "me-central-1",
  188. }: endpoints.Endpoint{},
  189. endpoints.EndpointKey{
  190. Region: "me-south-1",
  191. }: endpoints.Endpoint{},
  192. endpoints.EndpointKey{
  193. Region: "sa-east-1",
  194. }: endpoints.Endpoint{},
  195. endpoints.EndpointKey{
  196. Region: "us-east-1",
  197. }: endpoints.Endpoint{},
  198. endpoints.EndpointKey{
  199. Region: "us-east-1",
  200. Variant: endpoints.FIPSVariant,
  201. }: {
  202. Hostname: "sts-fips.us-east-1.amazonaws.com",
  203. },
  204. endpoints.EndpointKey{
  205. Region: "us-east-1-fips",
  206. }: endpoints.Endpoint{
  207. Hostname: "sts-fips.us-east-1.amazonaws.com",
  208. CredentialScope: endpoints.CredentialScope{
  209. Region: "us-east-1",
  210. },
  211. Deprecated: aws.TrueTernary,
  212. },
  213. endpoints.EndpointKey{
  214. Region: "us-east-2",
  215. }: endpoints.Endpoint{},
  216. endpoints.EndpointKey{
  217. Region: "us-east-2",
  218. Variant: endpoints.FIPSVariant,
  219. }: {
  220. Hostname: "sts-fips.us-east-2.amazonaws.com",
  221. },
  222. endpoints.EndpointKey{
  223. Region: "us-east-2-fips",
  224. }: endpoints.Endpoint{
  225. Hostname: "sts-fips.us-east-2.amazonaws.com",
  226. CredentialScope: endpoints.CredentialScope{
  227. Region: "us-east-2",
  228. },
  229. Deprecated: aws.TrueTernary,
  230. },
  231. endpoints.EndpointKey{
  232. Region: "us-west-1",
  233. }: endpoints.Endpoint{},
  234. endpoints.EndpointKey{
  235. Region: "us-west-1",
  236. Variant: endpoints.FIPSVariant,
  237. }: {
  238. Hostname: "sts-fips.us-west-1.amazonaws.com",
  239. },
  240. endpoints.EndpointKey{
  241. Region: "us-west-1-fips",
  242. }: endpoints.Endpoint{
  243. Hostname: "sts-fips.us-west-1.amazonaws.com",
  244. CredentialScope: endpoints.CredentialScope{
  245. Region: "us-west-1",
  246. },
  247. Deprecated: aws.TrueTernary,
  248. },
  249. endpoints.EndpointKey{
  250. Region: "us-west-2",
  251. }: endpoints.Endpoint{},
  252. endpoints.EndpointKey{
  253. Region: "us-west-2",
  254. Variant: endpoints.FIPSVariant,
  255. }: {
  256. Hostname: "sts-fips.us-west-2.amazonaws.com",
  257. },
  258. endpoints.EndpointKey{
  259. Region: "us-west-2-fips",
  260. }: endpoints.Endpoint{
  261. Hostname: "sts-fips.us-west-2.amazonaws.com",
  262. CredentialScope: endpoints.CredentialScope{
  263. Region: "us-west-2",
  264. },
  265. Deprecated: aws.TrueTernary,
  266. },
  267. },
  268. },
  269. {
  270. ID: "aws-cn",
  271. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  272. {
  273. Variant: endpoints.DualStackVariant,
  274. }: {
  275. Hostname: "sts.{region}.api.amazonwebservices.com.cn",
  276. Protocols: []string{"https"},
  277. SignatureVersions: []string{"v4"},
  278. },
  279. {
  280. Variant: endpoints.FIPSVariant,
  281. }: {
  282. Hostname: "sts-fips.{region}.amazonaws.com.cn",
  283. Protocols: []string{"https"},
  284. SignatureVersions: []string{"v4"},
  285. },
  286. {
  287. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  288. }: {
  289. Hostname: "sts-fips.{region}.api.amazonwebservices.com.cn",
  290. Protocols: []string{"https"},
  291. SignatureVersions: []string{"v4"},
  292. },
  293. {
  294. Variant: 0,
  295. }: {
  296. Hostname: "sts.{region}.amazonaws.com.cn",
  297. Protocols: []string{"https"},
  298. SignatureVersions: []string{"v4"},
  299. },
  300. },
  301. RegionRegex: partitionRegexp.AwsCn,
  302. IsRegionalized: true,
  303. Endpoints: endpoints.Endpoints{
  304. endpoints.EndpointKey{
  305. Region: "cn-north-1",
  306. }: endpoints.Endpoint{},
  307. endpoints.EndpointKey{
  308. Region: "cn-northwest-1",
  309. }: endpoints.Endpoint{},
  310. },
  311. },
  312. {
  313. ID: "aws-iso",
  314. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  315. {
  316. Variant: endpoints.FIPSVariant,
  317. }: {
  318. Hostname: "sts-fips.{region}.c2s.ic.gov",
  319. Protocols: []string{"https"},
  320. SignatureVersions: []string{"v4"},
  321. },
  322. {
  323. Variant: 0,
  324. }: {
  325. Hostname: "sts.{region}.c2s.ic.gov",
  326. Protocols: []string{"https"},
  327. SignatureVersions: []string{"v4"},
  328. },
  329. },
  330. RegionRegex: partitionRegexp.AwsIso,
  331. IsRegionalized: true,
  332. Endpoints: endpoints.Endpoints{
  333. endpoints.EndpointKey{
  334. Region: "us-iso-east-1",
  335. }: endpoints.Endpoint{},
  336. endpoints.EndpointKey{
  337. Region: "us-iso-west-1",
  338. }: endpoints.Endpoint{},
  339. },
  340. },
  341. {
  342. ID: "aws-iso-b",
  343. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  344. {
  345. Variant: endpoints.FIPSVariant,
  346. }: {
  347. Hostname: "sts-fips.{region}.sc2s.sgov.gov",
  348. Protocols: []string{"https"},
  349. SignatureVersions: []string{"v4"},
  350. },
  351. {
  352. Variant: 0,
  353. }: {
  354. Hostname: "sts.{region}.sc2s.sgov.gov",
  355. Protocols: []string{"https"},
  356. SignatureVersions: []string{"v4"},
  357. },
  358. },
  359. RegionRegex: partitionRegexp.AwsIsoB,
  360. IsRegionalized: true,
  361. Endpoints: endpoints.Endpoints{
  362. endpoints.EndpointKey{
  363. Region: "us-isob-east-1",
  364. }: endpoints.Endpoint{},
  365. },
  366. },
  367. {
  368. ID: "aws-us-gov",
  369. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  370. {
  371. Variant: endpoints.DualStackVariant,
  372. }: {
  373. Hostname: "sts.{region}.api.aws",
  374. Protocols: []string{"https"},
  375. SignatureVersions: []string{"v4"},
  376. },
  377. {
  378. Variant: endpoints.FIPSVariant,
  379. }: {
  380. Hostname: "sts.{region}.amazonaws.com",
  381. Protocols: []string{"https"},
  382. SignatureVersions: []string{"v4"},
  383. },
  384. {
  385. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  386. }: {
  387. Hostname: "sts-fips.{region}.api.aws",
  388. Protocols: []string{"https"},
  389. SignatureVersions: []string{"v4"},
  390. },
  391. {
  392. Variant: 0,
  393. }: {
  394. Hostname: "sts.{region}.amazonaws.com",
  395. Protocols: []string{"https"},
  396. SignatureVersions: []string{"v4"},
  397. },
  398. },
  399. RegionRegex: partitionRegexp.AwsUsGov,
  400. IsRegionalized: true,
  401. Endpoints: endpoints.Endpoints{
  402. endpoints.EndpointKey{
  403. Region: "us-gov-east-1",
  404. }: endpoints.Endpoint{},
  405. endpoints.EndpointKey{
  406. Region: "us-gov-east-1",
  407. Variant: endpoints.FIPSVariant,
  408. }: {
  409. Hostname: "sts.us-gov-east-1.amazonaws.com",
  410. },
  411. endpoints.EndpointKey{
  412. Region: "us-gov-east-1-fips",
  413. }: endpoints.Endpoint{
  414. Hostname: "sts.us-gov-east-1.amazonaws.com",
  415. CredentialScope: endpoints.CredentialScope{
  416. Region: "us-gov-east-1",
  417. },
  418. Deprecated: aws.TrueTernary,
  419. },
  420. endpoints.EndpointKey{
  421. Region: "us-gov-west-1",
  422. }: endpoints.Endpoint{},
  423. endpoints.EndpointKey{
  424. Region: "us-gov-west-1",
  425. Variant: endpoints.FIPSVariant,
  426. }: {
  427. Hostname: "sts.us-gov-west-1.amazonaws.com",
  428. },
  429. endpoints.EndpointKey{
  430. Region: "us-gov-west-1-fips",
  431. }: endpoints.Endpoint{
  432. Hostname: "sts.us-gov-west-1.amazonaws.com",
  433. CredentialScope: endpoints.CredentialScope{
  434. Region: "us-gov-west-1",
  435. },
  436. Deprecated: aws.TrueTernary,
  437. },
  438. },
  439. },
  440. }