使用 AWS 的 GO SDK 获取区域与终端节点信息
2017-04-15 16:20
656 查看
LCTT 译注: 终端节点(Endpoint),详情请见: http://docs.amazonaws.cn/general/latest/gr/rande.html
最新发布的 GO 的 SDK v1.6.0 版本,加入了获取区域与终端节点信息的功能。它可以很方便地列出区域、服务和终端节点的相关信息。可以通过 github.com/aws/aws-sdk-go/aws/endpoints 包使用这些功能。
endpoints 包提供了一个易用的接口,可以获取到一个服务的终端节点的 url 列表和区域列表信息。并且我们将相关信息根据 AWS 服务区域进行了分组,如 AWS 标准、AWS 中国和 AWS GovCloud(美国)。
如果你需要自定义终端节点的解析逻辑,你可以实现
以下示例,创建了一个配置好的 Session,然后 Amazon S3 服务的客户端就可以使用这个自定义的终端节点。
除了分区表之外,endpoints 包也提供了每个分区组的 getter 函数。这些工具函数可以方便列出指定分区,而不用执行默认解析器列出所有的分区。
当你获取区域和服务值后,可以调用
获取更多 AWS SDK for GO 信息, 请关注其开源仓库。若你有更好的看法,请留言评论。
via: https://aws.amazon.com/cn/blogs/developer/using-the-aws-sdk-for-gos-regions-and-endpoints-metadata
作者:Jason Del Ponte 译者:Vic020 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
最新发布的 GO 的 SDK v1.6.0 版本,加入了获取区域与终端节点信息的功能。它可以很方便地列出区域、服务和终端节点的相关信息。可以通过 github.com/aws/aws-sdk-go/aws/endpoints 包使用这些功能。
endpoints 包提供了一个易用的接口,可以获取到一个服务的终端节点的 url 列表和区域列表信息。并且我们将相关信息根据 AWS 服务区域进行了分组,如 AWS 标准、AWS 中国和 AWS GovCloud(美国)。
解析终端节点
设置 SDK 的默认配置时, SDK 会自动地使用endpoints.DefaultResolver函数。你也可以自己调用包中的
EndpointFor方法来解析终端节点。
// 解析在us-west-2区域的S3服务的终端节点 resolver := endpoints.DefaultResolver() endpoint, err := resolver.EndpointFor(endpoints.S3ServiceID, endpoints.UsWest2RegionID) if err != nil { fmt.Println("failed to resolve endpoint", err) return } fmt.Println("Resolved URL:", endpoint.URL)
如果你需要自定义终端节点的解析逻辑,你可以实现
endpoints.Resolver接口,并传值给
aws.Config.EndpointResolver。当你打算编写自定义的终端节点逻辑,让 SDK 可以用来解析服务的终端节点时候,这个功能就会很有用。
以下示例,创建了一个配置好的 Session,然后 Amazon S3 服务的客户端就可以使用这个自定义的终端节点。
s3CustResolverFn := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) { if service == "s3" { return endpoints.ResolvedEndpoint{ URL: "s3.custom.endpoint.com", SigningRegion: "custom-signing-region", }, nil } return defaultResolver.EndpointFor(service, region, optFns...) } sess := session.Must(session.NewSessionWithOptions(session.Options{ Config: aws.Config{ Region: aws.String("us-west-2"), EndpointResolver: endpoints.ResolverFunc(s3CustResolverFn), }, }))
分区
endpoints.DefaultResolver函数的返回值可以被
endpoints.EnumPartitions接口使用。这样就可以获取 SDK 使用的分区片段,也可以列出每个分区的分区信息。
// 迭代所有分区表打印每个分区的ID resolver := endpoints.DefaultResolver() partitions := resolver.(endpoints.EnumPartitions).Partitions() for _, p := range partitions { fmt.Println("Partition:", p.ID()) }
除了分区表之外,endpoints 包也提供了每个分区组的 getter 函数。这些工具函数可以方便列出指定分区,而不用执行默认解析器列出所有的分区。
partition := endpoints.AwsPartition() region := partition.Regions()[endpoints.UsWest2RegionID] fmt.Println("Services in region:", region.ID()) for id, _ := range region.Services() { fmt.Println(id) }
当你获取区域和服务值后,可以调用
ResolveEndpoint。这样解析端点时,就可以提供分区的过滤视图。
获取更多 AWS SDK for GO 信息, 请关注其开源仓库。若你有更好的看法,请留言评论。
via: https://aws.amazon.com/cn/blogs/developer/using-the-aws-sdk-for-gos-regions-and-endpoints-metadata
作者:Jason Del Ponte 译者:Vic020 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
相关文章推荐
- 使用百度地图定位SDK获取定位信息。
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 使用百度定位SDK获取当前位置的信息
- 使用 Diagwait 作为诊断工具,获取用于诊断 Oracle Clusterware 节点驱逐的更多信息 (文档 ID 1525761.1)
- 使用VMware VSphere WebService SDK进行开发 (四)——获取集群(Cluster, ComputeResource)的相关信息
- xml-使用dom去遍历xml文件和获取指定节点信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 使用GeoIP获取IP区域信息
- 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
- 在Android Studio中使用BaiduMap SDK实时获取当地位置信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 使用VMware VSphere WebService SDK进行开发 (四)——获取集群(Cluster, ComputeResource)的相关信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 在vb中使用Iphlpapi.dll获取网络信息 第一章 前言
- C#使用反射机制获取类信息
- javascript 的高级应用 获取浏览器的信息:使用navigator对象
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第二节 获取MIB-II 接口表