2012-07-03 29 views

Trả lời

8

Dưới đây là một ví dụ cơ bản bắt đầu một máy từ một AMI định nghĩa:

$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"; 
} 

này là giả sử bạn có các thông tin thiết lập AWS của bạn đúng cách ... Hy vọng điều này giúp bạn chỉ đi đúng hướng ...

+0

Cảm ơn bạn vì mã hữu ích này. Có thể bắt đầu một cá thể hiện tại không? Tôi dường như không thể tìm thấy thông tin này. –

+0

@SSHThãy thử startInstances –

+0

Thực sự là "start_instances" http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonEC2/start_instances –

3

Dưới đây là một kịch bản chi tiết hơn nếu bạn quan tâm:

// 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; 

Khá nhiều giống như @ dleiftah của, ngoại trừ việc nó ra tên máy của dâu mới về lập trường khi hoàn thành.

+3

Nhưng làm thế nào tôi có thể ngăn chặn trường hợp này với sdk? – Mohyt

+1

Để dừng phiên bản, hãy http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.Ec2.Ec2Client.html#_stopInstances nhấp để mở rộng ví dụ về Định dạng Cơ bản, vì vậy mã là $ client-> stopInstances() – fedmich

Các vấn đề liên quan