AWS: сохранение файла в S3 из EC2, если с экземпляром в целевой группе связан только Elastic IP. Иначе файл не пишет

В настоящее время я изучаю 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-адрес), будет стоить больше денег?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
385
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как правило, ваш экземпляр может получить доступ к S3 для загрузки файла пиццы тремя способами:

  1. Подключитесь к общедоступной конечной точке S3. Это означает, что ваш экземпляр должен иметь возможность подключаться к этой конечной точке через Интернет. Если ваш экземпляр находится в общедоступной подсети с автоматически назначенными общедоступными IP-адресами, он работает из коробки. Если ваш экземпляр не получает автоматически назначенный общедоступный IP-адрес, вы можете использовать эластичный IP-адрес, чтобы получить общедоступный IP-адрес для своего экземпляра.
  2. Подключитесь к общедоступной конечной точке S3, используя NAT-шлюз. Это полезно, когда ваш экземпляр находится в частной подсети, без прямого доступа к Интернету или каких-либо общедоступных IP-адресов.
  3. Используйте шлюз S3 VPC. Это позволяет полностью приватно подключаться к S3 без необходимости доступа в Интернет.

Ваше описание, похоже, указывает на то, что вариант 1 относится к вам.

Могут быть и другие возможности, например. Корзина S3 имеет политику корзины, которая разрешает загрузку только с IP-адресов из белого списка или диапазонов IP-адресов. Таким образом, возможно, ваш эластичный IP-адрес находится в белом списке, а другие IP-адреса — нет.

Спасибо @Marcin за ваш ответ. Я понял тебя №1. Чтобы еще раз подтвердить это, я внес некоторые изменения в описание вопроса. И не могли бы вы ответить на вопрос в конце редактирования.

Praveen L 20.12.2020 11:59

это потому, что ваш экземпляр не получает доступ к Интернету.

ваш экземпляр получит доступ к Интернету, если он имеет общедоступный 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". Это информация, которую я ищу. Я отредактировал вопрос с дополнительной информацией. Не могли бы вы ответить на это в конце редактирования.

Praveen L 20.12.2020 12:02

Другие вопросы по теме