我正在重复运行相同的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.
我可以做些什么来重复调用?
答案 0 :(得分: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时遇到了同样的错误吗?