有一种方法可以设置EC2机器在启动时执行Kafka启动脚本吗?我还使用Java Aws SDK,因此我接受两种解决方案:一个是在EC2实例上运行命令的Java程序解决方案,另一个是在启动时运行kafka脚本的bash脚本模式解决方案。
有一种方法可以设置EC2机器在启动时执行Kafka启动脚本吗?我还使用Java Aws SDK,因此我接受两种解决方案:一个是在EC2实例上运行命令的Java程序解决方案,另一个是在启动时运行kafka脚本的bash脚本模式解决方案。
rc.local
文件中,并按预期执行:Resources:
VM:
Type: 'AWS::EC2::Instance'
Properties:
[...]
UserData:
'Fn::Base64': !Sub |
#!/bin/bash -x
echo 'INSTANCEID="$(curl -s http://169.254.169.254/latest/meta-data/instance-id)"' >> /etc/rc.local
#echo 'INSTANCEID=$(ls /var/lib/cloud/instances)' >> /etc/rc.local
echo 'echo "aws ec2 stop-instances --instance-ids $INSTANCEID --region ${AWS::Region}" | at now + ${Lifetime} minutes' >> /etc/rc.local
附加提示:您可以按照以下说明使用AWS控制台检查用户数据(当前脚本)并进行修改:查看和更新实例用户数据。
EC2实例的操作系统是什么?
您可以在启动实例时使用用户数据脚本。请记住,这只是一次性活动。
如果您的需求是每次重新启动EC2实例时都要启动脚本,则可以使用Linux实例上在操作系统启动时加载的rc.local
文件。
rc.local对我没用。
我使用了这篇指南中的crontab,它设置了一个可以在启动时运行脚本的cron job。
https://phoenixnap.com/kb/crontab-reboot
基本上就是这样。
crontab -e
<select editor>
@reboot <script to run>
<script>
echo Current date and time >> %SystemRoot%\Temp\test.log
echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
</script>