由于我厌倦了重复点击/等待/点击亚马逊网络服务GUI界面,我需要一个EC2脚本:
它当然可以通过GUI完成,但它的痛苦。通过这种方式,我可以让脚本运行5分钟,同时我可以喝咖啡而不必照顾它。
答案 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'。