4
node.jsを使用してEC2インスタンスからAWS上にSQSキューを作成しようとしています。 同じインスタンスから、node.jsを使用してS3にアクセスし、バケットなどを一覧表示できますインスタンスには、S3およびSQSへのフルアクセスを許可するIAMロールがあります。AWS SQSキューの作成
ただし、以下のコードを実行すると失敗し、理由がわかりません。さらに興味深いのは、私のPCからコードが実際に動作するということです。
var AWS = require('aws-sdk');
AWS.config.update({region:'eu-central-1'});
//console.log("awsv "+AWS.VERSION); --> 2.3.5
var sqs = new AWS.SQS();
var params = {
QueueName: "MyQueue1"
};
sqs.createQueue(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else {
if(data)
console.log(data); // successful response
else
console.log("Other unknown error");
}
});
エラーメッセージ:
/home/ubuntu/aws-nodejs-sample/node_modules/aws-sdk/lib/http/node.js:121
callback();
^
TypeError: undefined is not a function
at Writable.writer._write (/home/ubuntu/aws-nodejs-sample/node_modules/aws-sdk/lib/http/node.js:121:7)
at Writable.write (_stream_writable.js:176:8)
at write (_stream_readable.js:481:24)
at Array.forEach (native)
at flow (_stream_readable.js:493:19)
at _stream_readable.js:458:7
at process._tickCallback (node.js:427:13)
at process._makeCallback (node.js:345:15)
これは、CLI関数を呼び出すスクリプトを使用して、簡単なテストは、実際に動作すること、判明:
var AWS = require('aws-sdk');
AWS.config.region = 'eu-central-1';
var qUrl="https://sqs.eu-central-1.amazonaws.com/......./awsquerytest";
var queue = new AWS.SQS({params: {QueueUrl: qUrl}}); // using url to queue
var receipthandle;
var fs = require('fs');
var child = require('child_process').exec('aws sqs receive-message --queue-url https://sqs.eu-central-1.amazonaws.com/....../awsquerytest');
child.stdout.on('data', function(data) {
var x= data.toString();
console.log(data.toString());
fs.writeFile("/home/ubuntu/aws-nodejs-sample/output",x,function(err){
if(err){
return console.log(err);
}
console.log("oldu");
});
});
child.stderr.on("data", function (data) {
console.log(data.toString());
});
はどのようにこれを説明することができますか?
apiのバージョンを指定しようとしましたか? 'new AWS.SQS({apiVersion: '2012-11-05'});' – John
と同様ですが、最新バージョンのみがインスタンス(2.3.5)にインストールされています。私は1.0.0を使用しようとしましたが、無駄です。 – jallmer
{apiVersion: '2012-11-05'}で試しましたが、もう一度運がありません。 – jallmer