【问题标题】:AWS EC2 set environment variablesAWS EC2 设置环境变量
【发布时间】:2016-01-26 12:48:10
【问题描述】:

我正在将我的代码部署到 AWS EC2。文档说有一些称为“用户数据”或“用户数据脚本”的东西,您可以在启动 ec2 实例时输入此信息,并且脚本将在实例启动时执行。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts

以下是我的用户数据脚本:

#!/bin/bash
echo 1111 >> /home/ubuntu/1111.txt
export MONGODB_HOST=www.mongodb.com
export MONGODB_PORT=12345
export MONGODB_USER=user
export MONGODB_PASS=pass

因此,当我使用此用户数据脚本启动实例时,我希望看到正在设置的环境变量,但事实并非如此。

那么我做错了什么吗?

【问题讨论】:

  • 是的,我已经阅读了该帖子,但不知何故它不起作用。我可以在/var/lib/cloud/instance/user-data.txt 中看到用户数据,我也可以通过user_data=curl 169.254.169.254/latest/user-data 获得$user_data 变量,但我无法将它们放入环境变量中......(我的node.js 应用程序从env 变量中读取凭据。 .)
  • 您是手动连接到机器并启动节点吗?或者你是怎么开始的?
  • AWS codedeploy 将告诉 code-deploy 代理运行一些脚本 (start.sh) 完成后,最终脚本将执行 node server.js
  • forums.aws.amazon.com/message.jspa?messageID=139744 的一些帮助。另请注意,userdata 脚本以 root 身份运行。

标签: amazon-web-services amazon-ec2


【解决方案1】:

您的用户数据脚本实际上正在运行。然而,它在自己的 bash 进程上运行,该进程在脚本结束时终止。

导出的变量仅在脚本的生命周期内保留,并且它们在脚本的子进程中也可见。

由于与您的 ec2 实例的新连接不是运行用户数据的原始脚本的子节点,因此它们不会继承导出的变量。

【讨论】:

猜你喜欢
  • 2018-11-03
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2015-04-27
  • 2020-11-04
  • 1970-01-01
相关资源
最近更新 更多