ま、こちらのドキュメントに沿って、そのまま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}";