2012-05-08 7 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

관련 문제