[英]Create ec2 instance with ruby and connect to the created machine
使用instances.create創建實例后,需要連接到計算機並執行一些操作。 問題是-知道創建完成並且可以連接到機器的最佳方法是什么?
創建后機器的狀態就在“運行中”,那么我怎么知道機器何時完成初始化並且可以通過ssh進入呢?
我看到了一個現有的代碼,該代碼通過每X秒ssh來完成,如果它超時,則表示該計算機仍在初始化。
我正在尋找一種更優雅的方式。
創建實例后,您將獲得實例ID。 因此,使用該實例ID來檢查“實例狀態” 。 每個實例必須經過2個status checks
: 系統狀態檢查和實例狀態檢查。
我觀察到,一旦這兩項檢查都通過,實例就可以登錄了。
ruby sdk中提取此數據的相應方法為describe_instance_status
我也在尋找類似的解決方案,並且在AWS Ruby SDK上找到了一個測試,該測試就可以做到: https : //github.com/aws/aws-sdk-ruby/blob/master/samples/ec2/run_instance。 RB
begin
Net::SSH.start(instance.ip_address, "ec2-user",
:key_data => [key_pair.private_key]) do |ssh|
puts "Running 'uname -a' on the instance yields:"
puts ssh.exec!("uname -a")
end
rescue SystemCallError, Timeout::Error => e
# port 22 might not be available immediately after the instance finished
launching
sleep 1
retry
end
它可能不是最干凈的解決方案,但卻是亞馬遜采用的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.