endpoints.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  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. 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: "logs.{region}.api.aws",
  90. Protocols: []string{"https"},
  91. SignatureVersions: []string{"v4"},
  92. },
  93. {
  94. Variant: endpoints.FIPSVariant,
  95. }: {
  96. Hostname: "logs-fips.{region}.amazonaws.com",
  97. Protocols: []string{"https"},
  98. SignatureVersions: []string{"v4"},
  99. },
  100. {
  101. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  102. }: {
  103. Hostname: "logs-fips.{region}.api.aws",
  104. Protocols: []string{"https"},
  105. SignatureVersions: []string{"v4"},
  106. },
  107. {
  108. Variant: 0,
  109. }: {
  110. Hostname: "logs.{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-southeast-1",
  138. }: endpoints.Endpoint{},
  139. endpoints.EndpointKey{
  140. Region: "ap-southeast-2",
  141. }: endpoints.Endpoint{},
  142. endpoints.EndpointKey{
  143. Region: "ap-southeast-3",
  144. }: endpoints.Endpoint{},
  145. endpoints.EndpointKey{
  146. Region: "ca-central-1",
  147. }: endpoints.Endpoint{},
  148. endpoints.EndpointKey{
  149. Region: "eu-central-1",
  150. }: endpoints.Endpoint{},
  151. endpoints.EndpointKey{
  152. Region: "eu-north-1",
  153. }: endpoints.Endpoint{},
  154. endpoints.EndpointKey{
  155. Region: "eu-south-1",
  156. }: endpoints.Endpoint{},
  157. endpoints.EndpointKey{
  158. Region: "eu-west-1",
  159. }: endpoints.Endpoint{},
  160. endpoints.EndpointKey{
  161. Region: "eu-west-2",
  162. }: endpoints.Endpoint{},
  163. endpoints.EndpointKey{
  164. Region: "eu-west-3",
  165. }: endpoints.Endpoint{},
  166. endpoints.EndpointKey{
  167. Region: "fips-us-east-1",
  168. }: endpoints.Endpoint{
  169. Hostname: "logs-fips.us-east-1.amazonaws.com",
  170. CredentialScope: endpoints.CredentialScope{
  171. Region: "us-east-1",
  172. },
  173. Deprecated: aws.TrueTernary,
  174. },
  175. endpoints.EndpointKey{
  176. Region: "fips-us-east-2",
  177. }: endpoints.Endpoint{
  178. Hostname: "logs-fips.us-east-2.amazonaws.com",
  179. CredentialScope: endpoints.CredentialScope{
  180. Region: "us-east-2",
  181. },
  182. Deprecated: aws.TrueTernary,
  183. },
  184. endpoints.EndpointKey{
  185. Region: "fips-us-west-1",
  186. }: endpoints.Endpoint{
  187. Hostname: "logs-fips.us-west-1.amazonaws.com",
  188. CredentialScope: endpoints.CredentialScope{
  189. Region: "us-west-1",
  190. },
  191. Deprecated: aws.TrueTernary,
  192. },
  193. endpoints.EndpointKey{
  194. Region: "fips-us-west-2",
  195. }: endpoints.Endpoint{
  196. Hostname: "logs-fips.us-west-2.amazonaws.com",
  197. CredentialScope: endpoints.CredentialScope{
  198. Region: "us-west-2",
  199. },
  200. Deprecated: aws.TrueTernary,
  201. },
  202. endpoints.EndpointKey{
  203. Region: "me-central-1",
  204. }: endpoints.Endpoint{},
  205. endpoints.EndpointKey{
  206. Region: "me-south-1",
  207. }: endpoints.Endpoint{},
  208. endpoints.EndpointKey{
  209. Region: "sa-east-1",
  210. }: endpoints.Endpoint{},
  211. endpoints.EndpointKey{
  212. Region: "us-east-1",
  213. }: endpoints.Endpoint{},
  214. endpoints.EndpointKey{
  215. Region: "us-east-1",
  216. Variant: endpoints.FIPSVariant,
  217. }: {
  218. Hostname: "logs-fips.us-east-1.amazonaws.com",
  219. },
  220. endpoints.EndpointKey{
  221. Region: "us-east-2",
  222. }: endpoints.Endpoint{},
  223. endpoints.EndpointKey{
  224. Region: "us-east-2",
  225. Variant: endpoints.FIPSVariant,
  226. }: {
  227. Hostname: "logs-fips.us-east-2.amazonaws.com",
  228. },
  229. endpoints.EndpointKey{
  230. Region: "us-west-1",
  231. }: endpoints.Endpoint{},
  232. endpoints.EndpointKey{
  233. Region: "us-west-1",
  234. Variant: endpoints.FIPSVariant,
  235. }: {
  236. Hostname: "logs-fips.us-west-1.amazonaws.com",
  237. },
  238. endpoints.EndpointKey{
  239. Region: "us-west-2",
  240. }: endpoints.Endpoint{},
  241. endpoints.EndpointKey{
  242. Region: "us-west-2",
  243. Variant: endpoints.FIPSVariant,
  244. }: {
  245. Hostname: "logs-fips.us-west-2.amazonaws.com",
  246. },
  247. },
  248. },
  249. {
  250. ID: "aws-cn",
  251. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  252. {
  253. Variant: endpoints.DualStackVariant,
  254. }: {
  255. Hostname: "logs.{region}.api.amazonwebservices.com.cn",
  256. Protocols: []string{"https"},
  257. SignatureVersions: []string{"v4"},
  258. },
  259. {
  260. Variant: endpoints.FIPSVariant,
  261. }: {
  262. Hostname: "logs-fips.{region}.amazonaws.com.cn",
  263. Protocols: []string{"https"},
  264. SignatureVersions: []string{"v4"},
  265. },
  266. {
  267. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  268. }: {
  269. Hostname: "logs-fips.{region}.api.amazonwebservices.com.cn",
  270. Protocols: []string{"https"},
  271. SignatureVersions: []string{"v4"},
  272. },
  273. {
  274. Variant: 0,
  275. }: {
  276. Hostname: "logs.{region}.amazonaws.com.cn",
  277. Protocols: []string{"https"},
  278. SignatureVersions: []string{"v4"},
  279. },
  280. },
  281. RegionRegex: partitionRegexp.AwsCn,
  282. IsRegionalized: true,
  283. Endpoints: endpoints.Endpoints{
  284. endpoints.EndpointKey{
  285. Region: "cn-north-1",
  286. }: endpoints.Endpoint{},
  287. endpoints.EndpointKey{
  288. Region: "cn-northwest-1",
  289. }: endpoints.Endpoint{},
  290. },
  291. },
  292. {
  293. ID: "aws-iso",
  294. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  295. {
  296. Variant: endpoints.FIPSVariant,
  297. }: {
  298. Hostname: "logs-fips.{region}.c2s.ic.gov",
  299. Protocols: []string{"https"},
  300. SignatureVersions: []string{"v4"},
  301. },
  302. {
  303. Variant: 0,
  304. }: {
  305. Hostname: "logs.{region}.c2s.ic.gov",
  306. Protocols: []string{"https"},
  307. SignatureVersions: []string{"v4"},
  308. },
  309. },
  310. RegionRegex: partitionRegexp.AwsIso,
  311. IsRegionalized: true,
  312. Endpoints: endpoints.Endpoints{
  313. endpoints.EndpointKey{
  314. Region: "us-iso-east-1",
  315. }: endpoints.Endpoint{},
  316. endpoints.EndpointKey{
  317. Region: "us-iso-west-1",
  318. }: endpoints.Endpoint{},
  319. },
  320. },
  321. {
  322. ID: "aws-iso-b",
  323. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  324. {
  325. Variant: endpoints.FIPSVariant,
  326. }: {
  327. Hostname: "logs-fips.{region}.sc2s.sgov.gov",
  328. Protocols: []string{"https"},
  329. SignatureVersions: []string{"v4"},
  330. },
  331. {
  332. Variant: 0,
  333. }: {
  334. Hostname: "logs.{region}.sc2s.sgov.gov",
  335. Protocols: []string{"https"},
  336. SignatureVersions: []string{"v4"},
  337. },
  338. },
  339. RegionRegex: partitionRegexp.AwsIsoB,
  340. IsRegionalized: true,
  341. Endpoints: endpoints.Endpoints{
  342. endpoints.EndpointKey{
  343. Region: "us-isob-east-1",
  344. }: endpoints.Endpoint{},
  345. },
  346. },
  347. {
  348. ID: "aws-us-gov",
  349. Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
  350. {
  351. Variant: endpoints.DualStackVariant,
  352. }: {
  353. Hostname: "logs.{region}.api.aws",
  354. Protocols: []string{"https"},
  355. SignatureVersions: []string{"v4"},
  356. },
  357. {
  358. Variant: endpoints.FIPSVariant,
  359. }: {
  360. Hostname: "logs-fips.{region}.amazonaws.com",
  361. Protocols: []string{"https"},
  362. SignatureVersions: []string{"v4"},
  363. },
  364. {
  365. Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
  366. }: {
  367. Hostname: "logs-fips.{region}.api.aws",
  368. Protocols: []string{"https"},
  369. SignatureVersions: []string{"v4"},
  370. },
  371. {
  372. Variant: 0,
  373. }: {
  374. Hostname: "logs.{region}.amazonaws.com",
  375. Protocols: []string{"https"},
  376. SignatureVersions: []string{"v4"},
  377. },
  378. },
  379. RegionRegex: partitionRegexp.AwsUsGov,
  380. IsRegionalized: true,
  381. Endpoints: endpoints.Endpoints{
  382. endpoints.EndpointKey{
  383. Region: "fips-us-gov-east-1",
  384. }: endpoints.Endpoint{
  385. Hostname: "logs.us-gov-east-1.amazonaws.com",
  386. CredentialScope: endpoints.CredentialScope{
  387. Region: "us-gov-east-1",
  388. },
  389. Deprecated: aws.TrueTernary,
  390. },
  391. endpoints.EndpointKey{
  392. Region: "fips-us-gov-west-1",
  393. }: endpoints.Endpoint{
  394. Hostname: "logs.us-gov-west-1.amazonaws.com",
  395. CredentialScope: endpoints.CredentialScope{
  396. Region: "us-gov-west-1",
  397. },
  398. Deprecated: aws.TrueTernary,
  399. },
  400. endpoints.EndpointKey{
  401. Region: "us-gov-east-1",
  402. }: endpoints.Endpoint{},
  403. endpoints.EndpointKey{
  404. Region: "us-gov-east-1",
  405. Variant: endpoints.FIPSVariant,
  406. }: {
  407. Hostname: "logs.us-gov-east-1.amazonaws.com",
  408. },
  409. endpoints.EndpointKey{
  410. Region: "us-gov-west-1",
  411. }: endpoints.Endpoint{},
  412. endpoints.EndpointKey{
  413. Region: "us-gov-west-1",
  414. Variant: endpoints.FIPSVariant,
  415. }: {
  416. Hostname: "logs.us-gov-west-1.amazonaws.com",
  417. },
  418. },
  419. },
  420. }