簡體   English   中英

aws ec2 運行實例:腳本作為純文本被忽略

[英]aws ec2 run-instances: script as the plain text is ignored

我試圖將腳本作為 --user-data 參數傳遞。 如果同樣通過--user-data file://some_file.sh運行, --user-data file://some_file.sh一切正常。 此外,如果通過在相應的啟動配置框中添加用戶數據通過 AWS GUI 啟動實例,它也可以工作。

我的 CLI 命令是

aws ec2 run-instances --image-id ami-0cc0a36f626a4fdf5 --count 1 --instance-type t2.micro --key-name key_name --security-group-ids sg-00000000 --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=some_name}]" --output table --user-data "sudo touch /tmp/install.log && sudo chmod 777 /tmp/install.log && echo $(date) >> /tmp/install.log"

如果與腳本一樣運行,則其內容格式如下

#!/bin/bash
sudo touch /tmp/install.log
sudo chmod 777 /tmp/install.log
echo $(date) >> /tmp/install.log

另外,我想提一下,我嘗試以不同的格式傳遞字符串,例如:

--user-data echo "some text"

--user-data "command_1\\n command_2\\n"

--user-data "command_1 && command_2"

--user-data "command_1; command_2;"

--user-data "#!/bin/bash; command_1; command_2;"

啟動后的用戶數據可見但未執行

$ curl -L http://169.254.169.254/latest/user-data/

第一行必須以#! .

然后,執行后續行。 它們必須由適當的換行符分隔。 看起來\\n沒有正確解釋。

如何在使用 CLI 啟動 AWS 實例時傳入用戶數據

$ aws ec2 run-instances --image-id ami-16d4986e --user-data '#!/bin/bash
> poweroff'

作為一個實驗,我把它放在run-instances命令的末尾:

aws ec2 run-instances ... --user-data '#!
echo bar >/tmp/foo
'

當我登錄實例時,我可以看到/tmp/foo文件。

暫無
暫無

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

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