如何检查我的用户数据是否传递给EC2实例?

问题描述 投票:22回答:5

在使用EC2命令行API创建新的AWS EC2实例时,我将一些用户数据传递给新实例。

现在我怎么知道用户数据是否被执行了?

我该如何检查?

amazon-web-services amazon-ec2 user-data
5个回答
25
投票

您可以使用以下步骤进行验证

  1. SSH启动EC2实例
  2. 检查用户数据脚本的日志 /var/log/cloud-init.log/var/log/cloud-init-output.log

您可以查看用户数据脚本的所有日志,还可以创建/etc/cloud文件夹。


13
投票

仅供参考,您可以通过从EC2控制台查看系统日志来检查用户数据是否已执行。右键单击您的实例 - 实例设置 - 获取系统日志

enter image description here

这应该打开一个带有系统日志的模态窗口

enter image description here


3
投票

Amazon EC2上调试用户数据脚本确实有点尴尬,因为通常没有办法主动挂钩进程,因此理想情况下,想要获得对用户数据脚本输出的实时访问,如Eric Hammond的文章Logging user-data Script Output on EC2 Instances所述:

最近的Ubuntu AMI仍然将用户数据脚本发送到控制台输出,因此您可以远程查看它,但在实例的syslog中不再可用。控制台输出仅在实例引导,重新引导或终止后几分钟更新,这会强制您等待查看用户数据脚本的输出以及不捕获快照后可能出现的输出。

根据您的设置,您可能希望立即将日志发送到Loggly等远程日志记录工具,但是尽早安装它可能显然是鸡/蛋问题(尽管如果AMI恰好配置为所以已经)。


2
投票

启用用户数据的日志记录

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


1
投票

让您的用户数据在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

© www.soinside.com 2019 - 2024. All rights reserved.