当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何通过用户数据在EC2实例上设置环境变量》经验,为你挑选了3个好方法。

我试图用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

Ziffusion.. 10

EC2上的用户数据脚本在启动后在其自己的进程中执行.环境变量在该进程中设置,并在进程退出时消失.您将不会在其他进程中看到环境变量,即登录shell或其他程序.

您将不得不设计一种方法将这些环境变量放入需要查看它们的程序中.

你在哪里需要这些变量?在"/startup.sh staging 2649"中?

编辑

试试这个:

#!/bin/bash
set -e -x 
export HOST_URL="checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com"
/startup.sh staging 2649

然后编辑"/startup.sh",并将以下行放在顶部:

echo $HOST_URL > /tmp/var

引导实例,然后在此处粘贴/ tmp/var.



1> Ziffusion..:

EC2上的用户数据脚本在启动后在其自己的进程中执行.环境变量在该进程中设置,并在进程退出时消失.您将不会在其他进程中看到环境变量,即登录shell或其他程序.

您将不得不设计一种方法将这些环境变量放入需要查看它们的程序中.

你在哪里需要这些变量?在"/startup.sh staging 2649"中?

编辑

试试这个:

#!/bin/bash
set -e -x 
export HOST_URL="checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com"
/startup.sh staging 2649

然后编辑"/startup.sh",并将以下行放在顶部:

echo $HOST_URL > /tmp/var

引导实例,然后在此处粘贴/ tmp/var.



2> Ashan..:

为EC2实例定义环境变量的一种更可配置的方法是使用EC2参数存储.这种方法可以更轻松地管理大量EC2实例的不同参数,这些参数都使用AWS KMS和纯文本加密.它还允许在EC2实例级别的最小变化时更改参数值.步骤如下.

在EC2 Systems Manager参数存储中定义字符串参数(使用KMS加密或未加密).

在EC2假定的IAM角色中,提供访问参数存储所需的权限.

使用适用于EC2 System Manager的AWS CLI命令,使用Get-Parameter或Get-Parameters AWS CLI命令读取参数并导出到"用户数据"部分中的环境变量,并根据需要控制命令输出.

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

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

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

使用EC2参数存储保护应用程序秘密

通过AWS'EC2参数存储管理简单的秘密



3> hamx0r..:

我发现这是使用用户数据为所有用户设置环境变量的一种非常简单的方法.它允许我配置应用程序,以便相同的AMI可以使用多个场景:

#!/bin/bash
echo export DB_CONNECTION="some DB connection" >> /etc/profile
echo export DB_USERNAME="my user" >> /etc/profile
echo export DB_PASSWORD="my password" >> /etc/profile

现在,所有用户都将DB_CONNECTION,DB_USERNAME和DB_PASSWORD设置为环境变量.


对我不起作用。我收到错误消息:`-bash:/ etc / profile:权限被拒绝`。PS:我也尝试sudo。
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有