我正在尝试使用 EC2s 用户数据设置环境变量,但我所做的一切似乎都不起作用
这是我尝试过的用户数据脚本
#!/bin/bash echo "export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-23235232.us-east-1.elb.amazonaws.com" >> /env.sh source /env.sh
还有一个:
#!/bin/bash echo "#!/bin/bash" >> /env.sh echo "export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-67323523.us-east-1.elb.amazonaws.com" >> /env.sh chmod +x /env.sh /env.sh
他们都没有做任何事情,如果我登录并发出命令 source /env.sh
或 /env.sh
它可以工作。所以这一定是我想要做的禁止的事情。
这是 /var/log/cloud-init-output.log
使用 -e -x 的输出
+ echo 'export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com' + source /env.sh ++ export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709022.us-east-1.elb.amazonaws.com ++ HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709022.us-east-1.elb.amazonaws.com
尽管如此, echo $HOST_URL
是空的
根据要求,完整的 UserData 脚本
#!/bin/bash set -e -x echo "export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com" >> /env.sh source /env.sh /startup.sh staging 2649
原文由 Gleeb 发布,翻译遵循 CC BY-SA 4.0 许可协议
为 EC2 实例定义环境变量的一种更可配置的方法是使用 Systems Manager Parameter Store 。这种方法将使管理大量 EC2 实例的不同参数变得更加容易,这些实例都使用 AWS KMS 以及纯文本加密。它还允许通过对 EC2 实例级别的最小更改来更改参数值。步骤如下。
例如,使用 Get-Parameter 命令检索 db_connection_string 参数(未加密)。
注意:有关设置 AWS KMS 密钥、定义加密字符串、管理 IAM 策略等的更多详细信息,请参阅以下文章。