2016-04-25 20 views
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()); 
}); 

はどのようにこれを説明することができますか?

+0

apiのバージョンを指定しようとしましたか? 'new AWS.SQS({apiVersion: '2012-11-05'});' – John

+0

と同様ですが、最新バージョンのみがインスタンス(2.3.5)にインストールされています。私は1.0.0を使用しようとしましたが、無駄です。 – jallmer

+0

{apiVersion: '2012-11-05'}で試しましたが、もう一度運がありません。 – jallmer

答えて

0

Ubuntuサーバーとローカルマシンにインストールしたノードのバージョンが違うようです。

node --versionあなたはローカルであなたのサーバーとは何を実行していますか?

関連する問題