Что такое Elastic IP в AWS и какую проблему он решает

Ответ

Elastic IP (EIP) — это статический публичный IPv4-адрес в AWS, который можно выделить для своего аккаунта и динамически привязывать к различным ресурсам, например, к EC2-инстансам или сетевым интерфейсам.

Проблема, которую он решает:

По умолчанию публичный IP-адрес, назначаемый EC2-инстансу, является динамическим. Он меняется каждый раз, когда инстанс останавливается и запускается. Это делает невозможным надежное обращение к серверу по IP-адресу (например, через DNS A-запись).

Решение с помощью Elastic IP:

EIP привязывается к вашему аккаунту, а не к конкретному инстансу. Вы можете в любой момент "переключить" его с одного инстанса на другой. Это обеспечивает стабильную точку входа для вашего приложения, даже если базовый сервер выходит из строя и его нужно заменить.

Ключевые особенности:

  • Статичность: Адрес не меняется при перезапуске или замене инстанса.
  • Гибкость: Можно быстро переназначить EIP на другой инстанс в том же регионе для минимизации времени простоя.
  • Тарификация: EIP бесплатен, пока он привязан к работающему EC2-инстансу. Плата взимается, если EIP выделен, но не используется, чтобы мотивировать освобождение дефицитных IPv4-адресов.

Пример привязки EIP к инстансу с помощью Python (boto3):

import boto3

ec2 = boto3.client('ec2', region_name='us-east-1')

# 1. Выделяем новый Elastic IP
response = ec2.allocate_address(Domain='vpc')
allocation_id = response['AllocationId']
public_ip = response['PublicIp']

print(f"Выделен новый EIP: {public_ip}")

# 2. Привязываем его к существующему инстансу
ec2.associate_address(
    InstanceId='i-0123456789abcdef0', # ID вашего инстанса
    AllocationId=allocation_id
)

print(f"EIP {public_ip} успешно привязан к инстансу.")

Аналогичные сервисы есть и у других провайдеров: Static IP в Google Cloud и Public IP addresses (Static) в Azure.

Ответ 18+ 🔞

Давай разжую про эти статические адреса в AWS, а то народ путается, как в трёх соснах, блядь.

Ну смотри, есть у тебя сервер в облаке (EC2-инстанс, ёпта). По умолчанию ему выдают публичный IP-адрес, чтоб из интернета достучаться. И всё бы ничего, но адрес этот — полная хуйня! Он динамический, блядь. Остановил ты свой инстанс, потом запустил — и всё, пипец, адрес новый! Представь, ты настроил DNS-запись на этот IP, а он взял и поменялся. Пиздец, сайт не грузится, пользователи орут, а ты сидишь и чешешь репу.

Вот для этого и придумали Elastic IP, или EIP, если по-пацански. Это как твой личный, нахуй, статический IPv4-адрес, который привязан к твоему аккаунту, а не к железяке. Ты его выделил — и он твой, пока сам не отдашь обратно в AWS.

Что он делает, этот красавчик?

Главная фишка — стабильность, ёбта! Ты привязываешь этот EIP к своему серверу. Сервер сдох? Запустил новый, хуяк — и перепривязал на него этот же самый адрес. DNS даже моргнуть не успеет, всё работает. Время простоя — ноль ебать, волнение — пиздец, но ты-то спокоен, как удав.

Важный нюанс, про который все забывают, пока им не прилетит счёт:

Сам EIP — бесплатный, но только если он привязан к работающему инстансу. Выделил адрес и он просто болтается, ни к чему не привязан? Готовь денежки, дружок, AWS тебя за это накажет, потому что IPv4-адреса — дефицит, их на всех не хватает. Мотивируют, суки, не захламлять пул. Так что не создавай их просто так, для галочки, а то будет тебе сюрприз.

Ну и как это в коде выглядит? Смотри, не зевай:

import boto3

ec2 = boto3.client('ec2', region_name='us-east-1')

# 1. Выделяем новый Elastic IP
response = ec2.allocate_address(Domain='vpc')
allocation_id = response['AllocationId']
public_ip = response['PublicIp']

print(f"Выделен новый EIP: {public_ip}")

# 2. Привязываем его к существующему инстансу
ec2.associate_address(
    InstanceId='i-0123456789abcdef0', # ID вашего инстанса
    AllocationId=allocation_id
)

print(f"EIP {public_ip} успешно привязан к инстансу.")

Вот и вся магия. Выделил, привязал — и спи спокойно. У других облачных провайдеров, ясное дело, тоже есть подобные штуки: в Google Cloud это Static IP, а в Azure — Public IP addresses (Static). Названия разные, а суть одна: дать тебе постоянную точку входа, чтобы не бегать, как угорелый, после каждого перезапуска.