aws ec2 运行 启动时的脚本程序
Aws Ec2 run script program at startup
有没有设置EC2机器在启动时执行Kafka启动脚本的方法?
我也使用 java Aws SDK,所以我接受了 java 程序的解决方案 运行 在 EC2 实例上的命令和 bash 脚本模式的解决方案 运行 启动时的kafka脚本。
可以在 用户数据 属性.
中传递脚本
如果您使用的是 Amazon Linux AMI,并且脚本的第一行以 #!
开头,那么脚本将在实例第一次 时执行已开始.
EC2实例的OS是什么?
您可以在实例启动时使用用户数据脚本。请记住这只是 1 次 activity
如果您的要求是在每次重启 EC2 实例时启动脚本,那么您可以在 Linux 个实例上使用 rc.local
文件,该文件加载于 OS开机时间。
如果您是 运行 windows EC2,您需要阅读:https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html
示例:
<script>
echo Current date and time >> %SystemRoot%\Temp\test.log
echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
</script>
在 CloudFormation 中的 User Data 下添加脚本仅运行一次,即在实例启动时运行,而不是在实例重新启动时运行,这正是我的用例所需要的。我使用上面评论的 rc.local 方法和 here。以下实际上将我的脚本附加到 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 控制台对其进行修改:View and update the instance user data.
rc.local 对我不起作用。
我按照本指南使用了 crontab,它设置了一个可以在启动时 运行 脚本的 cron 作业。
https://phoenixnap.com/kb/crontab-reboot
本质上是
crontab -e
<select editor>
@reboot <script to run>
有没有设置EC2机器在启动时执行Kafka启动脚本的方法? 我也使用 java Aws SDK,所以我接受了 java 程序的解决方案 运行 在 EC2 实例上的命令和 bash 脚本模式的解决方案 运行 启动时的kafka脚本。
可以在 用户数据 属性.
中传递脚本如果您使用的是 Amazon Linux AMI,并且脚本的第一行以 #!
开头,那么脚本将在实例第一次 时执行已开始.
EC2实例的OS是什么?
您可以在实例启动时使用用户数据脚本。请记住这只是 1 次 activity
如果您的要求是在每次重启 EC2 实例时启动脚本,那么您可以在 Linux 个实例上使用
rc.local
文件,该文件加载于 OS开机时间。
如果您是 运行 windows EC2,您需要阅读:https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html
示例:
<script>
echo Current date and time >> %SystemRoot%\Temp\test.log
echo %DATE% %TIME% >> %SystemRoot%\Temp\test.log
</script>
在 CloudFormation 中的 User Data 下添加脚本仅运行一次,即在实例启动时运行,而不是在实例重新启动时运行,这正是我的用例所需要的。我使用上面评论的 rc.local 方法和 here。以下实际上将我的脚本附加到 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 控制台对其进行修改:View and update the instance user data.
rc.local 对我不起作用。
我按照本指南使用了 crontab,它设置了一个可以在启动时 运行 脚本的 cron 作业。
https://phoenixnap.com/kb/crontab-reboot
本质上是
crontab -e
<select editor>
@reboot <script to run>