在使用EC2命令行API创建新的AWS EC2实例时,我将一些用户数据传递给新实例。
现在我怎么知道用户数据是否被执行了?
我该如何检查?
您可以使用以下步骤进行验证
/var/log/cloud-init.log
和
/var/log/cloud-init-output.log
您可以查看用户数据脚本的所有日志,还可以创建/etc/cloud
文件夹。
在Amazon EC2上调试用户数据脚本确实有点尴尬,因为通常没有办法主动挂钩进程,因此理想情况下,想要获得对用户数据脚本输出的实时访问,如Eric Hammond的文章Logging user-data Script Output on EC2 Instances所述:
最近的Ubuntu AMI仍然将用户数据脚本发送到控制台输出,因此您可以远程查看它,但在实例的syslog中不再可用。控制台输出仅在实例引导,重新引导或终止后几分钟更新,这会强制您等待查看用户数据脚本的输出以及不捕获快照后可能出现的输出。
根据您的设置,您可能希望立即将日志发送到Loggly等远程日志记录工具,但是尽早安装它可能显然是鸡/蛋问题(尽管如果AMI恰好配置为所以已经)。
启用用户数据的日志记录
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
注意在语句开头的两个>>字符之间加一个空格。
以下是一个完整的用户数据脚本示例:
#!/bin/bash -ex
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
echo BEGIN
date '+%Y-%m-%d %H:%M:%S'
echo END
让您的用户数据在ec2的/ tmp目录中创建一个文件,看它是否有效:
bob.txt:
#!/bin/sh
echo 'Woot!' > /home/ec2-user/user-script-output.txt
然后启动:
ec2-run-instances -f bob.txt -t t1.micro -g ServerPolicy ami-05cf5c6d -v