2012-05-08 16 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」調用失敗 - 它工作正常,它只是第二次和第三次失敗。 – mikemaccana

相關問題