亚马逊ec2用户数据,它是如何工作的?
我们正在启动实例,并访问我们放置的用户数据。 但有没有人了解这个行动的内部(从亚马逊方面)? 当我们传递用户数据时,传输给VM的数据是什么时候(这是一个Xen特性),存储在哪里?
我首先想到,它被设置为USER_DATA env var,但是我们也可以将它作为文件传递。 那个文件在哪里存储? 所有实例是通用还是取决于AMI?
这本身不是问题,只是想知道亚马逊如何做到这一点。
用户数据截图: http : //d.pr/GZlY
用户数据可以通过此URL的简单HTTP请求提供给实例:
http://169.254.169.254/latest/user-data
Amazon EC2不直接将此用户数据放在实例上,尽pipe许多AMI都有指示实例自动下载和处理用户数据的代码。
也可以看看:
AWS userdata是您可以在启动时提供给实例的一组命令/数据。 例如,如果您正在启动一个ec2实例并希望在新启动的ec2上安装docker,则可以在aws ec2 config页面的userdata字段中提供一组bash命令。
用例
-
自动部署
-
编排新启动的实例
-
与厨师一起启动新推出的实例
-
AWS Autoscaling
这里有一个很好的解释AWS用户数据video教程的例子
每个人都能理解的简单例子:如果您想在机器启动时创build文件/tmp/testfile.txt
,您可以简单地在User data
字段中添加这两行。
#!/bin/bash touch /tmp/testfile.txt
记得在你的命令之前把#!/bin/bash
放在最上面。
运行实例(Linux AMI)时,可以在/var/lib/cloud/instance/user-data.txt
看到User data
字段内容