使用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的重点是能够在亚马逊网站上使用前端完成所有操作,只需十分之一时间并使用您自己的代码。
考虑到这一点,我需要做以下事情:
在前端,我可以将音量大小更改为40GB。
如何在使用PHP创建新实例时要求40GB卷大小?甚至可以在创建实例后运行,只要它是自动的 - 我应该能够以编程方式执行此操作。
如何使用AWS SDK for PHP 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调用中传递了所有这些参数,它将以您所需的大小启动。