0

由于我厌倦了反复单击/等待/单击 Amazon Web 服务 GUI 界面,因此我需要一个 EC2 脚本来:

  1. 停止在 bash 命令行中指定的实例
  2. 分离指定卷
  3. 从指定的快照创建一个新的卷
  4. 再次启动实例

它当然可以用 GUI 来完成,但它是如此的痛苦。这样我就可以在喝咖啡的时候让脚本运行 5 分钟,而不必去理会它。

4

1 回答 1

0

句法:

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

重新配置.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 的“睡眠”。

AWS PHP SDK2 EC2 客户端 API

于 2013-09-10T12:35:59.937 回答