Назад | Перейти на главную страницу

Есть ли поддерживаемый способ запуска сценариев после развертывания на AWS Elastic Beanstalk?

Я развертываю приложение Windows / .NET MVC на Elastic Beanstalk, и мне удалось справиться с большинством проблем, кроме одной.

Рассматриваемое веб-приложение создает локальный кеш для двоичных активов в подпапке своего текущего местоположения развертывания, и для этого мне нужно добавить разрешения для группы IIS_IUSRS на чтение / запись в эту папку.

После долгих проб и ошибок у меня теперь есть решение, которое, кажется, работает, но я не уверен на 100% в его «законности» ...

В решении MVC я создал папку с именем «.ebextensions» и в ней файл yaml с именем «eb.config».

В этом файле я в основном создаю 2 пакетных файла, которые развертываю в c: \ temp - первый пакетный файл проверяет, есть ли уже копия второго файла в C: \ Program Files \ Amazon \ ElasticBeanstalk \ hooks \ appdeploy \ post, а если нет, копирует его туда.

Второй пакетный файл устанавливает необходимый ACL для этой папки «BinaryData». Elastic Beanstalk выполняет любой командный файл, который находит в папке, упомянутой выше, и, похоже, на данный момент это помогает.

Мне не удалось найти никакой документации о том, как добиться этого «официально», и я узнал об этом трюке из этого Сообщение блога.

Мы будем очень благодарны за любые предложения о том, как добиться этого «более чистым» способом.

На дворе 2019 год, и я до сих пор не смог найти документацию по крючкам платформы Beanstalk, касающуюся приложений .NET. В итоге я сделал что-то похожее на ваше решение.

  1. Создайте файл конфигурации в .ebextensions папка.
  2. Создайте файл сценария, который я хочу запустить (либо сохраните его в коде, либо определите / извлеките его как часть файла конфигурации на шаге 1)
  3. Внутри этого конфигурационного файла под container_commands раздел, запустите команду для копирования сценария из шага 2 в C:\Program Files\Amazon\ElasticBeanstalk\hooks\appdeploy\post\ (или какой угодно крючок). Больше информации Вот

Когда Beanstalk развертывает приложение, команда под container_commands будет запущен после настройки сервера, но до того, как код будет развернут 1. После этого ваш скрипт перехвата должен быть на месте и сработает в соответствии с папкой, в которой он находится.

К сожалению, я не знаю, является ли это официальным способом сделать это для приложений .NET.