我正在使用 AWS Sagemaker 笔记本实例进行一些实验。因为我还在使用在笔记本启动期间执行的生命周期配置脚本,并且还想设置一些环境变量。
出于某种原因,当我在生命周期 shell 脚本中设置多个 env 变量时,它们不是由实例设置的,即当我执行时 echo $FOO
不打印相关变量。
但是,当我只设置一个 env 变量时,它正在工作,我可以在我的笔记本会话中使用它。
我的理解是我启动了所需的内核,
我还尝试通过运行export FOO=BAR
在笔记本内设置env变量,但这也没有用。 按照 AWS 提供的示例脚本,我进行了更改以设置变量,但是当我打印$FOO时,它似乎没有显示。
我已经尝试在切换到ec2-user之前和之后设置envs(在命令以root身份执行之前(,仍然没有任何帮助。
#!/bin/bash
cd /home/ec2-user/anaconda3/envs/python3
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh
echo export FOO=BAR >> ./etc/conda/activate.d/env_vars.sh
echo unset FOO >> ./etc/conda/deactivate.d/env_vars.sh
echo export FOO2=BAR2 >> ./etc/conda/activate.d/env_vars.sh
echo unset FOO2 >> ./etc/conda/deactivate.d/env_vars.sh
sudo -u ec2-user -i <<'EOF'
cd /home/ec2-user
# This will affect only the Jupyter kernel called "conda_python3".
source activate python3
pip install --upgrade pip
pip install scipy xgboost sklearn
# You can also perform "conda install" here as well.
source deactivate
EOF
我想在启动时为此 Sagemaker 笔记本设置多个环境变量,最好的方法是什么?
这样做,它有效:
#!/bin/bash
set -e
touch /home/ec2-user/anaconda3/envs/python3/etc/conda/activate.d/env_vars.sh
echo "export MY_KEY='my-key-name'" >> /home/ec2-user/anaconda3/envs/python3/etc/conda/activate.d/env_vars.sh
在 AWS SageMaker 笔记本实例生命周期配置中,创建一个脚本作为下面列出的示例来设置环境变量。也可以参考官方脚本示例。https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html
#!/bin/bash
set -e
# OVERVIEW
# This script sets username and email address in Git config
# PARAMETERS
YOUR_USER_NAME="***"
YOUR_EMAIL_ADDRESS="***"
sudo -u ec2-user -i <<EOF
git config --global user.name "$YOUR_USER_NAME"
git config --global user.email "$YOUR_EMAIL_ADDRESS"
EOF
# OVERVIEW
# This script sets environment variables
touch /etc/profile.d/jupyter-env.sh
echo "export TWILIO_ACCOUNT_SID=***" >> /etc/profile.d/jupyter-env.sh
echo "export TWILIO_AUTH_TOKEN=***" >> /etc/profile.d/jupyter-env.sh
initctl restart jupyter-server --no-wait