Переменные среды в новейшем экземпляре AWS EC2 - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь получить переменные 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...