2

インスタンスが開始されるのを待っているため、同じ EC2 API 呼び出しを繰り返し実行しています。

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.

繰り返しの呼び出しを機能させるにはどうすればよいですか?

4

1 に答える 1

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 を呼び出しても同じエラーが発生しますか?

于 2012-05-08T16:29:44.610 に答える