Pra*_*vin 27 amazon-ec2 amazon-web-services user-data
在使用EC2命令行API创建新的AWS EC2实例时,我将一些用户数据传递给新实例.
现在我怎么知道用户数据是否被执行了?
我该如何检查?
小智 32
您可以使用以下步骤进行验证
/var/log/cloud-init.log 和 /var/log/cloud-init-output.log您可以查看用户数据脚本的所有日志,它还将创建/etc/cloud文件夹.
Unb*_*ess 22
对于您来说,查看在实例引导期间执行用户数据时的情况也可能很有用。如果您从 CloudFormation 模板传递环境变量或标志,则尤其如此。您可以看到 UserData 是如何以两种不同的方式执行的:
1. 从实例内部:
# Get instance ID
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
# Print user data
sudo cat /var/lib/cloud/instances/$INSTANCE_ID/user-data.txt
Run Code Online (Sandbox Code Playgroud)
2. 从实例外部
注意:只有当您配置 UserData shell 使其输出所运行的命令时,这才有效。对于 bash,您可以按如下方式执行此操作:
"#!/bin/bash\n",
"set -x\n",
Run Code Online (Sandbox Code Playgroud)
从 EC2 控制台右键单击 EC2 实例 -> 监控和故障排除 -> 获取系统日志。下载日志文件并查找如下所示的部分:
ip-172-31-76-56 login: 2021/10/25 17:13:47Z: Amazon SSM Agent v3.0.529.0 is running
2021/10/25 17:13:47Z: OsProductName: Ubuntu
2021/10/25 17:13:47Z: OsVersion: 20.04
[ 45.636562] cloud-init[856]: Cloud-init v. 21.2-3...
[ 47.749983] cloud-init[896]: + echo hello world
Run Code Online (Sandbox Code Playgroud)
如果 UserData 配置如下,您将看到以下内容:
"#!/bin/bash\n",
"set -x\n",
"echo hello world"
Run Code Online (Sandbox Code Playgroud)
jet*_*com 15
仅供参考,您可以通过从EC2控制台查看系统日志来检查用户数据是否已执行.右键单击您的实例 - 实例设置 - 获取系统日志
这应该打开一个带有系统日志的模态窗口
在Amazon EC2上调试用户数据脚本确实有点尴尬,因为通常没有办法主动连接到该进程,因此理想情况下,人们希望实时访问用户数据脚本输出,如 Eric Hammond 的文章记录用户中所总结的那样EC2 实例上的 -data 脚本输出:
最新的 Ubuntu AMI 仍然将用户数据脚本发送到控制台输出,因此您可以远程查看它,但它在实例的 syslog 中不再可用。控制台输出仅在实例启动、重新引导或终止后几分钟更新,这迫使您等待查看用户数据脚本的输出,并且不捕获快照后可能出现的输出。
根据您的设置,您可能希望立即将日志发送到像Loggly这样的远程日志记录工具,但是尽早安装它显然是一种先有鸡还是先有蛋的问题(尽管如果 AMI 碰巧配置为像这样的话,它会很好用)已经这样了)。
| 归档时间: |
|
| 查看次数: |
21439 次 |
| 最近记录: |