gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:26:17 24 4
gpt4 key购买 nike

我正在尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com