您好,登錄后才能下訂單哦!
這篇文章主要介紹AWS如何向EC2發送命令遠程執行腳本,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
很多時候,我們會需要在 EC2 實例之外向實例發送命令,由實例來執行。AWS 給我們提供了這種服務,叫 Amazon EC2 Simple System Manager(SSM)。
我們需要在目標實例安裝 SSM Agent 程序來通信。最好在實例的啟動腳本里來做這件事:
yum update -q -y REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk -F\\\" '{print $4}') aws configure set default.region ${REGION} function install_ssm_agent() { curl https://amazon-ssm-${REGION}.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/amazon-ssm-agent.rpm 2>/dev/null && yum install -q -y /tmp/amazon-ssm-agent.rpm && status amazon-ssm-agent || start amazon-ssm-agent } status amazon-ssm-agent || (start amazon-ssm-agent || install_ssm_agent)
你可能注意到我們從 169.254.169.254
獲取地區(region)信息,這是怎么做到的?這是實例的動態數據。具體請參考 檢索動態數據 和 檢索實例元數據。
設置了 aws 的默認地區,是因為有些 aws-cli 命令必須指定區域方可執行。
注意,我們需要給 EC2 的 IAM 角色添加 AmazonEC2RoleforSSM
托管策略,使實例能夠與 Run Command API 進行通信。給命令發送方的角色添加 AmazonSSMFullAccess
托管策略。具體請參考 配置訪問權限。
配置完成,我們就能使用 AWS 的 EC2 控制臺的系統管理器服務來發送命令,或者使用 aws-cli 或 AWS SDK 來做。
下面演示了發送“運行兩條 Shell 腳本給實例 ${INSTANCE_ID}
”的命令:
待運行的命令:
aws s3 cp s3://bucket/key /tmp/myscript.sh chmod +x /tmp/myscript.sh && /tmp/myscript.sh
使用 aws ssm send-command
命令來發送我們的命令:
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --instance-ids ${INSTANCE_ID} \ --parameters "{\"commands\": [\"aws s3 cp s3://bucket/key /tmp/myscript.sh\", \"chmod +x /tmp/myscript.sh && /tmp/myscript.sh\"]}"
我們可以檢查命令的執行結果,可以從 EC2 控制臺的系統管理器服務——命令歷史記錄查看,也可以使用編程方式來做。
能夠看到 exit code 和輸出,如果輸出很長,建議通過指定 S3 地址,注意此時也需要提供 S3 的訪問權限。
以上是“AWS如何向EC2發送命令遠程執行腳本”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。