Изменение профиля экземпляра на эластичном бобовом стебле

У меня работает эластичный бобовый стебель с профилем экземпляра по умолчанию aws-elasticbeanstalk-ec2-role, Приложение использует закрытые ключи SSH для доступа к внешним ресурсам во время установки, что означает, что я использую .ebextensions config file скопировать материал из S3.

Однако по разным причинам мне нужно изменить профиль экземпляра, но я обнаружил, что это удивительно сложно, возможно, потому, что мой код имеет зависимости от профиля экземпляра, и кажется, что изменение конфигурации через веб-консоль AWS будет успешным, только если приложение успешно разворачивается, когда изменение конфигурации запускает новый экземпляр (изменение профиля экземпляра приводит к запуску нового экземпляра, а старый прекращается).

Я думаю, что ключевой вопрос заключается в том, что мой .ebextensions файл ссылается на профиль экземпляра (aws-elasticbeanstalk-ec2-role):

S3Auth: 
  buckets: 
    - <my-bucket>
  roleName: 
    ? "Fn::GetOptionSetting"
    : 
      DefaultValue: aws-elasticbeanstalk-ec2-role
      Namespace: "aws:asg:launchconfiguration"
      OptionName: IamInstanceProfile
  type: s3

Если я изменяю профиль экземпляра через консоль, запускается новый экземпляр и развертывается мое приложение, которое завершается ошибкой, поэтому изменение конфигурации отменяется. Если я сначала поменяю .ebextensions использовать новую роль, развертывание которой завершится неудачей, так как указанный профиль экземпляра не соответствует тому, что в данный момент имеет EB. И даже если сначала развернуть (что, конечно, не удастся), а затем изменить конфигурацию, похоже, что вновь развернутая (отказавшая) версия не будет использоваться, но вместо этого EB, вероятно, вернется к предыдущей версии - так что это похоже на подвох 22 сценария.

Решения, которые я нашел,

  1. Создайте новую среду с нуля и укажите профиль экземпляра с самого начала, используя

$ eb create -ip <instance profile>

Это работает, но может быть крайне нежелательно прекращать работу существующих сред для выпуска CNAME и т. Д., Чтобы можно было заново создавать среды с нуля.

  1. Разверните фиктивное приложение Hello World без зависимостей в профиле экземпляра, затем измените профиль экземпляра в веб-консоли, а затем разверните реальное приложение, используя новый профиль экземпляра.

Теперь мои вопросы.

  1. Поскольку кажется, что проблема в том, что изменение профиля экземпляра и изменение приложения должны выполняться атомарно, есть ли способ изменить профиль экземпляра как часть eb deploy команда, например, указав профиль экземпляра через .elasticbeanstalk/config.yml?

  2. Есть ли способ создать .ebextensions Конфигурационный файл с правилом аутентификации S3, который напрямую не ссылается на используемый профиль экземпляра (который в любом случае должен совпадать с тем, что имеет EB!), а скорее "использует текущий профиль экземпляра"? Это кажется немного излишним, что .ebextensions файлы должны указывать, с каким профилем экземпляра аутентифицироваться, когда единственный, который когда-либо будет пригоден для использования, - это тот, который на самом деле хранит EB?

  3. Есть ли другой способ обойти эту проблему?

0 ответов

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