Назад | Перейти на главную страницу

После выпуска эластичного IP-адреса на EC2 Cloudfront перестал работать

Я достиг предела выделения эластичных IP-адресов в моем аккаунте AWS. У меня есть приложение Elastic Beanstalk, которое обслуживается через Cloudfront. Я подумал, что, поскольку CNAME приложения было сопоставлено с CNAME Cloudfront, выпуск эластичного IP-адреса ec2-приложения EB должно быть нормально, поэтому я сделал это. Однако приложение EB перестало работать. Даже если я попытался получить доступ к веб-приложению с помощью CNAME Cloudfront, оно все равно недоступно. Экземпляру ec2 был назначен общедоступный IP-адрес вскоре после выпуска эластичного IP-адреса.

Может кто-нибудь пролить свет? Как я могу исправить эту проблему?

Спасибо

Коротко: CloudFront не сидит в вашем VPC и разговаривает с вашим EB через общедоступный Интернет. Следовательно, ваш EB нужен публичный IP-адрес, доступный из CloudFront. Общедоступный IP-адрес может быть эластичным или «стандартным» эфемерным общедоступным IP-адресом.

Эластичный IP имеет некоторые преимущества перед стандартный публичный IP - что наиболее важно, его можно переместить из экземпляра EC2 в экземпляр EC2, и он останется выделенным в вашей учетной записи, даже если EC2 остановлен.

Я не уверен, может ли EB работать с стандартные публичные IP-адреса (не EIP). Я думаю, не потому, что они довольно нестабильны и непредсказуемы, и может быть довольно сложно обновлять имя EB DNS при их изменении. С другой стороны, эластичные IP-адреса назначаются вашей учетной записи и могут быть перемещены от экземпляра EB к экземпляру, поэтому нет необходимости обновлять DNS.

Возможно, вам придется снова подключить старый EIP к EB, чтобы он снова заработал.

Предлагаю вам поднять Запрос на поддержку AWS ➡ Увеличение лимита обслуживания и запросить количество доступных EIP повышен на 5 или 10.

Надеюсь, это поможет :)

В конце концов я понял это сам. Похоже, что в зависимости от типа вашей среды EB, общедоступные IP-адреса работают по-разному.

Для сред с одним экземпляром, как в моем случае, AWS назначает эластичный IP-адрес, несмотря ни на что. Согласно документам:

Среда с одним экземпляром содержит один экземпляр Amazon EC2 с эластичным IP-адресом.

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

Решение:

Я исправил это, изменив среду на балансировку нагрузки, с 1 мин и 1 макс, количество экземпляров всегда будет равно 1. Среда с балансировкой нагрузки полагается на CNAME ELB, а не на IP-адрес EC2, так что даже мой экземпляр ec2 общедоступен IP-адрес изменился, запись DNS для моего приложения EB не будет затронута, как и распространение облачного интерфейса.