节点AWS-lib:对AWS-lib的重复调用导致签名不良
我正在重复运行相同的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.
我可以做些什么来使重复的呼叫工作?
如果您在创build代理的选项中指定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的错误?