Я пишу скрипт, который будет вставлять новое правило слушателя elbv2 поверх правил слушателя, уже находящихся в alb.
response = elbv2_client.create_rule(
ListenerArn=listener_arn,
Priority=1,
Conditions=[
{
'Field': 'http-request-method',
'HttpRequestMethodConfig': {
'Values': ['GET']
}
}
],
Actions=[
{
'Type': 'fixed-response',
'FixedResponseConfig':
{
'ContentType': 'text/html',
'MessageBody': html_object,
'StatusCode': '504'
}
}
]
)
Так же, как вы делали бы на консоли AWS, когда вы вставьте новое правило сверху, и правила автоматически перенумеровываются.
Проблема в том, что номер правила ['Priority'] не совпадает с номером, отображаемым в консоли AWS (как указано в примечании здесь: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html)
Примечание: На консоли отображается относительный порядковый номер для каждого правила, а не приоритет правила. Вы можете получить приоритет правила, описав его с помощью AWS CLI или Elasti c API балансировки нагрузки.
И когда я использую elbv2 create_rule ( ), это дает мне эту ошибку, если самое верхнее правило установлено в Приоритет = 1.
botocore.errorfactory.PriorityInUseException: Произошла ошибка (PriorityInUse) при вызове операции CreateRule: Приоритет '1' в настоящее время используется
TI A!