AWS SDKを使用してopsworks.describeInstancesを呼び出そうとする非常に簡単なラムダ関数があります。コードはローカルで正常に実行されますが、ラムダの内部ではエラーやフィードバックなしでタイムアウトします。AWS LambdaでAWS SDK Opsworksコマンドを実行するには?
var AWS = require('aws-sdk');
var opsworks = new AWS.OpsWorks({
apiVersion: 'latest',
region: "us-east-1"
});
exports.handler = function(event, context, callback) {
var params = {
LayerId: 'idoflayer'
};
opsworks.describeInstances(params, function(err, data) {
if (err) {
return callback(err);
}
callback(null, data);
});
};
ラムダ方針は次のとおりです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"opsworks:CreateDeployment",
"opsworks:DescribeDeployments",
"opsworks:DescribeLayers",
"opsworks:DescribeInstances"
],
"Resource": [
"*"
]
}
]
}
私はメモリと、タイムアウトの両方を増加させてきました。ログは関数が呼び出されているだけで、出力はないことを示しています。ラムダ関数の監視は呼び出しエラーを示していますが、これは単にタイムアウトが原因であると考えています。私はこれをus-west-2で実行していますが、私も同じことを私たちの東1で実行しようとしました。
アイデア?ラムダを使ってOpsWorksを監視し管理したいと思っています。
このようなタイムアウトは、NATゲートウェイを持たないVPC内にLambda機能を置くことによって最もよく発生します。 VPCアクセスのLambda機能はパブリックIPアドレスを取得しないため、Lambda機能がVPC外のもの(AWS Opsworks APIなど)にアクセスするようにするには、NATゲートウェイが必要です。 –
Mark Bさん、ありがとうございましたVPCの中で走っていましたが問題でした。 – JGS