Я пытаюсь получить переменные ENVIRONMENT в экземпляр EC2 (пытаюсь запустить приложение django в Amazon Linux AMI 2018.03.0 (HVM), тип тома SSD ami-0ff8a91507f77f867). Как вы получаете их в новейшей версии Linux от Amazon, или получите протоколирование, чтобы его можно было отследить.
текст пользовательских данных (изменено с здесь ):
#!/bin/bash
#trying to get a file made
touch /tmp/testfile.txt
cat 'This and that' > /tmp/testfile.txt
#trying to log
echo 'Woot!' > /home/ec2-user/user-script-output.txt
#Trying to get the output logged to see what is going wrong
exec > >(tee /var/log/user-data.log|logger -t user-data ) 2>&1
#trying to log
echo "XXXXXXXXXX STARTING USER DATA SCRIPT XXXXXXXXXXXXXX"
#trying to store the ENVIRONMENT VARIABLES
PARAMETER_PATH='/'
REGION='us-east-1'
# Functions
AWS="/usr/local/bin/aws"
get_parameter_store_tags() {
echo $($AWS ssm get-parameters-by-path --with-decryption --path ${PARAMETER_PATH} --region ${REGION})
}
params_to_env () {
params=$1
# If .Ta1gs does not exist we assume ssm Parameteres object.
SELECTOR="Name"
for key in $(echo $params | /usr/bin/jq -r ".[][].${SELECTOR}"); do
value=$(echo $params | /usr/bin/jq -r ".[][] | select(.${SELECTOR}==\"$key\") | .Value")
key=$(echo "${key##*/}" | /usr/bin/tr ':' '_' | /usr/bin/tr '-' '_' | /usr/bin/tr '[:lower:]' '[:upper:]')
export $key="$value"
echo "$key=$value"
done
}
# Get TAGS
if [ -z "$PARAMETER_PATH" ]
then
echo "Please provide a parameter store path. -p option"
exit 1
fi
TAGS=$(get_parameter_store_tags ${PARAMETER_PATH} ${REGION})
echo "Tags fetched via ssm from ${PARAMETER_PATH} ${REGION}"
echo "Adding new variables..."
params_to_env "$TAGS"
Примечания -
- Что я думаю, я знаю, но не уверен
- скрипт пользовательских данных загружается только при его создании, а не когда я останавливаюсь, а затем начинаю упоминать здесь (хотя он также говорит [я думаю, что устарел), что выходные данные записываются в
/var/log/cloud-init-output.log
)
- Возможно, я не запускаю экземпляр правильно
- Я не знаю, где хранить скрипт bash, чтобы его можно было выполнить
- Что я проверил
- текст пользовательских данных находится в экземпляре с помощью ssh-in, а
curl http://169.254.169.254/latest/user-data
показывает текущий текст (#!/bin/bash …
)
- Что я пробовал
- редактирование
rc.local
непосредственно на export AWS_ACCESS_KEY_ID='JEFEJEFEJEFEJEFE' …
и т.п.
- помещая их в хранилище параметров AWS (и могу видеть их по правильному вызову, я просто не могу отследить получение их в экземпляр EC2 без журналов или подтверждения, что пользовательские данные запускаются)
- помещение переменных ENV в теги и импорт их как указано здесь :
- попытался вывести журналы в другие файлы в соответствии с предложением здесь (не видеть никаких файлов журнала в экземпляре ssh или в системном журнале)
- просмотр
System Log
на веб-странице aws, чтобы увидеть любые ошибки / журналы, выбрав экземпляр -> «Действия» -> «Настройки экземпляра» -> «Получить системный журнал» (не видя выполнения команд или операторов журнала [ только 1 несвязанное слово user
])