Ошибки Migitate «Регулирование: превышена скорость» в terraform 0.11.7 применимы к AWS

#amazon-web-services #terraform #terraform-provider-aws

#amazon-web-services #terraform #terraform-provider-aws

Вопрос:

Кто-нибудь знает, как уменьшить регулирование при использовании terraform 0.11.7

 terraform-0.11.7 plan  -out proposed.plan -no-color 

Error: Error refreshing state: 1 error(s) occurred:
* module.ecs_alb.aws_alb_target_group.backend_internal_alb_target_group: 1 error(s) occurred:
* module.ecs_alb.aws_alb_target_group.backend_internal_alb_target_group[5]:
aws_alb_target_group.backend_internal_alb_target_group.5:
Error retrieving Target Group Attributes:
Throttling: Rate exceeded
status code: 400, request id: ...
make: *** [plan] Error 1
  

Я запускаю их из jenkins, поэтому я выполняю цикл с помощью try catch следующим образом (мы запускаем terraform через make, и команды tf будут plan, apply, output. Я жду 10 секунд между повторными попытками. Я, вероятно, увеличу это до чего-то большего.

 while (retry < retries) {
    try {
        makeError = null
        sh "make ${targets.join(' ')}"
        break
    } catch (Exception ex) {
        fileOperations([fileCopyOperation(excludes: '', flattenFiles: false, includes: '**log',
                renameFiles: false, sourceCaptureExpression: '',
                targetLocation: outputDir, targetNameExpression: '')])
        makeError = ex
        errorHandling.addResult('runMake', "path: ${path}, targets: ${targets}, retry: ${retry} of ${retries} failed with ${makeError}.  retrying")
        sleep time: waitSecs, unit: 'SECONDS'
    } finally {
        retry  
    }
}
if (makeError) {
    throw new Exception("Max retries reached (${retries})", makeError)
}
  

Комментарии:

1. ошибка связана с ограничениями aws. Вам нужно проверить ограничения, настроенные для службы, которую вы пытаетесь использовать?

2. @error404 хм, у нас 600 целевых групп и ограничение в 3000. Таким образом, превышение скорости, похоже, связано с количеством выполняемых нами действий. Мы сталкиваемся с этой проблемой при создании сред разработки — люди могут создавать их по своему усмотрению для любых целей — иногда у нас создается более 10 одновременно. Обычно мы сталкиваемся с проблемами такого класса. Итак, кажется, что слишком много вызовов API за слишком короткое время

3. Я не вижу фактической команды terraform, которую вы запускаете где-либо в вашем вопросе. Вы устанавливаете -parallelism параметр?

4. @MarkB извините за это. обновил вопрос с подробностями. Я не вижу параллелизма в команде или чего-либо о параллельном выполнении на уровне плана или модуля. Похоже, что параллельная проблема заключается в том, что у нас одновременно запущено несколько заданий jenkins для разных сред в одной и той же AZ

Ответ №1:

Кажется, что есть несколько вариантов (это от комментаторов и коллег)

  • измените логику повторных попыток с ожидания N секунд за повторную попытку на: подождите N секунд, повторите попытку, удвоите время ожидания, повторите (просто и работает на данный момент)
  • изменение параллелизма с значения по умолчанию 10 на что-то меньшее (просто сделать)
  • измените модуль плана с создания большого количества групп задач в одном модуле на использование нескольких модулей и планов (это становится проблемой, поскольку изменение состояния при переходе с одного плана на другой приведет к удалению, восстановлению или изменению состояния, чтобы избежать этой проблемы)

Учитывая, что первый, похоже, работает, похоже, нет необходимости переходить к другим. Если позже я обнаружу, что это не удается, я буду экспериментировать с настройкой параллелизма только для этой пары план / модуль