Как создать запись CNAME с помощью AWS SDK - PullRequest
0 голосов
/ 23 мая 2018

Successful through the console


Я могу создать запись CNAME через консоль AWS. Нет проблем, см. Рисунок выше.Но когда я пытаюсь сделать то же самое программно с помощью AWS Route53 SDK, я получаю

com.amazonaws.services.route53.model.InvalidInputException: недопустимый запрос (Сервис: AmazonRoute53; Код состояния:400; Код ошибки: InvalidInput; Идентификатор запроса: 7fd7b5d1-5ea8-11e8-a252-7f474094c446)

Вот мой попытанный код

private static final String QA_HOSTED_ZONE_ID = "UUIDFromConsole";                

GetHostedZoneRequest getHostedZoneRequest = new GetHostedZoneRequest(HOSTED_ZONE_ID);
    GetHostedZoneResult result = route53Client.getHostedZone(getHostedZoneRequest); ResourceRecordSet resourceRecordSet = new ResourceRecordSet("DN4TheRecordSet", RRType.CNAME);
    GeoLocation geoLocation = new GeoLocation();
    geoLocation.setContinentCode("NA");
    geoLocation.setSubdivisionCode("NY");
    resourceRecordSet.setGeoLocation(geoLocation);
    resourceRecordSet.setTTL(50L);
    resourceRecordSet.setGeoLocation(geoLocation);
    resourceRecordSet.setSetIdentifier("uniqueid-statecode");Change addStateChange = new Change(ChangeAction.CREATE, resourceRecordSet);
    ChangeBatch changeBatch = new ChangeBatch(Arrays.asList(addStateChange));
    ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest = new ChangeResourceRecordSetsRequest().withHostedZoneId(HOSTED_ZONE_ID).withChangeBatch(changeBatch);
    route53Client.changeResourceRecordSets(changeResourceRecordSetsRequest);

Я также не могу настроитьзначение для CNAME, означающее, где я хочу перенаправить свой трафик после того, как он достигнет DN4TheRecordSet. Вероятно, это причина неправильной ошибки, которую я получаю в ответе.

Пожалуйста, помогите 101

1 Ответ

0 голосов
/ 30 мая 2018

Обнаружена проблема.

InvalidInputException ускользает от факта отсутствия ResourceRecord , что соответствует полю значения на рисунке выше.

Вот решение выше с добавлением ResourceRecord к ResourceRecordSet

private static final String QA_HOSTED_ZONE_ID = "UUIDFromConsole";                
private static final String REDIRECT_DNS = "DNS to want the cname to route to";
GetHostedZoneRequest getHostedZoneRequest = new GetHostedZoneRequest(HOSTED_ZONE_ID);
    GetHostedZoneResult result = route53Client.getHostedZone(getHostedZoneRequest); ResourceRecordSet resourceRecordSet = new ResourceRecordSet("DN4TheRecordSet", RRType.CNAME);
    GeoLocation geoLocation = new GeoLocation();
    geoLocation.setContinentCode("NA");
    geoLocation.setSubdivisionCode("NY");
    resourceRecordSet.setGeoLocation(geoLocation);
    resourceRecordSet.setTTL(50L);
    resourceRecordSet.setGeoLocation(geoLocation);
    resourceRecordSet.setSetIdentifier("uniqueid-statecode");
    resourceRecordSet.setResourceRecords(Arrays.asList(new ResourceRecord(REDIRECT_DNS))); // This line being missing cause the exception
    Change addStateChange = new Change(ChangeAction.CREATE, resourceRecordSet);
    ChangeBatch changeBatch = new ChangeBatch(Arrays.asList(addStateChange));
    ChangeResourceRecordSetsRequest changeResourceRecordSetsRequest = new ChangeResourceRecordSetsRequest().withHostedZoneId(HOSTED_ZONE_ID).withChangeBatch(changeBatch);
    route53Client.changeResourceRecordSets(changeResourceRecordSetsRequest);

См. Раздел Синтаксис геолокации на этой странице например полезной нагрузки, которую SDK создает и отправляет для вашего запроса.

...