endpoints.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  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 CloudWatch Logs 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. AwsIsoE *regexp.Regexp
  75. AwsIsoF *regexp.Regexp
  76. AwsUsGov *regexp.Regexp
  77. }{
  78. Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$"),
  79. AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
  80. AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
  81. AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
  82. AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"),
  83. AwsIsoF: regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"),
  84. AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
  85. }
  86. var defaultPartitions = endpoints.Partitions{
  87. {
  88. ID: "aws",
  89. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  90. {
  91. Variant: endpoints.DualStackVariant,
  92. }: {
  93. Hostname: "logs.{region}.api.aws",
  94. Protocols: []string{"https"},
  95. SignatureVersions: []string{"v4"},
  96. },
  97. {
  98. Variant: endpoints.FIPSVariant,
  99. }: {
  100. Hostname: "logs-fips.{region}.amazonaws.com",
  101. Protocols: []string{"https"},
  102. SignatureVersions: []string{"v4"},
  103. },
  104. {
  105. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  106. }: {
  107. Hostname: "logs-fips.{region}.api.aws",
  108. Protocols: []string{"https"},
  109. SignatureVersions: []string{"v4"},
  110. },
  111. {
  112. Variant: 0,
  113. }: {
  114. Hostname: "logs.{region}.amazonaws.com",
  115. Protocols: []string{"https"},
  116. SignatureVersions: []string{"v4"},
  117. },
  118. },
  119. RegionRegex: partitionRegexp.Aws,
  120. IsRegionalized: true,
  121. Endpoints: endpoints.Endpoints{
  122. endpoints.EndpointKey{
  123. Region: "af-south-1",
  124. }: endpoints.Endpoint{},
  125. endpoints.EndpointKey{
  126. Region: "ap-east-1",
  127. }: endpoints.Endpoint{},
  128. endpoints.EndpointKey{
  129. Region: "ap-northeast-1",
  130. }: endpoints.Endpoint{},
  131. endpoints.EndpointKey{
  132. Region: "ap-northeast-2",
  133. }: endpoints.Endpoint{},
  134. endpoints.EndpointKey{
  135. Region: "ap-northeast-3",
  136. }: endpoints.Endpoint{},
  137. endpoints.EndpointKey{
  138. Region: "ap-south-1",
  139. }: endpoints.Endpoint{},
  140. endpoints.EndpointKey{
  141. Region: "ap-south-2",
  142. }: endpoints.Endpoint{},
  143. endpoints.EndpointKey{
  144. Region: "ap-southeast-1",
  145. }: endpoints.Endpoint{},
  146. endpoints.EndpointKey{
  147. Region: "ap-southeast-2",
  148. }: endpoints.Endpoint{},
  149. endpoints.EndpointKey{
  150. Region: "ap-southeast-3",
  151. }: endpoints.Endpoint{},
  152. endpoints.EndpointKey{
  153. Region: "ap-southeast-4",
  154. }: endpoints.Endpoint{},
  155. endpoints.EndpointKey{
  156. Region: "ca-central-1",
  157. }: endpoints.Endpoint{},
  158. endpoints.EndpointKey{
  159. Region: "ca-west-1",
  160. }: endpoints.Endpoint{},
  161. endpoints.EndpointKey{
  162. Region: "eu-central-1",
  163. }: endpoints.Endpoint{},
  164. endpoints.EndpointKey{
  165. Region: "eu-central-2",
  166. }: endpoints.Endpoint{},
  167. endpoints.EndpointKey{
  168. Region: "eu-north-1",
  169. }: endpoints.Endpoint{},
  170. endpoints.EndpointKey{
  171. Region: "eu-south-1",
  172. }: endpoints.Endpoint{},
  173. endpoints.EndpointKey{
  174. Region: "eu-south-2",
  175. }: endpoints.Endpoint{},
  176. endpoints.EndpointKey{
  177. Region: "eu-west-1",
  178. }: endpoints.Endpoint{},
  179. endpoints.EndpointKey{
  180. Region: "eu-west-2",
  181. }: endpoints.Endpoint{},
  182. endpoints.EndpointKey{
  183. Region: "eu-west-3",
  184. }: endpoints.Endpoint{},
  185. endpoints.EndpointKey{
  186. Region: "fips-us-east-1",
  187. }: endpoints.Endpoint{
  188. Hostname: "logs-fips.us-east-1.amazonaws.com",
  189. CredentialScope: endpoints.CredentialScope{
  190. Region: "us-east-1",
  191. },
  192. Deprecated: aws.TrueTernary,
  193. },
  194. endpoints.EndpointKey{
  195. Region: "fips-us-east-2",
  196. }: endpoints.Endpoint{
  197. Hostname: "logs-fips.us-east-2.amazonaws.com",
  198. CredentialScope: endpoints.CredentialScope{
  199. Region: "us-east-2",
  200. },
  201. Deprecated: aws.TrueTernary,
  202. },
  203. endpoints.EndpointKey{
  204. Region: "fips-us-west-1",
  205. }: endpoints.Endpoint{
  206. Hostname: "logs-fips.us-west-1.amazonaws.com",
  207. CredentialScope: endpoints.CredentialScope{
  208. Region: "us-west-1",
  209. },
  210. Deprecated: aws.TrueTernary,
  211. },
  212. endpoints.EndpointKey{
  213. Region: "fips-us-west-2",
  214. }: endpoints.Endpoint{
  215. Hostname: "logs-fips.us-west-2.amazonaws.com",
  216. CredentialScope: endpoints.CredentialScope{
  217. Region: "us-west-2",
  218. },
  219. Deprecated: aws.TrueTernary,
  220. },
  221. endpoints.EndpointKey{
  222. Region: "il-central-1",
  223. }: endpoints.Endpoint{},
  224. endpoints.EndpointKey{
  225. Region: "me-central-1",
  226. }: endpoints.Endpoint{},
  227. endpoints.EndpointKey{
  228. Region: "me-south-1",
  229. }: endpoints.Endpoint{},
  230. endpoints.EndpointKey{
  231. Region: "sa-east-1",
  232. }: endpoints.Endpoint{},
  233. endpoints.EndpointKey{
  234. Region: "us-east-1",
  235. }: endpoints.Endpoint{},
  236. endpoints.EndpointKey{
  237. Region: "us-east-1",
  238. Variant: endpoints.FIPSVariant,
  239. }: {
  240. Hostname: "logs-fips.us-east-1.amazonaws.com",
  241. },
  242. endpoints.EndpointKey{
  243. Region: "us-east-2",
  244. }: endpoints.Endpoint{},
  245. endpoints.EndpointKey{
  246. Region: "us-east-2",
  247. Variant: endpoints.FIPSVariant,
  248. }: {
  249. Hostname: "logs-fips.us-east-2.amazonaws.com",
  250. },
  251. endpoints.EndpointKey{
  252. Region: "us-west-1",
  253. }: endpoints.Endpoint{},
  254. endpoints.EndpointKey{
  255. Region: "us-west-1",
  256. Variant: endpoints.FIPSVariant,
  257. }: {
  258. Hostname: "logs-fips.us-west-1.amazonaws.com",
  259. },
  260. endpoints.EndpointKey{
  261. Region: "us-west-2",
  262. }: endpoints.Endpoint{},
  263. endpoints.EndpointKey{
  264. Region: "us-west-2",
  265. Variant: endpoints.FIPSVariant,
  266. }: {
  267. Hostname: "logs-fips.us-west-2.amazonaws.com",
  268. },
  269. },
  270. },
  271. {
  272. ID: "aws-cn",
  273. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  274. {
  275. Variant: endpoints.DualStackVariant,
  276. }: {
  277. Hostname: "logs.{region}.api.amazonwebservices.com.cn",
  278. Protocols: []string{"https"},
  279. SignatureVersions: []string{"v4"},
  280. },
  281. {
  282. Variant: endpoints.FIPSVariant,
  283. }: {
  284. Hostname: "logs-fips.{region}.amazonaws.com.cn",
  285. Protocols: []string{"https"},
  286. SignatureVersions: []string{"v4"},
  287. },
  288. {
  289. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  290. }: {
  291. Hostname: "logs-fips.{region}.api.amazonwebservices.com.cn",
  292. Protocols: []string{"https"},
  293. SignatureVersions: []string{"v4"},
  294. },
  295. {
  296. Variant: 0,
  297. }: {
  298. Hostname: "logs.{region}.amazonaws.com.cn",
  299. Protocols: []string{"https"},
  300. SignatureVersions: []string{"v4"},
  301. },
  302. },
  303. RegionRegex: partitionRegexp.AwsCn,
  304. IsRegionalized: true,
  305. Endpoints: endpoints.Endpoints{
  306. endpoints.EndpointKey{
  307. Region: "cn-north-1",
  308. }: endpoints.Endpoint{},
  309. endpoints.EndpointKey{
  310. Region: "cn-northwest-1",
  311. }: endpoints.Endpoint{},
  312. },
  313. },
  314. {
  315. ID: "aws-iso",
  316. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  317. {
  318. Variant: endpoints.FIPSVariant,
  319. }: {
  320. Hostname: "logs-fips.{region}.c2s.ic.gov",
  321. Protocols: []string{"https"},
  322. SignatureVersions: []string{"v4"},
  323. },
  324. {
  325. Variant: 0,
  326. }: {
  327. Hostname: "logs.{region}.c2s.ic.gov",
  328. Protocols: []string{"https"},
  329. SignatureVersions: []string{"v4"},
  330. },
  331. },
  332. RegionRegex: partitionRegexp.AwsIso,
  333. IsRegionalized: true,
  334. Endpoints: endpoints.Endpoints{
  335. endpoints.EndpointKey{
  336. Region: "us-iso-east-1",
  337. }: endpoints.Endpoint{},
  338. endpoints.EndpointKey{
  339. Region: "us-iso-west-1",
  340. }: endpoints.Endpoint{},
  341. },
  342. },
  343. {
  344. ID: "aws-iso-b",
  345. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  346. {
  347. Variant: endpoints.FIPSVariant,
  348. }: {
  349. Hostname: "logs-fips.{region}.sc2s.sgov.gov",
  350. Protocols: []string{"https"},
  351. SignatureVersions: []string{"v4"},
  352. },
  353. {
  354. Variant: 0,
  355. }: {
  356. Hostname: "logs.{region}.sc2s.sgov.gov",
  357. Protocols: []string{"https"},
  358. SignatureVersions: []string{"v4"},
  359. },
  360. },
  361. RegionRegex: partitionRegexp.AwsIsoB,
  362. IsRegionalized: true,
  363. Endpoints: endpoints.Endpoints{
  364. endpoints.EndpointKey{
  365. Region: "us-isob-east-1",
  366. }: endpoints.Endpoint{},
  367. },
  368. },
  369. {
  370. ID: "aws-iso-e",
  371. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  372. {
  373. Variant: endpoints.FIPSVariant,
  374. }: {
  375. Hostname: "logs-fips.{region}.cloud.adc-e.uk",
  376. Protocols: []string{"https"},
  377. SignatureVersions: []string{"v4"},
  378. },
  379. {
  380. Variant: 0,
  381. }: {
  382. Hostname: "logs.{region}.cloud.adc-e.uk",
  383. Protocols: []string{"https"},
  384. SignatureVersions: []string{"v4"},
  385. },
  386. },
  387. RegionRegex: partitionRegexp.AwsIsoE,
  388. IsRegionalized: true,
  389. },
  390. {
  391. ID: "aws-iso-f",
  392. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  393. {
  394. Variant: endpoints.FIPSVariant,
  395. }: {
  396. Hostname: "logs-fips.{region}.csp.hci.ic.gov",
  397. Protocols: []string{"https"},
  398. SignatureVersions: []string{"v4"},
  399. },
  400. {
  401. Variant: 0,
  402. }: {
  403. Hostname: "logs.{region}.csp.hci.ic.gov",
  404. Protocols: []string{"https"},
  405. SignatureVersions: []string{"v4"},
  406. },
  407. },
  408. RegionRegex: partitionRegexp.AwsIsoF,
  409. IsRegionalized: true,
  410. },
  411. {
  412. ID: "aws-us-gov",
  413. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  414. {
  415. Variant: endpoints.DualStackVariant,
  416. }: {
  417. Hostname: "logs.{region}.api.aws",
  418. Protocols: []string{"https"},
  419. SignatureVersions: []string{"v4"},
  420. },
  421. {
  422. Variant: endpoints.FIPSVariant,
  423. }: {
  424. Hostname: "logs-fips.{region}.amazonaws.com",
  425. Protocols: []string{"https"},
  426. SignatureVersions: []string{"v4"},
  427. },
  428. {
  429. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  430. }: {
  431. Hostname: "logs-fips.{region}.api.aws",
  432. Protocols: []string{"https"},
  433. SignatureVersions: []string{"v4"},
  434. },
  435. {
  436. Variant: 0,
  437. }: {
  438. Hostname: "logs.{region}.amazonaws.com",
  439. Protocols: []string{"https"},
  440. SignatureVersions: []string{"v4"},
  441. },
  442. },
  443. RegionRegex: partitionRegexp.AwsUsGov,
  444. IsRegionalized: true,
  445. Endpoints: endpoints.Endpoints{
  446. endpoints.EndpointKey{
  447. Region: "fips-us-gov-east-1",
  448. }: endpoints.Endpoint{
  449. Hostname: "logs.us-gov-east-1.amazonaws.com",
  450. CredentialScope: endpoints.CredentialScope{
  451. Region: "us-gov-east-1",
  452. },
  453. Deprecated: aws.TrueTernary,
  454. },
  455. endpoints.EndpointKey{
  456. Region: "fips-us-gov-west-1",
  457. }: endpoints.Endpoint{
  458. Hostname: "logs.us-gov-west-1.amazonaws.com",
  459. CredentialScope: endpoints.CredentialScope{
  460. Region: "us-gov-west-1",
  461. },
  462. Deprecated: aws.TrueTernary,
  463. },
  464. endpoints.EndpointKey{
  465. Region: "us-gov-east-1",
  466. }: endpoints.Endpoint{},
  467. endpoints.EndpointKey{
  468. Region: "us-gov-east-1",
  469. Variant: endpoints.FIPSVariant,
  470. }: {
  471. Hostname: "logs.us-gov-east-1.amazonaws.com",
  472. },
  473. endpoints.EndpointKey{
  474. Region: "us-gov-west-1",
  475. }: endpoints.Endpoint{},
  476. endpoints.EndpointKey{
  477. Region: "us-gov-west-1",
  478. Variant: endpoints.FIPSVariant,
  479. }: {
  480. Hostname: "logs.us-gov-west-1.amazonaws.com",
  481. },
  482. },
  483. },
  484. }