簡體   English   中英

AWS 簽名生成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM