簡體   English   中英

aws ec2 啟動時運行腳本程序

[英]Aws Ec2 run script program at startup

有沒有一種方法可以設置 EC2 機器在啟動時執行 Kafka 啟動腳本? 我也使用 java Aws SDK,所以我接受在 EC2 實例上運行命令的程序 java 的解決方案和在啟動時運行 kafka 腳本的 bash 腳本模式的解決方案。

可以在用戶數據屬性中傳遞腳本。

如果您使用的是 Amazon Linux AMI,並且腳本的第一行以#! ,則腳本將在實例第一次啟動時執行

有關詳細信息,請參閱: 啟動時在 Linux 實例上運行命令

在 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

附加提示:您可以按照以下說明檢查用戶數據(當前腳本)並使用 AWS 控制台對其進行修改: 查看和更新​​實例用戶數據

EC2實例的操作系統是什么?

  1. 您可以在實例啟動時使用 userdata 腳本。 請記住,這只是 1 次活動

  2. 如果您的要求是每次重啟 EC2 實例時都啟動腳本,那么您可以使用 Linux 實例上的rc.local文件,該文件在操作系統啟動時加載。

rc.local 對我不起作用。

我按照本指南使用了 crontab,它設置了一個可以在啟動時運行腳本的 cron 作業。

https://phoenixnap.com/kb/crontab-reboot

它本質上是

crontab -e
<select editor>
@reboot <script to run>

如果您運行的是 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM