linux - 如何通过用户数据在 EC2 实例上设置环境变量

标签 linux bash amazon-web-services amazon-ec2

我正在尝试使用 EC2 用户数据设置环境变量,但我所做的一切似乎都不起作用

这是我试过的用户数据脚本

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

最佳答案

为 EC2 实例定义环境变量的一种更可配置的方法是使用 Systems Manager Parameter Store .这种方法将使管理大量 EC2 实例的不同参数变得更加容易,它们都使用 AWS KMS 加密。以及纯文本。它还将允许在 EC2 实例级别上以最小的变化更改参数值。步骤如下。

  • EC2 Systems Manager 中定义字符串参数(使用 KMS 加密或未加密)参数存储。
  • 在 EC2 承担的 IAM 角色中,授予访问参数存储所需的权限。
  • 使用适用于 EC2 系统管理器的 AWS CLI 命令,读取参数并使用 Get-Parameter 导出到用户数据部分中的环境变量或 Get-Parameters AWS CLI 命令和 controlling command output根据需要。

例如使用 Get-Parameter命令检索 db_connection_string 参数(未加密)。

export DB_CONNECTION=$(aws --region=us-east-2 ssm get-parameter --name 'db_connection' --query 'Value')

注意:有关设置 AWS KMS key 、定义加密字符串、管理 IAM 策略等的更多详细信息,请参阅以下文章。

关于linux - 如何通过用户数据在 EC2 实例上设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34205532/

相关文章:

bash - Grep 跨 Hadoop 文件系统中的多个文件

ios - AWS SNS 错误参数无效 : Token Reason: Endpoint xxx already exists with the same Token, 但属性不同

django - 为什么 Gunicorn 使用端口 8000/8001 而不是 80?

windows - 有没有一种方法可以向git别名添加多个步骤?

linux - 如何使用过期的 cpanel 在 centos 7 上创建电子邮件帐户

linux - 我想通过 bash 文件发送 Enter 命令来运行 bin 文件

java - 如何使用 aws-java-sdk 2.0 删除非空 S3 存储桶

php - 如何通过Cloudsearch搜索经常变化的值?

linux - Linux中有没有类似NanoBSD的东西

python - 使用 python 的远程 shell