Amazon EC2 API와 상호 작용할 수있는 앱을 작성 중이며 이전에는 한번도 해 본 적이 없으므로 DescribeRegions와 같은 간단한 것으로 시작하기로했습니다.오류 : DescribeRegions API 호출의 InvalidAction (Amazon AWS/EC2 API)
나는 이것을 C 라이브러리에서 사용하기 때문에 libcurl과 libcrypto를 함께 해킹해야한다. 전체 공개, AWS/EC2 API와 프로그래밍 방식으로 상호 작용하는 것은 이번이 처음이므로 이것은 초보자 실수 일 수 있습니다.
나는 stackoverflow를 통해 읽었습니다. 이 사람이 bash에서 요청을 보내려고 시도하고 문자열을 인용하지 않은 question과 동일하지 않습니다. 내가 찾을 수있는 모든 문서를 읽은 후 curl_easy_perform()
을 통해 요청을 보내고있다 (이 예를 들어, 내 비밀 키를 내 AWS 액세스 키와 BBBBBBB에 대한 AAAAAAAAA을 대체 할 수 있습니다.
내가 매개 변수를 구성을 판독 here 바와 같이 서명 요청의 일부 :
Action=DescribeRegions&AWSAccessKeyId=AAAAAAAA&SignatureMethod=HmacSHA256&"SignatureVersion=2&Timestamp=2013-09-22T02:12:27Z&Version=2013-08-15
을 진행하고 그 벗어나
GET\n
ec2.amazonaws.com\n
/\n
Action%3DDescribeRegions%26AWSAccessKeyId%AAAAAAAAAAAA%26SignatureMethod%3DHmacSHA256%26SignatureVersion%3D2%26Timestamp%3D2013-09-22T02%3A12%3A27Z&Version=2013-08-15
의 서명 요청을 생성 그때에 서명을 구성하기 위해 진행
와 읽기 요청을 마련 (의이 CCCCCCCC를 부르 자) :
https://ec2.amazonaws.com/?Action%3DDescribeRegions%26AWSAccessKeyId%3DAAAAAAAAAAAAA%26SignatureMethod%3DHmacSHA256%26SignatureVersion%3D2%26Timestamp%3D2013-09-22T02%3A12%3A27Z&Version=2013-08-15&Signature=CCCCCCCCCCC
내가 함께이를 보낼 때, 나는 다음과 같은 오류가 발생합니다.
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>SignatureDoesNotMatch</Code><Message>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.</Message></Error></Errors><RequestID>585f8932-d27b-42b3-b20e-453d8c7ee1ef</RequestID></Response>
사용하는 서명 메커니즘은 간단한 hmac_sha256입니다. 또한 wikipedia article에서 참조 된 hmac_sha256 라이브러리를 시도했으며 download here을 사용할 수있었습니다.
서명 알고리즘이 올바른지 확인 했으므로 서명 할 문자열이 잘못되었다고 가정해야합니다.
문서 (AWS 문서)는 불행히도이 점에서 적절하지 않습니다. 예를 들어
, 그것은 reads :
정확히 여기에 정렬 나 한테 물어 무엇Add the query string components (the name-value pairs, not including the initial question mark (?) as UTF-8 characters which are URL encoded per RFC 3986 (hexadecimal characters must be uppercased) and sorted using lexicographic byte ordering. Lexicographic byte ordering is case sensitive.
?
모든 도움을 주시면 감사하겠습니다. 여기에 완전한 소스 코드를 게시하면 도움이 될까요? 키의 세트