go - Route53:按域名查询域记录
问题描述
使用 Go 和 AWS-SDK
我正在尝试查询 AWS 控制台中 Route53 -> 托管区域下列出的 route53 CNAME 和 A 记录。我可以使用以下代码进行查询,但它需要我必须提前知道的(神秘的)HostedZoneId。
是否有不同的功能,或者基于域名的 HostedZoneId 查找,例如 XXX.XXX.com ?
AWSLogin(instance)
svc := route53.New(instance.AWSSession)
listParams := &route53.ListResourceRecordSetsInput{
HostedZoneId: aws.String("Z2798GPJN9CUFJ"), // Required
// StartRecordType: aws.String("CNAME"),
}
respList, err := svc.ListResourceRecordSets(listParams)
if err != nil {
fmt.Println(err.Error())
return
}
// Pretty-print the response data.
fmt.Println("All records:")
fmt.Println(respList)
编辑:哦,另外,值为“CNAME”的 StartRecordType 会引发验证错误,所以我不确定我应该在那里使用什么。
解决方案
您首先必须进行查找以获取 HostedZoneID。这是我为它编写的函数。:
func GetHostedZoneIdByNameLookup(awsSession string, HostedZoneName string) (HostedZoneID string, err error) {
svc := route53.New(awsSession)
listParams := &route53.ListHostedZonesByNameInput{
DNSName: aws.String(HostedZoneName), // Required
}
req, resp := svc.ListHostedZonesByNameRequest(listParams)
err = req.Send()
if err != nil {
return "", err
}
HostedZoneID = *resp.HostedZones[0].Id
// remove the /hostedzone/ path if it's there
if strings.HasPrefix(HostedZoneID, "/hostedzone/") {
HostedZoneID = strings.TrimPrefix(HostedZoneID, "/hostedzone/")
}
return HostedZoneID, nil
}
推荐阅读
- sql - 如何在 SQL Server 中编写客户订单
- excel - 您如何在 Excel 上已有数据的一组行上设置要求或规则?
- javascript - 是否需要 event.pageX 空检查?
- node.js - NPM CLI 应用程序相对路径不起作用
- rust - 装箱列表的第一个缺点是在堆栈上吗?
- symfony4 - 尝试从命名空间“Lexik\Bundle\JWTAuthenticationBundle\DependencyInjection\Security\Factory”加载类“JWTUserFactory”
- c# - 将 lambda 表达式解析为组件
- python - 在Python中提取花括号之间的内容
- .net - 无法加载引用的组件:vsocx6.ocx
- azure - 从 CircleCI 部署到 Azure