【发布时间】:2020-08-12 13:31:55
【问题描述】:
我正在启动一个 EC2 实例,当第一次启动该实例时,我正在尝试运行一些命令并使用 UserData 设置一些环境变量。我添加到UserData的命令:
#!/bin/bash
sudo apt-get -y update
sudo apt-get install gcc g++ build-essential
sudo apt install -y zip awscli python3-pip python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
pip3 install virtualenv
mkdir anomaly-detection
export DB_ADAPTER=postgresql+psycopg2
export DB_USER=dummy_user
export DB_PASSWORD=dummy_pwd
export DB_HOST=ec2-xx-xxx-xxx-xxx.eu-central-1.compute.amazonaws.com
export DB_NAME=dummy_db
实例启动后,我启动实例,当我检查环境变量时,它们没有设置,mkdir 命令也没有运行。 (所以我假设所有命令都没有执行)。
我做错了什么?
【问题讨论】:
-
它实际上是作为一个子 shell 启动的,所以这些环境变量是不可访问的。我认为您可以尝试使用
. ./script/location/script.sh运行脚本。注意前面的点。 -
嘿@MarkoE,使用用户数据编写的脚本的位置是什么?另外,我应该在用户数据中添加
. ./script/location/script.sh命令吗? -
如果您使用的是 Terraform,您可以选择复制它的位置。如果您是从 AWS 控制台执行此操作 - 不要。 :)
-
对不起,但我无法理解如何做到这一点。我是 shell 脚本的新手,所以我很困惑。输入用户数据后,启动实例时不应该自动运行命令吗?另外,我没有使用 Terraform
-
您的实例是否已启动并运行?如果是这样,您可以查看日志文件
/var/log/cloud-init-output.log并查看存在哪些错误(如果有)。您使用的是哪个 Linux 发行版?
标签: amazon-web-services amazon-ec2