0
ラムダ関数を記述して、指定されたOpsWorksレイヤーで実行されているすべてのインスタンスのエンドポイントに接続しようとしています。私の問題は、テストしようとすると機能がタイムアウトすることです。出力には他にエラーがないので、どこでこの問題のデバッグを開始するのかはわかりません。ラムダ関数からOpsWorksに接続するタイムアウト
私はthis StackOverflowの質問を見つけましたが、VPCなしで機能を作成しようとしましたが、問題は解決しません(問題のOpsWorksスタックはVPCの背後にあります)。
問題のラムダコードは次のとおりです。
exports.handler = function(event, context) {
var done = false;
var awsOptions = {
region: 'us-east-1'
};
var AWS = require('aws-sdk');
var opsWorks = new AWS.OpsWorks(awsOptions);
var appIds = ["MY_APP_ID"];
var layerIds = ["MY_LAYER_ID"];
var stackId = "MY_STACK"
var isOnline = function(instance) {
return instance.Status == 'online';
}
console.log("Have all the variables set up, time to run...");
opsWorks.describeLayers({StackId: stackId, LayerIds: layerIds},
function(error, layers) {
console.log("Described the layer...");
console.log(layers);
opsWorks.describeInstances({LayerId: layers[0].LayerId},
function(err, instances) {
console.log("Described the instances on the layer");
if (err) {
console.error("No instances found!");
}
console.log("No errors, keep going...");
instances.Instances.filter(isOnline).forEach(function(instance) {
console.log("Filtered out the offline instances.");
var options = {
method: "GET",
path: "/endpoint",
port: 123,
timeout: 10000,
url: instance.Hostname
};
http.request(options, function(response) {
if (response.statusCode != 200) {
console.error("Instance " + instance.InstanceId
+ " is not responding!");
} else {
console.log("Got a response, time to do stuff!");
}
});
});
done = true;
});
});
while (!done) {
// Keep waiting...
}
};
ありがとうございました!私はノードをあきらめてJavaで書いていましたが、これは私のために働いていました。 –