适用于PHP 2的AWS开发工具包 - 在创建实例时更改根卷大小

时间:2013-09-17 10:10:35

标签: php amazon-web-services amazon-ec2

使用runInstances()方法使用PHP创建新实例相对容易。

$instance = $ec2->runInstances(array(
    'ImageId'        => AMI_ID,      // AMI ID
    'InstanceType'   => AMI_TYPE,    // m1.medium etc.
    'MinCount'       => 1,           // Minimum to create
    'MaxCount'       => 1,           // Maximum to create
    'SecurityGroups' => SEC_NAME,    // Security Group Name
    'KeyName'        => KEY_NAME     // Key Pair to use
))->toArray();                       // Get back our data in an array

然而,API的重点是能够在亚马逊网站上使用前端完成所有操作,只需十分之一时间并使用您自己的代码。

考虑到这一点,我需要做以下事情:

AWS Request Instances Wizard - Root Volume

在前端,我可以将音量大小更改为40GB。

如何在使用PHP创建新实例时要求40GB卷大小?甚至可以在创建实例后运行,只要它是自动的 - 我应该能够以编程方式执行此操作。

如何使用AWS SDK for PHP 2来实现我的要求?

2 个答案:

答案 0 :(得分:2)

看起来你走在正确的轨道上。在runInstances() BlockDeviceMappings中,有一个参数Ebs,其中包含另一个参数VolumeSize,其中包含您要查找的参数$instance = $ec2->runInstances(array( 'ImageId' => AMI_ID, // AMI ID 'InstanceType' => AMI_TYPE, // m1.medium etc. 'MinCount' => 1, // Minimum to create 'MaxCount' => 1, // Maximum to create 'SecurityGroups' => SEC_NAME, // Security Group Name 'KeyName' => KEY_NAME, // Key Pair to use 'BlockDeviceMappings' => array( // How block devices are mapped to instance array( 'Ebs' => array( // EBS Volume Info array( 'VolumeSize' => 40 // Volume Size ) ) ) ) ))->toArray(); // Get back our data in an array 。这是未经测试的代码。

{{1}}

答案 1 :(得分:1)

这与使用命令行工具的方式没有什么不同。首先,您需要确定要启动的AMI的快照ID。您可以通过查询AMI的属性来完成此操作。返回的值之一是快照ID。然后,通过指定要使用的快照ID以及大小来使用该ID来运行实例。

此处的文档:http://docs.aws.amazon.com/AWSSDKforPHP/latest/index.html#m=AmazonEC2/run_instances

解释这需要与BlockDeviceMapping数组一起传递。然后在该数组中,您需要使用'Ebs'并指定SnapshotId和VolumeSize。

如果您在runinstance调用中传递了所有这些参数,它将以您所需的大小启动。