Aws Ec2 在启动时运行脚本程序

and*_*lli 8 bash startup amazon-ec2 amazon-web-services

有没有一种方法可以设置 EC2 机器在启动时执行 Kafka 启动脚本?我也使用 java Aws SDK,所以我接受在 EC2 实例上运行命令的程序 java 的解决方案和在启动时运行 kafka 脚本的 bash 脚本模式的解决方案。

K F*_*K F 9

在 CloudFormation 中的用户数据下添加脚本仅运行一次,即在实例启动时运行,但在实例重新启动时运行,而这正是我的用例所需的。我使用上面和这里评论的rc.local方法。以下内容实际上将我的脚本附加到文件中并按预期执行: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
Run Code Online (Sandbox Code Playgroud)

附加提示:您可以按照以下说明使用 AWS 控制台检查用户数据(当前脚本)并修改它:查看和更新​​实例用户数据


Joh*_*ein 6

可以在用户数据属性中传递脚本。

如果您使用的是 Amazon Linux AMI,并且脚本的第一行以 开头#!,则脚本将在第一次启动实例时执行。

有关详细信息,请参阅:启动时在 Linux 实例上运行命令