ま、こちらのドキュメントに沿って、そのままPHP化してみただけなんですけど。意外と面倒ね。
調べてないけど、誰か簡易なライブラリとか作ってないのかしらね。
'AWSECommerceService',
'AWSAccessKeyId' => AWS_ACCESS_KEY_ID,
'Operation' => 'ItemSearch',
'Version' => '2010-03-31',
'SearchIndex' => 'All',
'Keywords' => $aws_keyword,
'Timestamp' => date('Y-m-d'). 'T'. date('H:i:s'). 'Z',
'ResponseGroup'=> 'ItemAttributes,Images',
'ItemPage'=> $aws_item_page,
);
//クエリをURLエンコードして、変数名でソート
$request_param = array_map ('rawurlencode', $request_param);
ksort($request_param);
//1行のクエリに加工
$request_queries = array();
foreach ($request_param as $k => $v) $request_queries[] = "{$k}={$v}";
$request_query = implode('&', $request_queries);
//Signatureの作成
$aws_signature_base = "GET\n";
$aws_signature_base .= AWS_REQUEST_DOMAIN. "\n";
$aws_signature_base .= AWS_REQUEST_PATH. "\n";
$aws_signature_base .= $request_query;
$aws_signature = urlencode(base64_encode(hash_hmac('sha256', $aws_signature_base, AWS_SECRET_ACCESS_KEY, TRUE)));
//リクエストURLの作成
$aws_signed_url = 'http://'. AWS_REQUEST_DOMAIN. AWS_REQUEST_PATH. "?{$request_query}&Signature={$aws_signature}";