2012-05-08 3 views
2

同じEC2 API呼び出しを繰り返し実行していますが、インスタンスの起動を待機しています。ノードAWS-lib:AWS-libを繰り返し呼び出すと不正なシグニチャが発生する

var check_started = function() { 
    console.log('Calling'); 
    ec2.call("DescribeInstanceStatus", {InstanceId:['pretend_instance_id']}, function(err, status_result){ 
    if (err) { 
     console.log('error') 
     console.log(err) 
     console.log(status_result) 
    } else { 
     console.log('success') 
    } 
    }); 
} 

var instance_started_checker = setInterval(check_started, 5 * 1000) 

最初の呼び出し常には成功しますが、後続の呼び出しが失敗すると:

The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. 

私は繰り返し呼び出しを動作させるために何ができますか?

答えて

2

エージェントを作成するオプションでAPIバージョンを指定すると役立つと思います。ように:

var ec2 = aws.createEC2Client(yourAccessKeyId, yourSecretAccessKey, { 
     version: "2012-04-01" 
    } 
); 

私はあなたのコードを試しましたが、同じエラーを再現できませんでした。 APIバージョンを指定しないと、「InvalidAction」が表示されます。これは私が使用したコードです:

var aws = require("aws-lib"); 
var ec2 = aws.createEC2Client("xXx", "yYy", { 
    secure: "https", 
    host: "ec2.eu-west-1.amazonaws.com", 
    version: "2012-04-01" 
} 
); 
var check_started = function() { 
console.log('Calling'); 
ec2.call("DescribeInstanceStatus", {InstanceId:["i-abcdefg"]}, function(err, status_result) { 
    if (err) { 
     console.log('error') 
     console.log(err) 
     console.log(status_result) 
    } else { 
     console.log('success') 
     console.log(status_result.instanceStatusSet) 
     clearInterval(instance_started_checker); 
    } 
}); 
} 
var instance_started_checker = setInterval(check_started, 5 * 1000); 

あなたはDescribeInstancesを呼び出すと同じエラーが発生しますか?

+0

ありがとうございますが、私はすでにこれをやっています。また、APIのバージョン管理が問題だった場合は、最初の 'DescribeInstanceStatus'呼び出しが失敗することが予想されます。正常に動作し、2回目と3回目に失敗します。 – mikemaccana

関連する問題