2012-07-03 7 views

答えて

8

が定義されたAMIからマシンを起動する基本的な例である:

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

これは、あなたが適切にあなたのAWSの資格情報を設定していると仮定している...うまくいけば、これはあなたが正しい方向に向けます...興味のある方はここで

+0

この便利なコードをありがとうございました。既存のインスタンスを開始することは可能ですか?私はこの情報を見つけることができないようです。 –

+0

@SSHThis try startInstances –

+0

実際には "start_instances"です。http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonEC2/start_instances –

3

は、より詳細なスクリプトです:それは新しいのホスト名を出力することを除いてdleiftahさん、@など

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

ほとんど同じ完了時の姿勢。

+3

しかし、どのようにsdkでこのインスタンスを停止できますか? – Mohyt

+1

インスタンスを停止するには、http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.Ec2.Ec2Client.html#_stopInstancesをクリックして展開してください。Basic Formatting Example client-> stopInstances() – fedmich

関連する問題