#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 на что-то меньшее (просто сделать)
- измените модуль плана с создания большого количества групп задач в одном модуле на использование нескольких модулей и планов (это становится проблемой, поскольку изменение состояния при переходе с одного плана на другой приведет к удалению, восстановлению или изменению состояния, чтобы избежать этой проблемы)
Учитывая, что первый, похоже, работает, похоже, нет необходимости переходить к другим. Если позже я обнаружу, что это не удается, я буду экспериментировать с настройкой параллелизма только для этой пары план / модуль