khá mới với aws sdk, đang tìm cách bắt đầu. Tôi đã cài đặt các sdk và tất cả mọi thứ nhưng làm thế nào để tôi bắt đầu các trường hợp ec2 bằng cách sử dụng sdk php? Một số mẫu mã thực sự hữu ích.cách bắt đầu và dừng các phiên bản ec2 bằng cách sử dụng php aws sdk
6
A
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 ...
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.
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. –
@SSHThãy thử startInstances –
Thực sự là "start_instances" http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonEC2/start_instances –