2011-01-19 3 views
0

Quelqu'un peut-il dire une idée de créer une requête pour décrire les régions dans aws ec2.I confus dans & authparameters .En outre, s'il vous plaît donner un programme pour générer la signature.amazon ec2 requête faisant

+0

vous pouvez marquer votre question en sélectionnant uptick sur votre propre réponse. – Nishant

Répondre

1

Après une recherche de longue date que j'ai trouvé un programme qui va créer une requête et renvoie la réponse de AWS..It fonctionne très bien ..

Programme

<?php 

$key='Your aws key'; 
$pwd='Your AWS secret key'; 



// See docs ://docs.amazonwebservices.com/AWSEC2/latest/APIReference/------->Actions---->Describe Regions 

//for making a request to the aws 


$params = array( 
'Action' => 'DescribeAvailabilityZones', 
'AWSAccessKeyId' => $key, 
'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'), 
'Version' => '2008-05-05', 
'ZoneName.0' => 'us-east-1a', 
'ZoneName.1' => 'us-east-1b',  
'ZoneName.2' => 'us-east-1c', 
'SignatureVersion' => 2, 
'SignatureMethod' => 'HmacSHA256' 
); 




uksort($params, 'strnatcmp'); 
$qstr = ''; 
foreach ($params as $key => $val) { 
$qstr .= "&{$key}=".rawurlencode($val); 
} 
$qstr = substr($qstr, 1); 

// Signature Version 2 

$str = "GET\n" 
. "ec2.amazonaws.com\n" 
. "/\n"  
. $qstr; 


$params['Signature'] = base64_encode(hash_hmac('sha256', $str, $pwd, true)); // Generating a base64-encoded RFC 

//2104-compliant HMAC-SHA256 



$req = 'https://ec2.amazonaws.com/?' . http_build_query( $params); // encoded query string 

echo '<a href="'.$req.'">XML</a><p>';//For Navigating or creating a request. 



?> 
1

Vous devriez probablement utiliser le AWS SDK for PHP à gérer ce genre de choses pour vous; ça rendra votre code plus agréable, ils sont beaucoup moins susceptibles de contenir des bugs, et cela vous fera gagner du temps à long terme.

0

La réponse ici par 'prathyush' est une information très pratique. J'ai cherché pendant un moment maintenant des informations sur la façon d'exécuter une instance sur ec2 via une requête http avec php. Ce peu de code php peut être adapté pour faire juste cela et plus encore!

Par exemple remplacer la section $ params avec:

$ params = array (
'Action' => 'RunInstances', 'ImageID' => 'ami-f0f61599', « Placement.AvailabilityZone '=> us-east-1a', 'InstanceType' => 'm1.large', 'MinCount' => '1', 'MaxCount' => '1', 'KeyName' => ' 'key ', ' AWSAccessKeyId '=> $ clé, ' Horodatage '=> gmdate (' Ymd \ TH: i: s \ Z '), ' Version '=>' 2008-05-05 ',
'SignatureVersion' => 2,
'SignatureMethod' => 'HmacSHA256' ); N'oubliez pas de remplacer la zone de disponibilité ci-dessus par celle dont vous avez besoin. Pour moi, je l'ai changé pour eu-west-1a.

Également changer ec2.amazonaws.com à eu-west-1.ec2.amazonaws.com dans les deux endroits, il apparaît dans le bit du bas du code.