1

Amazon EC2 でインスタンスを開始するとき、たとえば、リクエストを満たすために使用できるマシンがない場合、どのように障害を検出しますか? あまり一般的ではないマシン タイプの 1 つを使用していて、起動しないのではないかと心配していますが、これを検出するためにどのメッセージを探すべきかを見つけるのに苦労しています。

これを行うために EC2 コマンドライン ツールを使用しています。マシンが起動しているかどうかを確認するために ec2-describe-instance を実行するときに「実行中」を探すことができることは知っていますが、起動に失敗したかどうかを確認するために何を探すべきかわかりません。

ありがとう!

4

2 に答える 2

2

からの出力ec2-start-instancesは you のみを返しstopped pending、あなたが言うようec2-describe-instancesに、状態を取得するために使用する必要があります。

そのためには、いくつかの選択肢があります。ループを使用して をチェックし、またはinstance-state-nameの結果を探すことができます。あるいは、またはフィールドのいずれかを見ることができます。残念ながら、失敗を示す値を取得するには、心配している失敗をトリガーする必要があります。 runningstoppedreasonstate-reason-code

起動が成功するまで待機するために使用するバッチ ファイル (アンダースコアを入力):

@echo off
set EC2_HOME=C:\tools\ec2-api-tools
set EC2_PRIVATE_KEY=C:\_\pk-_.pem
set EC2_CERT=C:\_\cert-_.pem
set JAVA_HOME=C:\Program Files (x86)\Java\jre6
%EC2_HOME%\bin\ec2-start-instances i-_
:docheck
%EC2_HOME%\bin\ec2-describe-instances | C:\tools\gnuwin32\bin\grep.exe -c stopped > %EC2_HOME%\temp.txt
findstr /m "1" %EC2_HOME%\temp.txt > nul
if %errorlevel%==0 (c:\tools\gnuwin32\bin\echo -n "."
goto docheck)
del temp.txt
于 2012-04-23T21:22:50.260 に答える
1

ec2-start-instances は、以前の状態 (インスタンスへの最後のコマンドの後) と現在の状態 (コマンドの後) を返します。ec2-stop インスタンスも同じことを行います。問題は、スクリプトを作成していて、「停止中」のインスタンスで -start- を使用する場合、または-stop-を使用する場合です。「保留中」のインスタンス。これらはコマンド ライン ツールで例外を引き起こし、NASTILY でスクリプトを終了して元のコンソールに戻ります (非常に悪い動作、アマゾン)。そのため、ec2-describe-instances [instance-id] の結果を解析する必要があります。ただし、インスタンスからステータスを取得してからコマンドを適用するまでのわずかな時間に対して脆弱なままです。他の誰か、または Amazon があなたを保留中または停止させた場合、それぞれ「停止」または「開始」を行うと、スクリプトが壊れます。このような例外をスクリプトでキャッチする方法が本当にわかりません。悪いアマゾンAWS、悪い犬!

于 2012-07-10T03:13:27.383 に答える