2009-04-08 6 views

Répondre

0

Here's une bibliothèque PHP qui prend en charge V2. Je n'ai pas essayé cependant.

0

est ici un code que j'ai écrit et ai utilisé:

define("AWSKEY", "Your AWS Key"); 
define("AWSSECRET", "Your AWS Secret"); 
public function get($parameters, $host) { 

    // Build out the variables 
    $domain = "https://$host/"; 
    $parameters['AWSAccessKeyId'] = AWSKEY; 
    $parameters['Timestamp'] = date('c'); 
    $parameters['Version'] = '2007-11-07'; 
    $parameters['SignatureMethod'] = 'HmacSHA256'; 
    $parameters['SignatureVersion'] = 2; 

    // Write the signature 
    $signature = "GET\n"; 
    $signature .= "$host\n"; 
    $signature .= "/\n"; 

    $sigparams = $parameters; 

    ksort($sigparams); 

    $first = true; 
    foreach($sigparams as $key=>$param) { 
     $signature .= (!$first ? '&' : '') . rawurlencode($key) . '=' . rawurlencode($param); 
     $first = false; 
    } 
    $signature = hash_hmac('sha256', $signature, $AWSKEY, true); 
    $signature = base64_encode($signature); 
    $parameters['Signature'] = $signature; 

    $url = $domain . '?'; 
    $first = true; 
    foreach($parameters as $key=>$param) { 
     $url .= (!$first ? '&' : '') . rawurlencode($key) . '=' . rawurlencode($param); 
     $first = false; 
    } 

    $ch = curl_init(trim($url)); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    $output = curl_exec($ch); 

    return $output; 

} 

Voici comment vous l'utilisez:

$params = array(
    'Action' => 'ListDomains' 
); 
$db->get($params, 'sdb.amazonaws.com'); 

Cette exécuterait une requête ListDomains sur SimpleDB. La fonction elle-même retournera la sortie d'Amazon. Pour les commandes plus compliquées, (c'est-à-dire: PUT, POST, etc.) il n'y a pas de modifications majeures qui doivent être faites.

0

Utilisez AWSSECRET constante pour hacher la signature, pas AWSKEY $ (une variable non référencée).

Questions connexes