无法在EC2实例中通过UserData运行bash脚本

问题描述

我正在启动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命令。 (因此,我假设尚未执行所有命令)。

我在做什么错?

解决方法

用户数据脚本以root用户身份运行。

如果希望为登录时将存在的用户定义环境变量,则应在每个用户的.profile文件中定义它们。如果您始终以ec2-user身份登录,则将其添加到/home/ec2-user/.profile就足够了。

请参阅:How to permanently set environmental variables - Unix & Linux Stack Exchange