В настоящее время я изучаю AWS, следуя курсу Pluralsight AWS Developer: Getting Started. В рамках этого курса приложение nodejs (пицца, создающая приложение) необходимо развернуть в AWS. Это приложение работает на экземпляре EC2, и когда мы создаем новую пиццу и нажимаем «Создать», файл png будет сохранен в ведре S3 (код, работающий в экземпляре EC2, будет записываться в S3).
Когда я запускал это приложение с URL-адресом балансировщика нагрузки, приложение загружалось, и когда я пытался сохранить только что созданную пиццу (изображение png), веб-страница зависала, а файл не сохранялся в s3.
Но если я свяжу эластичный IP-адрес с одним из экземпляров в целевой группе, файл будет правильно сохранен в S3.
Что касается разрешений для экземпляра EC2, группа безопасности имеет только балансировщик нагрузки, отличный от SSH.
И EC2 имеет полную роль доступа S3.
Но по-прежнему приложение работает только в том случае, если эластичный IP-адрес связан, даже если эластичный IP-адрес непригоден для использования (поскольку группа безопасности целевой группы EC2 имеет доступ только к балансировщику нагрузки, кроме SSH).
Зачем в данном случае нужен Elastic IP для корректного поведения.
Редактировать: Дополнительная информация:
Ковш S3: предоставляется полный публичный доступ.
Здесь ниже PUT
разрешенные методы могут быть недействительными. В качестве следа и ошибки я предоставил это.
Моя конфигурация маршрута подсети. Я думал, что это общедоступная подсеть. Пожалуйста, поправьте меня, если я ошибаюсь.
Мое предположение: Я могу быть совершенно неправ, но я понимаю, что моя подсеть является общедоступной подсетью, и мои экземпляры ec2 создаются в этой подсети. Экземпляр EC2 (с полной ролью доступа s3) имеет код для записи файлов PNG в S3 с указанными выше настройками (все общедоступные, насколько я понимаю).
Следовательно, я ожидаю, что этот ec2 должен записывать файл на S3 без Elastic IP.
Но понятно, что если автоматическое назначение IP-адресов включено, оно находится в точно таком же состоянии, как я вручную назначаю эластичные IP-адреса EC2, и, следовательно, этот сценарий работает.
Я понял, что каждому экземпляру EC2 будет назначен другой общедоступный IP-адрес после включения автоматического назначения IP-адресов. Подходит ли этот метод для таких требований?
Наличие нескольких общедоступных IP-адресов, назначенных, даже если они не используются (означает, что для доступа к приложению будет использоваться только URL-адрес балансировщика нагрузки, а не общедоступный IP-адрес), будет стоить больше денег?
Как правило, ваш экземпляр может получить доступ к S3 для загрузки файла пиццы тремя способами:
Ваше описание, похоже, указывает на то, что вариант 1 относится к вам.
Могут быть и другие возможности, например. Корзина S3 имеет политику корзины, которая разрешает загрузку только с IP-адресов из белого списка или диапазонов IP-адресов. Таким образом, возможно, ваш эластичный IP-адрес находится в белом списке, а другие IP-адреса — нет.
это потому, что ваш экземпляр не получает доступ к Интернету.
ваш экземпляр получит доступ к Интернету, если он имеет общедоступный IP-адрес (или EIP) и он находится в общедоступной подсети, и вы добавили «Интернет-шлюз».
кажется, вы не можете назначить общедоступный IP-адрес.. для назначения выполните следующие действия:
Выберите свою подсеть и выберите «Действия подсети», «Изменить автоматическое назначение IP». настройки. Затем включите автоматическое назначение общедоступного IPv4-адреса.
если вы не можете настроить общедоступный IP-адрес, привяжите к нему EIP.
ИЛИ
если вы хотите получить доступ к Интернету без общедоступного IP-адреса, вам нужно использовать «Шлюз NAT».
ИЛИ
если вы хотите сохранить файл в s3, не выходя из сети AWS (без интернета), используйте конечную точку VPC для S3.
Спасибо @Ravindra Bagale за ваш ответ. your instance will get access to internet if it having public IP ( or EIP) and it is in Public subnet and you have added "Internet Gateway"
. Это информация, которую я ищу. Я отредактировал вопрос с дополнительной информацией. Не могли бы вы ответить на это в конце редактирования.
Спасибо @Marcin за ваш ответ. Я понял тебя №1. Чтобы еще раз подтвердить это, я внес некоторые изменения в описание вопроса. И не могли бы вы ответить на вопрос в конце редактирования.