最新的AWS EC2实例中的环境变量

时间:2018-09-10 17:46:39

标签: amazon-web-services amazon-ec2 environment-variables

我正在尝试将环境变量添加到EC2实例中(尝试在Amazon Linux AMI 2018.03.0(HVM),SSD卷类型ami-0ff8a91507f77f867上运行django应用程序)。您如何在最新版本的amazon linux中获取它们,或者如何获取日志以便对其进行跟踪。

用户数据文本(从here修改):

#!/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"

注释-

  • 我认为我知道但不确定的
    • 仅在创建用户数据脚本时加载用户脚本,而不是在我停下然后再提到here时加载(尽管它也说[我认为已过时]输出已记录到/var/log/cloud-init-output.log
    • 我可能无法正确启动实例
    • 我不知道bash脚本的存储位置,以便可以执行
  • 我已验证的内容
    • 通过插入用户数据文本在实例上,curl http://169.254.169.254/latest/user-data显示当前文本(#!/bin/bash …
  • 我尝试过的
    • 直接将rc.local编辑为export AWS_ACCESS_KEY_ID='JEFEJEFEJEFEJEFE' …
    • 将它们放入AWS参数存储中(并且可以通过正确的调用看到它们,我只是无法跟踪将它们带入EC2实例而无需日志或确认用户数据是否正在运行)
    • 将ENV变量放入“标记”中,并按照here所述将其导入:
    • 尝试按照建议的here将日志输出到其他文件(在ssh实例或系统日志中看不到任何日志文件)
    • 通过选择实例->“操作”->“实例设置”->“获取系统日志”,查看aws网页上的System Log以查看任何错误/日志(看不到任何运行或登录的命令)语句[{{1}中只有1个无关的词]]

0 个答案:

没有答案