Route53: запрос доменных записей по доменному имени - PullRequest
0 голосов
/ 01 мая 2019

Использование Go и AWS-SDK

Я пытаюсь запросить данные о маршруте 53 CNAME и A, перечисленные в консоли AWS в разделе Route53 -> Размещенные зоны. Я могу сделать запрос, используя следующий код, но он требует (загадочного) 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)

edit: о, кроме того, StartRecordType со значением "CNAME" выдает ошибку проверки, поэтому я не уверен, что мне следует использовать там.

1 Ответ

1 голос
/ 02 мая 2019

Сначала вы должны выполнить поиск, чтобы получить 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
}
...