使用PHP AWS SDK2脚本重新配置服务器

时间:2013-09-10 12:36:00

标签: php amazon-web-services command-line-interface

由于我厌倦了重复点击/等待/点击亚马逊网络服务GUI界面,我需要一个EC2脚本:

  1. 停止在bash命令行指定的实例
  2. 分离指定的卷
  3. 从指定的快照创建新卷
  4. 再次启动实例
  5. 它当然可以通过GUI完成,但它的痛苦。通过这种方式,我可以让脚本运行5分钟,同时我可以喝咖啡而不必照顾它。

1 个答案:

答案 0 :(得分:0)

语法:

php reprovision.php i-xxxx vol-xxxx snap-xxxx

reprovision.php:

<?php

require 'aws.php';

$config = aws_setup();
$ec2Client = \Aws\Ec2\Ec2Client::factory($config);

$stop = $argv[1];
$detach = $argv[2];
$snapshot = $argv[3];


$ec2Client->stopInstances(array('InstanceIds' => array($stop)));

sleep(60);

$ec2Client->detachVolume(array('VolumeId' => $detach));

sleep(10);

$vol = $ec2Client->createVolume(array('SnapshotId' => $snapshot, 'AvailabilityZone' => 'us-east-1a'));

sleep(10);

$ec2Client->attachVolume(array('VolumeId' => $vol->VolumeId, 'InstanceId' => $stop, 'Device' => '/dev/sda1'));

sleep(10);

$ec2Client->startInstances(array('InstanceIds' => array($stop)));

'aws_setup()'获取配置数组以在下一行启动ec2客户端。

然后将命令行参数分配给变量。

下一版本的脚本最好使用EC2等待函数而不是PHP的'sleep'。

AWS PHP SDK2 EC2 Client API