2012-07-03 9 views

Respuesta

8

Aquí es un ejemplo básico de una máquina a partir de un IAM definido:

$image_id = 'ami-3d4ff254'; //Ubuntu 12.04 
$min  = 1;    //the minimum number of instances to start 
$max  = 1;    //the maximum number of instances to start 
$options = array(
    'SecurityGroupId' => 'default', //replace with your security group id 
    'InstanceType' => 't1.micro', 
    'KeyName'   => 'keypair', //the name of your keypair for auth 
    'InstanceInitiatedShutdownBehavior' => 'terminate' //terminate on shutdown 
); 

require_once('AWSSDKforPHP/sdk.class.php'); 

$ec2 = new AmazonEC2(); 

$response = $ec2->run_instances($image_id, $min, $max, $options); 

if(!$response->isOK()){ 
    echo "Start failed\n"; 
} 

Esto es suponiendo que tenga su configuración credenciales AWS correctamente ... Con suerte esto se le apunta en la dirección correcta ...

+0

Gracias por este útil código. ¿Es posible iniciar una instancia existente? Parece que no puedo encontrar esta información. –

+0

@SSHEste try startInstances –

+0

En realidad es "start_instances" http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonEC2/start_instances –

3

Aquí es un script más detallada si está interesado:

// Sleep time to allow EC2 instance to start up 
$sleeptime = 15; 
$username = "ec2-user"; 

// For AWS PHP SDK 
putenv('HOME=/home/ec2-user/'); 
require_once 'AWSSDKforPHP/sdk.class.php'; 

// Get data from HTTP POST 
$ami = $_POST['amis']; 
$instancetype = $_POST['instancetype']; 
$keyname = $_POST['key']; 
$securitygroup = $_POST['securitygroups']; 

// Instantiate the AmazonEC2 class 
$ec2 = new AmazonEC2(); 

// Boot an instance of the image 
$response = $ec2->run_instances($ami, 1, 1, array(
    'KeyName' => $keyname, 
    'InstanceType' => $instancetype, 
    'SecurityGroupId' => $securitygroup, 
)); 
if (!($response->isOK())) { 
    echo "<p class='error'>ERROR! Could not create new instance!</p>"; 
    return; 
} 
$instance = $response->body->instancesSet->item->instanceId; 
$message = "<p>Your instance has been successfully created.</p>"; 
$message .= ("<p>Instance ID is: <b>$instance</b></p>"); 

// Give instance some time to start up 
sleep ($sleeptime); 

// Get the hostname from a call to the DescribeImages operation. 
$response = $ec2->describe_instances(array(
    'Filter' => array(
     array('Name' => 'instance-id', 'Value' => "$instance"), 
    ) 
)); 
if (!($response->isOK())) { 
    echo "<p class='error'>ERROR! Could not retrieve hostname for instance!</p>"; 
    return; 
} 
$hostname = $response->body->reservationSet->item->instancesSet->item->dnsName; 

// Output the message 
$message .= "<p>Your instance hostname is: <b>$hostname</b></p>"; 
$message .= "<p>You can connect to your instance using this command:<br>" . 
    "<b>ssh -i $keyname.pem [email protected]" . $hostname . "</b></p>"; 

echo $message; 

más o menos lo mismo que @ de dleiftah, excepto que emite el nombre de host del nuevo en postura al finalizar.

+3

Pero, ¿cómo puedo detener esta instancia con sdk? – Mohyt

+1

Para detener la instancia, http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.Ec2.Ec2Client.html#_stopInstances haga clic para expandir el ejemplo de formato básico, por lo que el código es $ client-> stopInstances() – fedmich

Cuestiones relacionadas