非常简单的问题,但我找不到任何人解决它,或者真的提到问题。基本上我想通过在旋转时将环境变量与盒子相关联来向远程ec2盒子添加少量信息。
我已经看到了tags
概念的一些提及,但我正在寻找一些我可以在实例中天真地检查和访问的内容,并且不清楚tags
是否提供了功能。
理想情况下,在实例化实例后,任何外部方都无法访问添加这些环境变量的接口。
我意识到我可以通过建立一个安全的数据库来达到类似的效果,但这似乎过于涉及只是尝试向实例添加几个元数据。
不寻找讲义,但是对此的一些文档的任何链接将非常感激。我目前正在使用boto
(下面的代码),所以适合boto
框架的东西将是理想的,但如果我必须下载到亚马逊的REST api,它将不会是结束世界。
def create_instances(connection, type, number, **kwargs):
kwargs.update({
'min_count': number,
'max_count': number
})
return connection.run_instances(**kwargs).instances # maybe if kwargs had an environment variable?
答案 0 :(得分:2)
有几种方法可以将信息传递给Amazon EC2实例,但并非所有方法都能满足您在启动后无法访问的要求。
用户数据
启动Amazon EC2实例时,可以指定用户数据。通过访问URL,可以从实例中访问用户数据的内容:
http://169.254.169.254/latest/user-data/
您的实例上的代码可以查询此URL(由虚拟机管理程序截获,并且只能从实例本身查看)以访问该信息。
用户数据的另一个用途是它可以execute as a script。该脚本可以设置一个代码可以访问的环境变量。
但是,可以通过EC2管理控制台或DescribeInstanceAttribute
电话查看用户数据,因此这可能无法满足您的安全要求。
<强>代码
另一种选择是使用标签。这些是与EC2实例(或AWS中的其他对象)关联的名称 - 值对。可以通过调用“DescribeTags”来检索标记,但是boto有一些快捷方式可以访问它们。
标签是将信息与实例相关联的好方法,标签也可用于标识特定实例(例如,通过环境,项目,所有者......)。
但是,可以在EC2管理控制台中通过API调用查看存储在标签中的值。
其他选项