Трудно понять случай использования желания изменить IP-адрес экземпляра среды Elastic Beanstalk.Основное преимущество, которое обеспечивает управляемый сервис, такой как Elastic Beanstalk, - это абстракция над базовой архитектурой для развертывания.Вам предоставляется CNAME для доступа к API среды (вашего приложения), и вам не следует полагаться на внутренние IP-адреса или URL-адреса балансировщика нагрузки, поскольку они могут быть добавлены или удалены службой beanstalk по желанию.
Тем не менее, есть способ, которым вы можете добиться, изменив IP-адреса для базовых экземпляров.
Elastic Beanstalk Rebuild Environment
уничтожает существующие ресурсы, включая EC2, и создает новые ресурсы, в результате чего ваши экземпляры получают новые IP-адреса.Это будет работать, учитывая, что запланированное время простоя (на несколько минут в зависимости от ваших ресурсов) не является проблемой для этого варианта использования.
Вы можете использовать один из следующих двух способов для планирования перестройки среды
Решение 1:
Вы можете запланировать Rebuild Environment
, используя простоелямбда-функция.
import boto3
envid=['e-awsenvidid']
client = boto3.client('elasticbeanstalk')
def handler(event, context):
try:
for appid in range(len(envid)):
response = client.rebuild_environment(EnvironmentId=str(envid[appid].strip()))
if response:
print('Restore environment %s' %str(envid[appid]))
else:
print('Failed to Restore environment %s' %str(envid[appid]))
except Exception as e:
print('EnvironmentID is not valid')
Для этого вам потребуется создать роль IAM с необходимыми разрешениями.
Подробное руководство можно найти в данном руководстве AWS .
Решение 2:
Вы можете использовать задание cronвосстановить среду, используя aws-cli.Чтобы добиться этого, выполните следующие действия.
- Создание экземпляра EC2
- Создание роли IAM с разрешением на перестройку среды
В следующем примере политики будетработа
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"elasticbeanstalk:RebuildEnvironment"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Присоединение роли IAM к экземпляру EC2 Добавление задания cron с помощью команды
crontab -e
В следующем примере задание cron перестраивает среду в 12.00 1-го числакаждый месяц
0 0 1 * * aws elasticbeanstalk rebuild-environment --environment-name my-environment-name
Сохраните cronjob и выйдите.
Не рекомендуется перестраивать среду без необходимости, но на данный момент нет явного способа выполнить ваши конкретные требования.Надеюсь, это поможет!
Дополнительная литература: