How to start and stop ec2 instances using php aws sdk

pretty new with aws sdk that wants to start. I installed sdk and that’s it, but how can I run ec2 instances using php sdk? Some code examples will really be helpful.

+6
source share
2 answers

Here is a basic example of starting a machine from a specific 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"; } 

This assumes that you have configured your AWS credentials correctly ... I hope this makes you point in the right direction ...

+8
source

Here is a more detailed script if you are interested:

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

Pretty much the same as @dleiftah, except that it returns the host name of the new instance after completion.

+3
source

Source: https://habr.com/ru/post/919566/


All Articles