CloudFormation с ELB и его общедоступным DNS
Я использую Cloudformation для построения стека с балансировкой нагрузки.
Меня беспокоит то, что каждый раз при повторном создании стека публичный URL-адрес ELB будет меняться, что потребует изменения псевдонима домена маршрута 53 веб-сайта, чтобы указывать на новый URL-адрес ELB.
Я могу добавить конфигурацию Cloudformation, чтобы автоматизировать это, но я опасаюсь, что сайт будет закрываться на несколько минут каждый раз, когда стек создается заново из-за проблем распространения DNS.
Насколько я понимаю, R53 обновит псевдоним примерно через 60 секунд, но кэширующие DNS-серверы могут не подчиняться TTL и могут обновляться в течение нескольких минут.
Один из вариантов - запустить старый и новый стеки вместе, но тогда экземпляры RDS в каждом VPC должны быть каким-то образом синхронизированы.
Также кажется, что в Cloudformation нет возможности связать существующий ELB со стеком, поэтому сохранение ELB отдельно от стека, кажется, не вариант.
Итак, каково правильное решение? Как я могу избежать каких-либо заметных простоев при замене производственного стека на недавно построенный стек CF?
1 ответ
Вы можете использовать политику стека, чтобы предотвратить обновление стека обновлениями ELB.
документация здесь: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html
пример:
{
"Statement" : [
{
"Effect" : "Deny",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*",
"Condition" : {
"StringEquals" : {
"ResourceType" : ["AWS::ElasticLoadBalancing::LoadBalancer"]
}
}
},
{
"Effect" : "Allow",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*"
}
]
}