使用Go和AWS-SDK
我试图查询Route53->托管区域下AWS控制台中列出的route53 CNAME和A记录。我可以使用以下代码进行查询,但是它需要我必须提前知道的(加密)HostedZoneId。
是否存在其他功能或基于域名(例如XXX.XXX.com)的HostedZoneId查找?
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会引发验证错误,所以我不确定在那里应该使用什么。
答案 0 :(得分:1)
您首先必须进行查找以获得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
}