AWS — Активация среды conda с помощью cloud-init (Поле пользовательских данных)

#amazon-web-services #anaconda #conda

Вопрос:

Мы пытаемся запускать пакетные сценарии при загрузке на экземпляре AWS EC2, используя данные пользователя (которые, как я понимаю, основаны на cloud-init). Поскольку код выполняется в среде conda, мы пытаемся активировать его до запуска кода Python/Pandas. Мы заметили, что переменная PATH устанавливается неправильно. (даже если он был установлен правильно до создания изображения и установлен правильно для всех пользователей после входа по SSH в экземпляр)

Мы пытались:

 #!/bin/bash

source activate path/to/conda_env

bash path/to/script.sh
 

и

 #!/bin/bash

conda run -n path/to/conda_env bash path/to/script.sh
 

Кажется, ничего не работает. Этот код запускает сценарий при передаче в экземпляр EC2, но не при использовании данных пользователя EC2 cloud-init (запуск сценария при запуске). Я проверил, что скрипт действительно работает при запуске, создав простой текстовый файл с пользовательскими данными, поэтому он работает при запуске экземпляра…

Комментарии:

1. «Похоже, ничего не работает». — это не конкретно. Почему именно это не работает? Какие-нибудь ошибки?

2. Никаких ошибок, ничего. Просто не выполняет код. Вы можете видеть, как мой скрипт увеличивается в верхней части в обычном сеансе ssh, но он не отображается при запуске из cloud-init.

3. Вы проверяли какие-либо файлы журналов, в частности /var/log/cloud-init-output.log ?

4. Да, и, похоже, он работает до завершения-просто не активирует conda и не выполняет сценарий, для которого требуется env conda. Я также проверил, что cloud-init выполнял мой сценарий, создав простой текстовый файл.

5. Можете ли вы уточнить, что именно вы подразумеваете под «не активировать conda и выполнить сценарий, для которого требуется env conda». Если ошибок нет, то ваш код выполняется правильно и может завершиться инициализацией. Вы, конда, были активированы на данный момент, могли бы запустить запуск. Что именно вы ожидаете от этого кода?