Dev*_*rim 59 amazon-ec2 amazon-web-services
我们正在启动实例,并访问我们放置的用户数据.但有没有人理解这次行动的内部(来自亚马逊方面)?当我们传入用户数据时,传输到VM的数据(这是一个Xen功能)在哪里存储?
我首先想到的是,它被设置为USER_DATA env var,但我们也可以将其作为文件传递.该文件存储在哪里?它是通用的所有实例还是因AMI而异?
这本身并不是问题,只是想知道亚马逊如何做到这一点.
用户数据截图:http://d.pr/GZlY
Eri*_*ond 69
在此URL处,通过简单的HTTP请求,实例可以使用用户数据:
http://169.254.169.254/latest/user-data
Run Code Online (Sandbox Code Playgroud)
虽然许多AMI具有指示实例自动下载和处理用户数据的代码,但Amazon EC2并未直接将此用户数据放在实例上.
也可以看看:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
Les*_*Les 12
很抱歉发布这样一个老问题,但这似乎是放置此附加信息的最佳位置。
大多数 AWS 文档都将用户数据描述为一个属性,在其中放置实例生命周期启动脚本,即您希望仅在实例首次启动时运行的内容。
这通常是这种情况,但除了我之外,至少还有其他人想要在重新启动时执行不同的脚本,比如修复损坏的密钥或其他什么。猜猜看……您可以使用用户数据来做到这一点。
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "Hello World." >> /tmp/sdksdfjsdlf
--//
Run Code Online (Sandbox Code Playgroud)
我找不到关于这种用户数据格式的文档,可以让这种情况发生。我已经试过了,它有效。我试图查看它是否在每次启动时都运行,并且确实如此。
所以,如果你认为你需要这样做,我建议你备份。确保您拥有原始用户数据的副本,并使用提供的修改为套件的代码,并在下次停止实例时删除代码(以避免多次运行脚本)。
每个人都能理解的简单示例:如果要/tmp/testfile.txt在机器启动时创建文件,可以在User data字段上添加这两行.
#!/bin/bash
touch /tmp/testfile.txt
Run Code Online (Sandbox Code Playgroud)
记得#!/bin/bash在你的命令之前把它放在顶部.
运行实例(Linux AMI)时,您可以在以下位置查看User data字段内容/var/lib/cloud/instance/user-data.txt
| 归档时间: |
|
| 查看次数: |
65162 次 |
| 最近记录: |