【问题标题】:How to set multiple environment variables in AWS Sagemaker notebook instance?如何在 AWS Sagemaker 笔记本实例中设置多个环境变量?
【发布时间】:2019-12-13 04:20:02
【问题描述】:

我正在使用 AWS Sagemaker 笔记本实例进行一些实验。因为我也在使用在笔记本启动期间执行的生命周期配置脚本,并且还想设置一些环境变量。

由于某种原因,当我在生命周期 shell 脚本中设置多个环境变量时,它们不是由实例设置的,即当我执行时 echo $FOO 不打印相关变量。

但是,当我只设置一个环境变量时,它正在工作,我可以在我的笔记本会话中使用它。

我的理解是我启动了想要的Kernel,

我还尝试通过运行export FOO=BAR 在笔记本中设置环境变量,但这也不起作用。 按照 AWS 提供的示例脚本,我进行了更改以设置变量,但是当我打印 $FOO 时,它似乎没有显示。

我尝试在切换到 ec2-user 之前和之后设置环境(在命令以 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 笔记本设置多个环境变量,最好的方法是什么?

【问题讨论】:

  • 来自 AWS 的示例包含设置环境变量:AWS Lifecycle Config Samples
  • 在生命周期配置脚本中设置环境变量的 AWS 示例代码的直接链接位于 here

标签: amazon-web-services jupyter-notebook conda amazon-sagemaker


【解决方案1】:

在 AWS SageMaker Notebook Instance Lifecircle Configurations 中,创建一个脚本作为下面列出的示例来设置环境变量。也可以参考官方脚本示例。 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

【讨论】:

    【解决方案2】:

    好的,所以我找到了答案here。 似乎我导出环境变量的方式缺少引号,因此它们没有正确导出。

    这样做,它的工作原理:

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

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 2021-04-26
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2020-02-14
      相关资源
      最近更新 更多