Есть ли способ иметь несколько внешних IP-адресов с Elastic Beanstalk? - PullRequest
0 голосов
/ 19 сентября 2019

Я использую Amazon Elastic Beanstalk с VPC и хочу иметь несколько сред (рабочих) с разными IP-адресами.Мне не нужно, чтобы они были статичными, я бы предпочел, чтобы они менялись регулярно, если это возможно.

Есть ли способ иметь несколько сред с динамическими внешними IP-адресами?

1 Ответ

0 голосов
/ 23 сентября 2019

Трудно понять случай использования желания изменить 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.Чтобы добиться этого, выполните следующие действия.

  1. Создание экземпляра EC2
  2. Создание роли 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 и выйдите.

Не рекомендуется перестраивать среду без необходимости, но на данный момент нет явного способа выполнить ваши конкретные требования.Надеюсь, это поможет!

Дополнительная литература:

...