繁体   English   中英

如何使用php aws sdk启动和停止ec2实例

[英]how to start and stop ec2 instances using php aws sdk

非常新的aws sdk,希望开始。 我已经安装了sdk和一切但是如何使用php sdk启动ec2实例? 一些代码示例确实很有用。

以下是从定义的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凭据...希望这会让您指向正确的方向......

如果您有兴趣,这是一个更详细的脚本:

// 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 $username@" . $hostname .  "</b></p>";

echo $message;

与@ dleiftah几乎相同,只是它在完成时输出新实例的主机名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM