[英]AWS signature generation
如何生成 AWS 签名以从 AWS url 获取数据?
我有以下凭据。
$AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXX';
$AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXX';
以及以下网址
url="https://ow9hw5rtpk.execute-api.us-west-2.amazonaws.com/dev/getOrderStatus?order_id=XXXXX&zip=XXXX";
我必须从上面的 url 中获取数据。 我从几篇文章中使用 cUrl 在 php 中尝试了一些代码,但没有得到预期的 json 格式输出。
当我运行从邮递员测试界面获得的以下代码时,我得到了输出,但签名是静态的。 请添加或编辑以下代码以生成动态 aws 签名。
<?php
$curl = curl_init();
$datestamp = time();
$date = gmdate('D, d M Y H:i:s e',$datestamp);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://ow9hw5rtpk.execute-api.us-west-2.amazonaws.com /dev/getOrderStatus?email=XXX@XXXX.NET&zip=XXXX",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_SSL_VERIFYHOST=>0,
CURLOPT_SSL_VERIFYPEER=>0,
CURLOPT_HTTPHEADER => array(
"Authorization: AWS4-HMAC-SHA256 Credential=AKIAIV4KH3BTCPT3E6FA/20180112/us-west-2/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=cf871e46b14f48ef7e08e003250f6fcf7d0a90c5ca29b51ff9f6eae0eb104cdb",
"Cache-Control: no-cache",
"Content-Type: application/x-www-form-urlencoded",
"Postman-Token: 3bea6936-0a81-e723-ee36-9e08a219a975",
"X-Amz-Date: 20180112T110821Z"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
?>
看起来Authorization
缺少x-amz-content-sha256
,因此在添加以下内容后,以下内容也会发生变化(sha256 的值将通过 functions-SDK 生成)从
SignedHeaders=content-type;host;x-amz-date
到
SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date
一般来说,我鼓励使用AWS 提供的 SDK准备 Auth 标头
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.