使用 AWS 的 GO SDK 获取区域与终端节点信息
解析终端节点
设置 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
。这样解析端点时,就可以提供分区的过滤视图。
原文发布时间为:2017-04-15
本文来自云栖社区合作伙伴“Linux中国”
最后更新:2017-05-22 14:34:05
上一篇:
冶铁技术与古巴比伦的灭亡:科技进展可能对人类文明产生多大影响
下一篇:
Java Date Time 教程-java.util.Date
网络监管成难题:隐私泄露 安全漏洞太多
字典树-百度之星-Xor Sum
听说中国最顶尖的原创安全技术都聚集在此了
Oculus也陷隐私门:向Facebook发送隐私数据
spring3mvc框架开发中resin和tomcat默认servelt配置处理静态资源
keeps the bar green to keep the code clean" - JUNIT单元测试
c# 数据类型与运算符
展中华人民共和国税收征收管理法(主席令第四十九号) 2015年8月15日 - 会关于修改〈中华人民共和国文物保护法〉等十二部法律的决定》(主席令第...第八十九条 纳税人、扣缴义务人可以委托税务代理人代为办理税务事宜。 第...开相关人物 大中华人民共和国
阿里云幸运券领取及使用教程和常见问题FAQ
苹果大战FBI,四个回合的波折之后有哪些启示?