1

アクションのために、Amazon API (http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/query-apis.html) にコールバック/フックを配置する方法を知っているか、巧妙な回避策を考案した人はいますか?インスタンスの作成と同様に、インスタンスが実行状態にあるときにコールバックを介して簡単に通知できますか?

node.js にループを記述して、目的の状態を単純にチェックし、特定の数のリクエストの後に最終的にタイムアウトすることを考えていますが、より良いプログラムによるアプローチを聞きたいです:)

4

2 に答える 2

1

AWS APIが何らかの通知エンドポイントをサポートしていない限り(私はAPIにあまり詳しくありません)、おそらくポーリングで立ち往生しています。ただし、を使用EventEmitterて、コールバックを公開する巧妙なAPIの背後にこれを隠すことができます。疑似っぽいコード:

// aws_server.js

var EventEmitter = require('events').EventEmitter;
var util = require('util');

function AwsServer(some_data) {
  this.data = some_data;
  EventEmitter.call(this);
};
util.inherits(AwsServer, EventEmitter);

AwsServer.prototype.createInstance = function() {
  // Do something with an API to create an EC2 instance
  console.log("Creating instance, data:", this.data);

  // Here, you would begin polling for state changes, etc. waiting for
  // the server to change state. We will simulate this with a setTimeout call.
  setTimeout(function() {
    this.emit('running');
  }.bind(this), 3000);
};

module.exports = AwsServer;

// somewhere_else.js

var AwsServer = require('./aws_server')

var newServer = new AwsServer('some_data');
newServer.on('running', function() {
  console.log('New instance is running');
});

newServer.createInstance();
于 2012-06-12T05:36:58.277 に答える
1

最善の策は、サーバーの init.d にシェル スクリプトを追加することです。これは、サーバーが停止または開始されるたびに実行されます。

おそらくこの質問には役に立たないでしょうが、Amazon の EC2 シェル ツールを使用して、インスタンスがオンになっているかどうかをプログラムで検出する他の方法があります。

ec2-describe-instance-status <ec2 instance id>

ここで説明したように。マシンが実行されていない場合は空白が返され、実行されている場合はそれに関するデータが返されます。

于 2013-02-06T05:44:39.980 に答える