调用Amazon Route53 API PHP时发生MissingAuthenticationToken错误


MissingAuthenticationToken error while calling Amazon Route53 API PHP

我试图调用Amazon route53的'ChangeResourceRecordSetsRequest' API,但每次都会得到"缺少身份验证错误"。我不确定我在这里做错了什么。有人能看一下吗?以下是我的代码:

    $AWSAccessKeyId = "##########";
    $SecretAccessKey = "#################";
    $Timestamp = gmdate('D, d M Y H:i:s') . ' GMT';
    $Signature = base64_encode(hash_hmac("sha256",$Timestamp,$SecretAccessKey));
    $AuthenticationToken = "AWS3-HTTPS AWSAccessKeyId=".$AWSAccessKeyId.", Algorithm=HmacSHA256,Signature=".$Signature;
       $headers = array(
          'X-Amzn-Authorization: $AuthenticationToken',
          'x-amz-date: $Timestamp',
          'Content-Type: text/xml;charset=utf-8',
        );
    $endpoint = 'https://route53.amazonaws.com/2012-12-12/hostedzone/######/rrset';
    $session  = curl_init($endpoint);                       // create a curl session
    curl_setopt($session, CURLOPT_POST, true);              // POST request type
    curl_setopt($session, CURLOPT_POSTFIELDS, $xmlRequest); // set the body of the POST
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);    // return values as a string - not to std out
    curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
    $responseXML = curl_exec($session);

看起来$AuthenticationToken中有一个额外的空间。逗号和"算法"之间不应该有一个逗号。除此之外,我看不出还有什么看起来不对的地方。

然而,我建议使用AWS SDK为PHP提供的Route53客户端,因为他们已经实现并测试了身份验证方案,如果未来服务的身份验证方案发生变化,他们将保持最新状态。

相关文章:
  • 没有找到相关文章