Определите, можно ли продлить домен Route53 - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть несколько наборов доменов на route53, зарегистрированных в один и тот же день.Route53 автоматически продлевает эти домены, одновременно выставляя несколько счетов и несколько сборов с кредитных карт.Наш банк отрицает все, кроме первого.В ходе обсуждений банк рассматривает их как дублирующие транзакции, и AWS не изменит поведение процесса их продления.Это приводит к повторяющейся последовательности счетов-фактур, отмененных счетов-фактур, переоформленных счетов-фактур в течение нескольких дней.

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

Наш следующий домен, который будет продлен, - это домен .com.au.Мы находимся в 90-дневном окне регистрации доменов .com.au, однако запросы на продление не удаются с "An error occurred (InvalidInput) when calling the RenewDomain operation: The TLD .com.au only allows renewals with duration between 2 and 2 years".Мы правильно указываем текущий год истечения (ошибка приводит к другой ошибке) и запрашиваем продление на 2 года.

За последние 24 часа консоль добавила в консоль параметр (extend) для домена ввопрос, но запрос все еще не выполнен.

extend console button

1) Можно ли запросить продление через API, прежде чем AWS автоматически продлит домен?

2) Если да, есть ли способ определить, будет ли AWS обрабатывать запрос?

У нас еще не было возможности протестировать домен .com или любые другие TLD.

Пример кода:

domain_name=domain['DomainName']
days_to_expiry=(domain['Expiry']-datetime.datetime.now(dateutil.tz.UTC)).days
logging.info(route53.get_domain_detail(
    DomainName=domain_name
))
tld='.'+domain_name.split('.', maxsplit=1)[1]
renew_years = renewal_years(tld) # returns 2 for .com.au
logging.info('Next Domain {} is due for renewal. Expires in {} days. Renewing for {} years.'.format(domain_name, days_to_expiry, renew_years))
route53.renew_domain(
    DomainName=domain_name,
    DurationInYears=renew_years,
    CurrentExpiryYear=domain['Expiry'].year
)

Журналы функций:

[INFO]  {'DomainName': 'example.com.au', 'Nameservers': [{'Name': 'xxx', 'GlueIps': []}, ...], 'AutoRenew': True, 'AdminContact': {'FirstName': 'xxx', ...}, 'RegistrantContact': {...}, 'TechContact': {...}, 'AdminPrivacy': False, 'RegistrantPrivacy': True, 'TechPrivacy': False, 'RegistrarName': 'GANDI SAS', 'WhoIsServer': 'whois.gandi.net', 'RegistrarUrl': 'http://www.gandi.net', 'AbuseContactEmail': 'abuse@support.gandi.net', 'AbuseContactPhone': '+33.170377661', 'CreationDate': datetime.datetime(2016, 12, 21, ..., tzinfo=tzlocal()), 'UpdatedDate': datetime.datetime(2018, 11, 15, ..., tzinfo=tzlocal()), 'ExpirationDate': datetime.datetime(2019, 1, 16, 0, 0, tzinfo=tzlocal()), 'ResponseMetadata': {'RequestId': 'xxx', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'xxx', 'content-type': 'application/x-amz-json-1.1', 'content-length': '1708', 'date': 'Wed, 28 Nov 2018 ... GMT'}, 'RetryAttempts': 1}}
[INFO]  Next Domain example.com.au is due for renewal. Expires in 48 days. Renewing for 2 years.

Ответ:

{
  "errorMessage": "An error occurred (InvalidInput) when calling the RenewDomain operation: The TLD .com.au only allows renewals with duration between 2 and 2 years",
  "errorType": "InvalidInput",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 49, in lambda_handler\n    CurrentExpiryYear=domain['Expiry'].year\n",
    "  File \"/var/runtime/botocore/client.py\", line 320, in _api_call\n    return self._make_api_call(operation_name, kwargs)\n",
    "  File \"/var/runtime/botocore/client.py\", line 623, in _make_api_call\n    raise error_class(parsed_response, operation_name)\n"
  ]
}
...