doc.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Package endpoints provides the types and functionality for defining regions
  2. // and endpoints, as well as querying those definitions.
  3. //
  4. // The SDK's Regions and Endpoints metadata is code generated into the endpoints
  5. // package, and is accessible via the DefaultResolver function. This function
  6. // returns a endpoint Resolver will search the metadata and build an associated
  7. // endpoint if one is found. The default resolver will search all partitions
  8. // known by the SDK. e.g AWS Standard (aws), AWS China (aws-cn), and
  9. // AWS GovCloud (US) (aws-us-gov).
  10. // .
  11. //
  12. // Enumerating Regions and Endpoint Metadata
  13. //
  14. // Casting the Resolver returned by DefaultResolver to a EnumPartitions interface
  15. // will allow you to get access to the list of underlying Partitions with the
  16. // Partitions method. This is helpful if you want to limit the SDK's endpoint
  17. // resolving to a single partition, or enumerate regions, services, and endpoints
  18. // in the partition.
  19. //
  20. // resolver := endpoints.DefaultResolver()
  21. // partitions := resolver.(endpoints.EnumPartitions).Partitions()
  22. //
  23. // for _, p := range partitions {
  24. // fmt.Println("Regions for", p.ID())
  25. // for id, _ := range p.Regions() {
  26. // fmt.Println("*", id)
  27. // }
  28. //
  29. // fmt.Println("Services for", p.ID())
  30. // for id, _ := range p.Services() {
  31. // fmt.Println("*", id)
  32. // }
  33. // }
  34. //
  35. // Using Custom Endpoints
  36. //
  37. // The endpoints package also gives you the ability to use your own logic how
  38. // endpoints are resolved. This is a great way to define a custom endpoint
  39. // for select services, without passing that logic down through your code.
  40. //
  41. // If a type implements the Resolver interface it can be used to resolve
  42. // endpoints. To use this with the SDK's Session and Config set the value
  43. // of the type to the EndpointsResolver field of aws.Config when initializing
  44. // the session, or service client.
  45. //
  46. // In addition the ResolverFunc is a wrapper for a func matching the signature
  47. // of Resolver.EndpointFor, converting it to a type that satisfies the
  48. // Resolver interface.
  49. //
  50. //
  51. // myCustomResolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) {
  52. // if service == endpoints.S3ServiceID {
  53. // return endpoints.ResolvedEndpoint{
  54. // URL: "s3.custom.endpoint.com",
  55. // SigningRegion: "custom-signing-region",
  56. // }, nil
  57. // }
  58. //
  59. // return endpoints.DefaultResolver().EndpointFor(service, region, optFns...)
  60. // }
  61. //
  62. // sess := session.Must(session.NewSession(&aws.Config{
  63. // Region: aws.String("us-west-2"),
  64. // EndpointResolver: endpoints.ResolverFunc(myCustomResolver),
  65. // }))
  66. package endpoints