您可以通过利用
bash
功能。
实际上,您可以为UserData的整个执行创建一个日志文件,您可以使用
trap
如果发生错误,请确保在终止之前将日志文件复制到S3。
下面是它的外观:
#!/bin/bash -xe
exec &>> /tmp/userdata_execution.log
upload_log() {
aws s3 cp /tmp/userdata_execution.log s3://... # use a bucket of your choosing here
}
trap 'upload_log' ERR
pip3 install boto3 pandas scikit-learn
aws s3 cp s3://.../main.py .
python3 main.py
sudo shutdown now -h
日志文件
(/tmp/userdata_execution.log
)将为UserData生成包含stdout和stderr的;如果在执行UserData期间出错,日志文件将上载到S3 bucket。
如果您愿意,当然也可以将日志文件流式传输到CloudWatch,但是要这样做,您必须在实例上安装CloudWatch代理并进行相应的配置。我相信,对于您的用例,将日志文件上载到S3是最好的解决方案。