Uruchamiaj instancje za pomocą Elastic Beanstalk bez skonfigurowanego elastycznego adresu IP

10

Tworzę narzędzie do wdrażania obrazów Docker na EC2 za pomocą ElasticBeanstalk, aby zespół programistów mógł szybko demonstrować swoją pracę bez konieczności łączenia. Nie chcę włączać elastycznego adresu IP dla tych aplikacji, ponieważ są one krótkotrwałe.

Pytam o to, ponieważ jeśli moje narzędzie tworzy więcej niż 5 aplikacji (i działa dość szybko), każda nowa aplikacja zawiedzie, ponieważ do nowej aplikacji nie można przypisać elastycznego adresu IP. Wynika to z faktu, że na koncie AWS zwykle dostępnych jest maksymalnie 5 elastycznych adresów IP . Mogę przejść do konsoli internetowej aws i wybrać opcję „Odłącz elastyczny adres IP” (patrz poniżej) w instancji, po czym instancja ec2 otrzyma nowy adres IP (po kilku minutach). Tego właśnie chcę, ale chcę to zrobić programowo i wolałbym uruchomić aplikację bez niego, zamiast robić to po utworzeniu instancji.

odznacz opcję menu

Czy istnieje opcja konfiguracji, której można użyć do wyłączenia elastycznego adresu IP dla nowej instancji?

Korzystam z węzła aws-sdk , ale wystarczą wszelkie wskazówki w dowolnym języku.

Tworzę m1.smallpojedyncze wystąpienia.

Jeśli nie jest to możliwe podczas uruchamiania, będę musiał oddzielić Elastyczny adres IP od instancji za pomocą funkcji EC2.disassociateAddress .

wyd.
źródło
Jeśli uruchamiasz w prywatnej podsieci: stackoverflow.com/questions/39086022/…
lonewarrior556

Odpowiedzi:

10

Korzystając ze środowiska typu „Pojedyncze wystąpienie”, zawsze otrzymujesz EIP.

Z przewodnika programisty Beanstalk, Typy środowiska :

Środowisko z jedną instancją zawiera jedną instancję Amazon EC2 z elastycznym adresem IP.

Wyłączenie opcji „Powiąż publiczny adres IP” nie ma żadnego efektu.

Przejdź do środowiska „Równoważenie obciążenia, skalowanie automatyczne”, aby obejść się bez EIP.

Jens Bannmann
źródło
W przeciwieństwie do innych odpowiedzi tutaj, to faktycznie rozwiązało mój problem, więc dziękuję :) Dla przyszłych podróżników w nowym oknie dialogowym Tworzenie środowiska wybierz opcję „Równoważenie obciążenia” pod przyciskiem „Konfiguruj więcej opcji” na końcu tworzenia środowiska Formularz.
Jacob Davis-Hansson,
1

Nie chcę włączać elastycznego adresu IP dla tych aplikacji, ponieważ są one krótkotrwałe.

Jeśli znajdujesz się w publicznej podsieci VPC (co jest prawdopodobne), jest ona wymagana, aby ta instancja mogła komunikować się z Internetem. Na http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html :

Aby umożliwić wystąpieniu w publicznej podsieci komunikację z Internetem, musi on mieć publiczny adres IP lub elastyczny adres IP powiązany z prywatnym adresem IP w Twojej instancji . Twoja instancja zna tylko prywatną (wewnętrzną) przestrzeń adresów IP zdefiniowaną w VPC i podsieci. Brama internetowa logicznie zapewnia NAT w trybie bezpośrednim w imieniu Twojej instancji, dzięki czemu gdy ruch opuszcza podsieć VPC i przechodzi do Internetu, pole adresu odpowiedzi jest ustawione na publiczny adres IP lub elastyczny adres IP instancji , a nie jego prywatny adres IP. I odwrotnie, ruch przeznaczony na publiczny adres IP lub elastyczny adres IP instancji ma adres docelowy przetłumaczony na prywatny adres IP instancji, zanim ruch zostanie dostarczony do VPC.

Automatycznie przypisane numery EIP, które są dostarczane z nową instancją, nic nie kosztują i automatycznie znikają, gdy instancja zostanie wycofana z eksploatacji.

ceejayoz
źródło
Dziękuję za odpowiedź, dodałem więcej informacji do pytania wyjaśniającego problem, który widzę i jak mogę go obejść za pomocą konsoli internetowej. Być może nie rozumiem, jak działa AWS - ale możesz doradzić dalej, byłbym bardzo wdzięczny.
wyd.
@ed. Nie znam się zbytnio na EB, ale wygląda na to, że z dokumentów, które chcesz ustawić aws:ec2:vpc:AssociatePublicIpAddressw swojej konfiguracji EB (i że jest to specyficzne dla EB z pojedynczą instancją). Ewentualnie poproś AWS o zwiększenie limitu EIP - z mojego doświadczenia wynika, że ​​chętnie go przyznają w takiej sytuacji.
ceejayoz,
na zdrowie spróbuję tego.
wyd.
Próbowałem powyższej flagi bezskutecznie. Myślę, że po prostu zadzwonię do disassociateAddress przez sdk.
wyd.
1
Dla przypomnienia: aws:ec2:vpc:AssociatePublicIpAddressdotyczy tylko instancji ec2, jeśli ustawisz wartość false, disassociateAddressinstancja nie będzie miała publicznego adresu IP.
wyd.
0

Istnieje elastyczna opcja środowiska łodyg fasoli, która może być tym, czego szukasz.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer

Przestrzeń nazw: aws: ec2: vpc AssociatePublicIpAddress: false

Jeśli ją ustawisz, wszystkie węzły utworzone przez to środowisko nie będą miały publicznego adresu IP. Ruch przychodzący będzie musiał korzystać z modułu równoważenia obciążenia. VPC i podsieci będą musiały być połączone z bramą NAT lub bramą internetową, aby uzyskać dostęp do wychodzącego Internetu. Jeśli nie masz wychodzącego dostępu do Internetu, kompilacja elastycznej fasoli zakończy się niepowodzeniem (nie będzie w stanie uzyskać dostępu do usług AWS).

Sam
źródło
Dodałem to do konfiguracji EBS: { "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },mimo to Elastyczne IP jest powiązane z tym wystąpieniem. Jakieś wskazówki?
Kostanos
1
to nie jest prawda, nie ma to wpływu na eip
A-Developer-Has-No-Name
0

Po odłączeniu elastycznego adresu IP masz około 10 sekund na jego „zwolnienie”. Jeśli go zwolnisz, nie wróci.

lonewarrior556
źródło