как я могу получить ВСЕ записи от route53? - PullRequest
0 голосов
/ 07 октября 2018

как я могу получить ВСЕ записи с маршрута 53?

здесь приведен фрагмент кода, который, похоже, сработал для кого-то, но мне не совсем ясно: https://github.com/aws/aws-sdk-ruby/issues/620

Попытка получить все (у меня около 7000 записей) с помощью наборов записей ресурсов, ноне могу заставить нумерацию работать с list_resource_record_sets.Вот что у меня есть:

route53 = Aws::Route53::Client.new
response = route53.list_resource_record_sets({ 
  start_record_name: fqdn(name),
  start_record_type: type,
  max_items: 100, # fyi - aws api maximum is 100 so we'll need to page 
}) 

response.last_page? 
response = response.next_page until response.last_page?

Я подтвердил, что попал в нужный регион, вижу запись, которую пытаюсь получить (чтобы я мог удалить позже) в консоли aws, но не могу показатьсячтобы получить его через API.Я использовал это: https://github.com/aws/aws-sdk-ruby/issues/620 в качестве отправной точки.

Есть идеи, что я делаю не так?Или есть более простой способ, возможно, другой метод в API, который я не нахожу, для меня, чтобы получить только нужную мне запись, учитывая hosted_zone_id, тип и имя?

1 Ответ

0 голосов
/ 07 октября 2018

Проблема, с которой вы столкнулись, связана с Ruby AWS SDK v2, но последняя версия - v3.Похоже, что с 2014 года ситуация может немного измениться, поскольку я не вижу методов #next_page или #last_page? в v2 API или v3 API .

Подумайте об использовании #next_record_name и #next_record_type из ответа, когда #is_truncated истинно.Это более согласуется с тем, как работают другие нумерации страниц в Ruby AWS SDK, например, при сканировании DynamoDB.

Должно работать что-то вроде следующего (хотя у меня нет учетной записи AWS с записями, чтобы проверить это):

route53 = Aws::Route53::Client.new

hosted_zone = ? # Required field according to the API docs
next_name = fqdn(name)
next_type = type

loop do
  response = route53.list_resource_record_sets(
    hosted_zone_id: hosted_zone,
    start_record_name: next_name,
    start_record_type: next_type,
    max_items: 100, # fyi - aws api maximum is 100 so we'll need to page 
  )

  records = response.resource_record_sets

  # Break here if you find the record you want

  # Also break if we've run out of pages
  break unless response.is_truncated

  next_name = response.next_record_name
  next_type = response.next_record_type
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...