1

我正在尝试调用'ChangeResourceRecordSetsRequest'Amazon route53 的 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);
4

1 回答 1

1

看起来您在$AuthenticationToken. 逗号和“算法”之间不应该有一个。除此之外,我看不到其他任何看起来不对劲的地方。

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

于 2013-12-02T08:09:39.963 回答